商城-学习整理-集群-K8S(二十三)

这篇具有很好参考价值的文章主要介绍了商城-学习整理-集群-K8S(二十三)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、k8s 集群部署

1、k8s 快速入门

1)、简介

Kubernetes 简称 k8s。是用于自动部署,扩展和管理容器化应用程序的开源系统。
中文官网:https://kubernetes.io/zh/
中文社区:https://www.kubernetes.org.cn/
官方文档:https://kubernetes.io/zh/docs/home/
社区文档:http://docs.kubernetes.org.cn/

部署方式的进化

https://kubernetes.io/zh/docs/concepts/overview/

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

2)、架构

1、整体主从方式

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

2、Master 节点架构

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
 kube-apiserver
 对外暴露 K8S 的 api 接口,是外界进行资源操作的唯一入口
 提供认证、授权、访问控制、API 注册和发现等机制
 etcd
 etcd 是兼具一致性和高可用性的键值数据库,可以作为保存 Kubernetes 所有集群数据的后台数据库。
 Kubernetes 集群的 etcd 数据库通常需要有个备份计划
 kube-scheduler
 主节点上的组件,该组件监视那些新创建的未指定运行节点的 Pod,并选择节点让 Pod 在上面运行。
 所有对 k8s 的集群操作,都必须经过主节点进行调度
 kube-controller-manager
 在主节点上运行控制器的组件
 这些控制器包括:
 节点控制器(Node Controller): 负责在节点出现故障时进行通知和响应。
 副本控制器(Replication Controller): 负责为系统中的每个副本控制器对象维护正确数量的 Pod。
 端点控制器(Endpoints Controller): 填充端点(Endpoints)对象(即加入 Service与 Pod)。
 服务帐户和令牌控制器(Service Account & Token Controllers): 为新的命名空间创建默认帐户和 API 访问令牌。

3、Node 节点架构

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
 kubelet
 一个在集群中每个节点上运行的代理。它保证容器都运行在 Pod 中。
 负责维护容器的生命周期,同时也负责 Volume(CSI)和网络(CNI)的管理;
 kube-proxy
 负责为 Service 提供 cluster 内部的服务发现和负载均衡;
 容器运行环境(Container Runtime)
 容器运行环境是负责运行容器的软件。
 Kubernetes 支持多个容器运行环境: Docker、 containerd、cri-o、 rktlet 以及任何实现 Kubernetes CRI (容器运行环境接口)。
 fluentd
 是一个守护进程,它有助于提供集群层面日志 集群层面的日志。

3)、概念

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
 Container:容器,可以是 docker 启动的一个容器
 Pod:
 k8s 使用 Pod 来组织一组容器
 一个 Pod 中的所有容器共享同一网络。
 Pod 是 k8s 中的最小部署单元
 Volume
 声明在 Pod 容器中可访问的文件目录
 可以被挂载在 Pod 中一个或多个容器指定路径下
 支持多种后端存储抽象(本地存储,分布式存储,云存储…)
 Controllers:更高层次对象,部署和管理 Pod;
 ReplicaSet:确保预期的 Pod 副本数量
 Deplotment:无状态应用部署
 StatefulSet:有状态应用部署
 DaemonSet:确保所有 Node 都运行一个指定 Pod
 Job:一次性任务
 Cronjob:定时任务
 Deployment:
 定义一组 Pod 的副本数目、版本等
 通过控制器(Controller)维持 Pod 数目(自动回复失败的 Pod)
 通过控制器以指定的策略控制版本(滚动升级,回滚等)
 Service
 定义一组 Pod 的访问策略
 Pod 的负载均衡,提供一个或者多个 Pod 的稳定访问地址
 支持多种方式(ClusterIP、NodePort、LoadBalance)
 Label:标签,用于对象资源的查询,筛选
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
 Namespace:命名空间,逻辑隔离
 一个集群内部的逻辑隔离机制(鉴权,资源)
 每个资源都属于一个 namespace
 同一个 namespace 所有资源名不能重复
 不同 namespace 可以资源名重复
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
API:
我们通过 kubernetes 的 API 来操作整个集群。
可以通过 kubectl、ui、curl 最终发送 http+json/yaml 方式的请求给 API Server,然后控制 k8s集群。k8s 里的所有的资源对象都可以采用 yaml 或 JSON 格式的文件定义或描述。
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

4)、快速体验

1、安装 minikube

https://github.com/kubernetes/minikube/releases
下载 minikube-windows-amd64.exe 改名为 minikube.exe
打开 VirtualBox,打开 cmd,
运行

minikube start --vm-driver=virtualbox --registry-mirror=https://registry.docker-cn.com

等待 20 分钟左右即可

2、体验 nginx 部署升级

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

5)、流程叙述

1、通过 Kubectl 提交一个创建 RC(Replication Controller)的请求,该请求通过 APIServer被写入 etcd 中
2、此时 Controller Manager 通过 API Server 的监听资源变化的接口监听到此 RC 事件
3、分析之后,发现当前集群中还没有它所对应的 Pod 实例,
4、于是根据 RC 里的 Pod 模板定义生成一个 Pod 对象,通过APIServer 写入 etcd
5、此事件被 Scheduler 发现,它立即执行一个复杂的调度流程,为这个新 Pod 选定一个落户的 Node,然后通过 API Server 讲这一结果写入到 etcd 中,
6、目标 Node 上运行的 Kubelet 进程通过 APIServer 监测到这个“新生的”Pod,并按照它的定义,启动该 Pod 并任劳任怨地负责它的下半生,直到 Pod 的生命结束。
7、随后,我们通过 Kubectl 提交一个新的映射到该 Pod 的 Service 的创建请求
8、ControllerManager 通过 Label 标签查询到关联的 Pod 实例,然后生成 Service 的Endpoints 信息,并通过 APIServer 写入到 etcd 中,
9、接下来,所有 Node 上运行的 Proxy 进程通过 APIServer 查询并监听 Service 对象与其对应的 Endpoints 信息,建立一个软件方式的负载均衡器来实现 Service 访问到后端Pod 的流量转发功能。

k8s 里的所有的资源对象都可以采用 yaml 或 JSON 格式的文件定义或描述

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

2、k8s 集群安装

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

1、kubeadm

kubeadm 是官方社区推出的一个用于快速部署 kubernetes 集群的工具。
这个工具能通过两条指令完成一个 kubernetes 集群的部署:
创建一个 Master 节点
$ kubeadm init
将一个 Node 节点加入到当前集群中
$ kubeadm join <Master 节点的 IP 和端口 >

2、前置要求

一台或多台机器,操作系统 CentOS7.x-86_x64
硬件配置:2GB 或更多 RAM,2 个 CPU 或更多 CPU,硬盘 30GB 或更多集群中所有机器之间网络互通可以访问外网,需要拉取镜像禁止 swap 分区

3、部署步骤

1.在所有节点上安装 Docker 和 kubeadm
2.部署 Kubernetes Master
3.部署容器网络插件
4.部署 Kubernetes Node,将节点加入 Kubernetes 集群中
5.部署 Dashboard Web 页面,可视化查看 Kubernetes 资源

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

4、环境准备

1、准备工作

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
先安装好virtualBox和vagrant,且安装虚拟机目录有足够的空间。
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
网卡保证只有一个,IPV4地址设置固定,保证同一个网段的机器相互连接。
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

 我们可以使用 vagrant 快速创建三个虚拟机。虚拟机启动前先设置 virtualbox 的主机网络。现全部统一为 192.168.56.1,以后所有虚拟机都是 56.x 的 ip 地址

 设置虚拟机存储目录,防止硬盘空间不足
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

2、启动三个虚拟机

 使用我们提供的 vagrant 文件,复制到非中文无空格目录下,运行 vagrant up 启动三个虚拟机。其实 vagrant 完全可以一键部署全部 k8s 集群。
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
cmd,进入Vagrantfile文件的目录
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
三个虚拟机创建完成
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

https://github.com/rootsongjc/kubernetes-vagrant-centos-cluster
http://github.com/davidkbainbridge/k8s-playground
 进入三个虚拟机,开启 root 的密码访问权限

Vagrant ssh XXX 进去系统之后
su root 密码为 vagrant
vi /etc/ssh/sshd_config
修改 PasswordAuthentication yes/no
重启服务 service sshd restart
所有虚拟机设置为 4 核 4G

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
vi /etc/ssh/sshd_config
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
service sshd restart
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

设置好 NAT 网络,eth0:网卡 eth1:主机网络

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
三个的网卡都是:10.0.2.15 ,设置的端口转发不能都一样,因此需要重新配置下网络。(网络地址转换是同样一个IP都是拿端口转的)
关机,全局设定NAT网络,这样每个机器的IP都不一样了

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

需要重新生成mac地址,要不然会记住之前的网卡地址,因此需要重新生成(每个节点都需要操作一遍)

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
网卡2的仅主机访问为了我们方便使用开发工具连接主机,主机或者宿主机要能连接上虚拟机的,所以要开放网络2,网卡1才是k8s集群里面要用的网络。

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
三个节点重新启动:
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

3、设置 linux 环境(三个节点都执行)

关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

关闭 selinux(安全策略):
sed -i ‘s/enforcing/disabled/’ /etc/selinux/config
setenforce 0
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

关闭 swap(一定要关闭内存交换,要不然k8s集群性能会出现很大问题,有些节点无法工作):
swapoff -a 临时
sed -ri ‘s/.swap./#&/’ /etc/fstab 永久
free -g 验证,swap 必须为 0;

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

添加主机名与 IP 对应关系
vi /etc/hosts
10.0.2.15 k8s-node1
10.0.2.24 k8s-node2
10.0.2.25 k8s-node3
hostnamectl set-hostname :指定新的 hostname
su 切换过来
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

将桥接的 IPv4 流量传递到 iptables 的链:
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

sysctl --system

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
进行三天虚拟机环境备份:
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

疑难问题:
遇见提示是只读的文件系统,运行如下命令
mount -o remount rw /

date 查看时间 (可选)
yum install -y ntpdate
ntpdate time.windows.com 同步最新时间

4、所有节点安装 Docker、kubeadm、kubelet、kubectl

Kubernetes 默认 CRI(容器运行时)为 Docker,因此先安装Docker。

k8s集群,一个master节点可以管理多个node节点,无论是哪个节点k8s要启动东西,需要容器环境,这个容器环境我们选择docker,因此每一个节点都应该有一个docker环境。
想要集群部署,只要用到了kubeadm,就可以在节点一个命令就可以把这个节点变为master,其他节点用kubeadm join就可以加入集群了。
kubelet每一个node节点上面的代理,这个代理帮我们的节点来干活,比如创建pot,管理网络等等。
kubect 是我们的命令行程序,为了方便命令行操作整个k8s集群。

1、安装 docker
1、卸载系统之前的 docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

2、安装 Docker-CE
安装必须的依赖
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
设置 docker repo 的 yum 位置
sudo yum-config-manager \ --add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
安装 docker,以及 docker-cli
sudo yum install -y docker-ce docker-ce-cli containerd.io

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

3、配置 docker 加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

4、启动 docker & 设置 docker 开机自启
systemctl enable docker

基础环境准备好,可以给三个虚拟机备份一下;为 node3 分配 16g,剩下的 3g。方便未来测试
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

2、添加阿里云 yum 源
$ cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

3、安装 kubeadm,kubelet 和 kubectl
yum list|grep kube
yum install -y kubelet-1.17.3 kubeadm-1.17.3 kubectl-1.17.3
systemctl enable kubelet
systemctl start kubelet

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
目前启动不起来是正常的,因为有些配置还没有完成

5、部署 k8s-master
1、master 节点初始化
$ kubeadm init \ --apiserver-advertise-address=10.0.2.15 \ --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \ --kubernetes-version v1.17.3 \ --service-cidr=10.96.0.0/16 \ --pod-network-cidr=10.244.0.0/16

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

由于默认拉取镜像地址 k8s.gcr.io 国内无法访问,这里指定阿里云镜像仓库地址。可以手动按照我们的 images.sh 先拉取镜像,
地址变为 registry.aliyuncs.com/google_containers 也可以。
科普:无类别域间路由(Classless Inter-Domain Routing、CIDR)是一个用于给用户分配 IP地址以及在互联网上有效地路由 IP 数据包的对 IP 地址进行归类的方法。
拉取可能失败,需要下载镜像。
运行完成提前复制:加入集群的令牌

2、测试 kubectl(主节点执行)
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

$ kubectl get nodes 获取所有节点
目前 master 状态为 notready。等待网络加入完成即可。

journalctl -u kubelet 查看 kubelet 日志
kubeadm join 10.0.2.15:6443 --token 8mgmlh.cgtgsp3samkvpksn \ --discovery-token-ca-cert-hash
sha256:3cf99aa2e6bfc114c5490a7c6dffcf200b670af21c5a662c299b6de606023f85
6、安装 Pod 网络插件(CNI)
$ kubectl apply -f \
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

以上地址可能被墙,大家获取上传我们下载好的 flannel.yml 运行即可,同时 flannel.yml 中
指定的 images 访问不到可以去 docker hub 找一个
wget yml 的地址
vi 修改 yml 所有 amd64 的地址都修改了即可。
等待大约 3 分钟

kubectl get pods -n kube-system 查看指定名称空间的 pods
kubectl get pods –all-namespace 查看所有名称空间的 pods

$ ip link set cni0 down 如果网络出现问题,关闭 cni0,重启虚拟机继续测试
执行 watch kubectl get pod -n kube-system -o wide 监控 pod 进度
等 3-10 分钟,完全都是 running 以后继续
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

7、加入 Kubernetes Node

在 Node 节点执行。
向集群添加新节点,执行在 kubeadm init 输出的 kubeadm join 命令:
确保 node 节点成功
token 过期怎么办

kubeadm token create --print-join-command
kubeadm token create --ttl 0 --print-join-command
kubeadm join --token y1eyw5.ylg568kvohfdsfco --discovery-token-ca-cert-hash
sha256: 6c35e4f73f72afd89bf1c8c303ee55677d2cdb1342d67bb23c852aba2efc7c73

执行 watch kubectl get pod -n kube-system -o wide 监控 pod 进度
等 3-10 分钟,完全都是 running 以后使用 kubectl get nodes 检查状态

8、入门操作 kubernetes 集群
1、部署一个 tomcat
kubectl create deployment tomcat6 --image=tomcat:6.0.53-jre8
Kubectl get pods -o wide 可以获取到 tomcat 信息

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

2、暴露 nginx 访问
kubectl expose deployment tomcat6 --port=80 --target-port=8080 --type=NodePort

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

Pod 的 80 映射容器的 8080;service 会代理 Pod 的 80

3、动态扩容测试

kubectl get deployment
应用升级 kubectl set image (–help 查看帮助)
扩容: kubectl scale --replicas=3 deployment tomcat6
扩容了多份,所有无论访问哪个 node 的指定端口,都可以访问到 tomcat6

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

4、以上操作的 yaml 获取

参照 k8s 细节
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

5、删除

Kubectl get all
kubectl delete deploy/nginx
kubectl delete service/nginx-service

流程;创建 deployment 会管理 replicas,replicas 控制 pod 数量,有 pod 故障会自动拉起新的 pod

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

编辑tomcat6-deployment.yaml,将上面查看的内容拷贝,粘贴到文件中以—分割
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

9、安装默认 dashboard
1、部署 dashboard

$ kubectl apply -f
https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommende
d/kubernetes-dashboard.yaml
墙的原因,文件已经放在我们的 code 目录,自行上传文件中无法访问的镜像,自行去 docker hub 找

2、暴露 dashboard 为公共访问

默认 Dashboard 只能集群内部访问,修改 Service 为 NodePort 类型,暴露到外部:

kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
spec:
type: NodePort
ports: - port: 443
targetPort: 8443
nodePort: 30001
selector:
k8s-app: kubernetes-dashboard

访问地址:http://NodeIP:30001

3、创建授权账户
$ kubectl create serviceaccount dashboard-admin -n kube-system
$ kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin
--serviceaccount=kube-system:dashboard-admin
$ kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk
'/dashboard-admin/{print $1}')

使用输出的 token 登录 Dashboard。
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

二、KubeSphere

默认的 dashboard 没啥用,我们用 kubesphere 可以打通全部的 devops 链路。
Kubesphere 集成了很多套件,集群要求较高
https://kubesphere.io/

Kuboard 也很不错,集群要求不高
https://kuboard.cn/support/

1、简介

KubeSphere 是一款面向云原生设计的开源项目,在目前主流容器调度平台 Kubernetes 之上构建的分布式多租户容器管理平台,提供简单易用的操作界面以及向导式操作方式,在降低用户使用容器调度平台学习成本的同时,极大降低开发、测试、运维的日常工作的复杂度。

2、安装

1、前提条件

https://www.kubesphere.io/zh/docs/v3.3/installing-on-kubernetes/introduction/prerequisites/
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

2、安装前提环境

1、安装 helm(master 节点执行)

Helm 是 Kubernetes 的包管理器。包管理器类似于我们在 Ubuntu 中使用的 apt、Centos中使用的 yum 或者 Python 中的 pip 一样,能快速查找、下载和安装软件包。Helm 由客户端组件 helm 和服务端组件 Tiller 组成, 能够将一组 K8S 资源打包统一管理, 是查找、共享和使用为 Kubernetes 构建的软件的最佳方式。

1)、安装
curl -L https://git.io/get_helm.sh | bash

墙原因,上传我们给定的 get_helm.sh,chmod 700 后./get_helm.sh
可能有文件格式兼容性问题,用 vi 打开该 sh 文件,输入:
:set ff
回车,显示 fileformat=dos,重新设置下文件格式:
:set ff=unix
保存退出:
:wq
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

2)、验证版本

helm version
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

3)、创建权限(master 执行)

创建 helm-rbac.yaml,写入如下内容

apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: tiller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects: - kind: ServiceAccount
name: tiller
namespace: kube-system

应用配置
kubectl apply -f helm-rbac.yaml
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

2、安装 Tiller(master 执行)
1、初始化
helm init --service-account=tiller --tiller-image=jessestuart/tiller:v2.16.3 --history-max 300
--tiller-image 指定镜像,否则会被墙。大家使用这个镜像比较好jessestuart/tiller:v2.16.3

等待节点上部署的 tiller 完成即可
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

2、测试

helm install stable/nginx-ingress --name nginx-ingress
helm ls
helm delete nginx-ingress

3、使用语法

#创建一个 chart 范例
helm create helm-chart
#检查 chart 语法
helm lint ./helm-chart
#使用默认 chart 部署到 k8s
helm install --name example1 ./helm-chart --set service.type=NodePort
#kubectl get pod 查看是否部署成功

3、安装 OpenEBS(master 执行)

https://v2-1.docs.kubesphere.io/docs/zh-CN/installation/prerequisites/

kubectl describe node k8s-node1 | grep Taint #确定 master 节点是有 taint
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

kubectl taint nodes k8s-node1 node-role.kubernetes.io/master:NoSchedule- #取消 taint2
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

kubectl apply -f https://openebs.github.io/charts/openebs-operator-1.5.0.yaml
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

#安装 openebs
#查看效果
kubectl get sc -n openebs
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

#将 openebs-hostpath 设置为 默认的 StorageClass:
kubectl patch storageclass openebs-hostpath -p
‘{“metadata”: {“annotations”:{“storageclass.kubernetes.io/is-default-class”:“true”}}}’

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

#至此,OpenEBS 的 LocalPV 已作为默认的存储类型创建成功。由于在文档开头手动去掉了 master 节点的 Taint,我们可以在安装完OpenEBS 后将 master 节点 Taint 加上,避免业务相关的工作负载调度到 master 节点抢占 master 资源
kubectl taint nodes k8s-node1 node-role.kubernetes.io=master:NoSchedule
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

3、最小化安装 kubesphere

若您的集群可用的资源符合 CPU > 1 Core,可用内存 > 2 G,可以参考以下命令开启

KubeSphere 最小化安装:
kubectl apply -f
https://raw.githubusercontent.com/kubesphere/ks-installer/master/kubesphere-minimal.yaml
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

查看安装日志,请耐心等待安装成功。
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath=‘{.items[0].metadata.name}’) -f

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

4、完整化安装

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

1、一条命令

kubectl apply -f
https://raw.githubusercontent.com/kubesphere/ks-installer/master/kubesphere-complete-setup.yaml
可以去我们的文件里面获取,上传到虚拟机,
参照 https://github.com/kubesphere/ks-installer/tree/master 修改部分配置

2、查看进度

kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath=‘{.items[0].metadata.name}’) -f

3、解决问题重启 installer

kubectl delete pod ks-installer-75b8d89dff-f7r2g -n kubesphere-system

4、metrics-server 部署
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: metrics-server
namespace: kube-system
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: metrics-server
namespace: kube-system
labels:
k8s-app: metrics-server
spec:
selector:
matchLabels:
k8s-app: metrics-server
template:
metadata:
name: metrics-server
labels:
k8s-app: metrics-server
spec:
serviceAccountName: metrics-server
volumes:
#mount in tmp so we can safely use from-scratch images and/or read-only
containers - name: tmp-dir
emptyDir: {}
containers: - name: metrics-server
#image: k8s.gcr.io/metrics-server-amd64:v0.3.6
image: registry.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6
args: - --cert-dir=/tmp
- --secure-port=4443
- --kubelet-insecure-tls 
- --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP
ports: - name: main-port
containerPort: 4443
protocol: TCP
securityContext:
readOnlyRootFilesystem: true
runAsNonRoot: true
runAsUser: 1000
imagePullPolicy: IfNotPresent
volumeMounts: - name: tmp-dir
mountPath: /tmp
nodeSelector:
beta.kubernetes.io/os: linux

5、建立多租户系统

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

6、创建Wordpress应用并发布到Kubernetes

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

7、创建WordPress应用-创建容器

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

8、创建WordPress应用-外网访问

9、什么是DevOps

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

1、项目开发需要考虑的维度

Dev:怎么开发?
Ops:怎么运维?
高并发:怎么承担高并发
高可用:怎么做到高可用

2、什么是 DevOps

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
微服务,服务自治。
DevOps: Development 和 Operations 的组合
DevOps 看作开发(软件工程)、技术运营和质量保障(QA)三者的交集。
突出重视软件开发人员和运维人员的沟通合作,通过自动化流程来使得软件构建、测试、发布更加快捷、频繁和可靠。
DevOps 希望做到的是软件产品交付过程中 IT 工具链的打通,使得各个团队减少时间损耗,更加高效地协同工作。专家们总结出了下面这个 DevOps 能力图,良好的闭环可以大大增加整体的产出。

3、什么是 CI&CD

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

1、持续集成(Continuous Integration)
持续集成是指软件个人研发的部分向软件整体部分交付,频繁进行集成以便更快地发现其中的错误。“持续集成”源自于极限编程(XP),是 XP 最初的 12 种实践之一。
CI 需要具备这些:
	o 全面的自动化测试。这是实践持续集成&持续部署的基础,同时,选择合适的自动化测试工具也极其重要;
	o 灵活的基础设施。容器,虚拟机的存在让开发人员和 QA 人员不必再大费周折;
	o 版本控制工具。如 Git,CVS,SVN 等;
	o 自动化的构建和软件发布流程的工具,如 Jenkins,flow.ci;
	o 反馈机制。如构建/测试的失败,可以快速地反馈到相关负责人,以尽快解决达到一个更稳定的版本。
2、持续交付(Continuous Delivery)
持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」(production-like environments)中。持续交付优先于整个产品生命周期的软件部署,建立在高水平自动化持续集成之上。
灰度发布。
持续交付和持续集成的优点非常相似:
	快速发布。能够应对业务需求,并更快地实现软件价值。
	编码->测试->上线->交付的频繁迭代周期缩短,同时获得迅速反馈;
	高质量的软件发布标准。整个交付过程标准化、可重复、可靠,
	整个交付过程进度可视化,方便团队人员了解项目成熟度;
	更先进的团队协作方式。从需求分析、产品的用户体验到交互 设计、开发、测试、运维等角色密切协作,相比于传统的瀑布式软件团队,更少浪费。
3、持续部署(Continuous Deployment)

持续部署是指当交付的代码通过评审之后,自动部署到生产环境中。持续部署是持续交付的最高阶段。这意味着,所有通过了一系列的自动化测试的改动都将自动部署到生产环境。它也可以被称为“Continuous Release”。

“开发人员提交代码,持续集成服务器获取代码,执行单元测试,根据测试结果决定是否部署到预演环境,如果成功部署到预演环境,进行整体验收测试,如果测试通过,自动部署到产品环境,全程自动化高效运转。”

持续部署主要好处是,可以相对独立地部署新的功能,并能快速地收集真实用户的反馈。

下图是由 Jams Bowman 绘制的持续交付工具链图
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

4、落地方案

Maven+Github+Jenkins(Hudson[现由甲骨文维护])+Docker
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
自动化部署
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

10、流水线-创建凭证

dockerhub github kubesphere
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

11、流水线-CICD完整体验

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

三、Docker 深入

1、Dockerfile

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
在 Docker 中创建镜像最常用的方式,就是使用 Dockerfile。Dockerfile 是一个 Docker 镜像的描述文件,我们可以理解成火箭发射的 A、B、C、D…的步骤。Dockerfile 其内部包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。

1、示例

#基于 centos 镜像
FROM centos
#维护人的信息
MAINTAINER My CentOS <534096094@qq.com>
#安装 httpd 软件包
RUN yum -y update
RUN yum -y install httpd
#开启 80 端口
EXPOSE 80
#复制网站首页文件至镜像中 web 站点下
ADD index.html /var/www/html/index.html
#复制该脚本至镜像中,并修改其权限
ADD run.sh /run.sh
RUN chmod 775 /run.sh
#当启动容器时执行的脚本文件
CMD ["/run.sh"]

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
官方文档:https://docs.docker.com/engine/reference/builder/#from

复杂一点的示例

#在 centos 上安装 nginx
FROM centos
#标明著作人的名称和邮箱
MAINTAINER xxx xxx@qq.com
#测试一下网络环境
RUN ping -c 1 www.baidu.com
#安装 nginx 必要的一些软件
RUN yum -y install gcc make pcre-devel zlib-devel tar zlib
#把 nginx 安装包复制到/usr/src/目录下,如果是压缩包还会自动解压,是网络路径会自动
下载
ADD nginx-1.15.8.tar.gz /usr/src/
#切换到/usr/src/nginx-1.15.8 编译并且安装 nginx
RUN cd /usr/src/nginx-1.15.8 \
&& mkdir /usr/local/nginx \
&& ./configure --prefix=/usr/local/nginx && make && make install \
&& ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ \
&& nginx
#删除安装 nginx 安装目录
RUN rm -rf /usr/src/nginx-nginx-1.15.8
#对外暴露 80 端口
EXPOSE 80
#启动 nginx
CMD ["nginx", "-g", "daemon off;"]

2、常用指令

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

2、镜像操作

1、创建项目 dockerfile

2、上传项目到服务器。

3、进入项目,构建镜像到本地仓库;

(1) docker build -t nginx:GA-1.0 -f ./Dockerfile . 别忘了最后的小数点。
(2) docker images 查看镜像
(3) docker exec -it 容器 id /bin/bash;进入容器,修改容器
(4) docker commit -a “leifengyang” -m “nginxxx” 容器 id mynginx:GA-2.0
	1 docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
	2 OPTIONS 说明:
		1) -a :提交的镜像作者;
		2) -c :使用 Dockerfile 指令来创建镜像;
		3) -m :提交时的说明文字;
		4) -p :在 commit 时,将容器暂停。
(5) docker login : 登陆到一个 Docker 镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
	1 docker login -u 用户名 -p 密码
(6) docker logout : 登出一个 Docker 镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub

4、推送镜像到 docker hub

(1) 标记镜像,docker tag local-image:tagname username/new-repo:tagname
(2) 上传镜像,docker push username/new-repo:tagname

5、保存镜像,加载镜像

(1) 可以保存镜像为 tar,使用 u 盘等设备复制到任意 docker 主机,再次加载镜像
(2) 保存:docker save spring-boot-docker -o /home/spring-boot-docker.tar
(3) 加载:docker load -i spring-boot-docker.tar

6、阿里云操作

(1) 登录阿里云,密码就是开通镜像仓库时 的密码
docker login --username=qwertyuiopasdf_aa registry.cn-hangzhou.aliyuncs.com
(2) 拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/zhenyanmall/zhenyanmall-nginx:v1.0
(3)推送镜像
docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/zhenyanmall/zhenyanmall-nginx:v1
docker push registry.cn-hangzhou.aliyuncs.com/zhenyanmall/zhenyanmall-nginx:v1

四、K8S 细节

1、kubectl

1、kubectl 文档

https://kubernetes.io/zh/docs/reference/kubectl/overview/

2、资源类型

https://kubernetes.io/zh/docs/reference/kubectl/overview/#%E8%B5%84%E6%BA%90%E7%B1%B
B%E5%9E%8B

3、格式化输出

https://kubernetes.io/zh/docs/reference/kubectl/overview/#%E6%A0%BC%E5%BC%8F%E5%8C%9
6%E8%BE%93%E5%87%BA

4、常用操作

https://kubernetes.io/zh/docs/reference/kubectl/overview/#%E7%A4%BA%E4%BE%8B-%E5%B8%
B8%E7%94%A8%E6%93%8D%E4%BD%9C

5、命令参考

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands

2、yaml 语法

1、yml 模板

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

2、yaml 字段解析

参照官方文档

3、入门操作

1、Pod 是什么,Controller 是什么

https://kubernetes.io/zh/docs/concepts/workloads/pods/#pods-and-controllers
Pod 和控制器
控制器可以为您创建和管理多个 Pod,管理副本和上线,并在集群范围内提供自修复能力。
例如,如果一个节点失败,控制器可以在不同的节点上调度一样的替身来自动替换 Pod。
包含一个或多个 Pod 的控制器一些示例包括:
Deployment
StatefulSet
DaemonSet
控制器通常使用您提供的 Pod 模板来创建它所负责的 Pod
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

2、Deployment&Service 是什么

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

3、Service 的意义

1、部署一个 nginx

kubectl create deployment nginx --image=nginx

2、暴露 nginx 访问

kubectl expose deployment nginx --port=80 --type=NodePort
统一应用访问入口;
Service 管理一组 Pod。
防止 Pod 失联(服务发现)、定义一组 Pod 的访问策略

现在 Service 我们使用 NodePort 的方式暴露,这样访问每个节点的端口,都可以访问到这个 Pod,如果节点宕机,就会出现问题。

3、labels and selectors

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

4、Ingress

通过 Service 发现 Pod 进行关联。基于域名访问。
通过 Ingress Controller 实现 Pod 负载均衡
支持 TCP/UDP 4 层负载均衡和 HTTP 7 层负载均衡

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
步骤:
1)、部署 Ingress Controller
2)、创建 Ingress 规则

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: web
spec:
rules: - host: tomcat6.wxn.com
http:
paths: - backend:
serviceName: tomcat6
servicePort: 80

在主机hosts中配置域名映射。
192.168.56.102 tomcat6.wxn.com

如果再部署了 tomcat8;看效果;
kubectl create deployment tomcat8 --image=tomcat:8.5.51-jdk8
kubectl expose deployment tomcat8 --port=88 --target-port=8080 --type=NodePort

kubectl delete xxx 删除指定资源

随便配置域名对应哪个节点,都可以访问 tomcat6/8;因为所有节点的 ingress-controller 路由表是同步的。

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器
商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

5、网络模型

Kubernetes 的网络模型从内至外由四个部分组成:
1、Pod 内部容器所在的网络
2、Pod 所在的网络
3、Pod 和 Service 之间通信的网络
4、外界与 Service 之间通信的网络

商城-学习整理-集群-K8S(二十三),项目,学习,kubernetes,容器

4、项目部署

项目部署流程
制作项目镜像(将项目制作为 Docker 镜像,要熟悉 Dockerfile 的编写)
控制器管理 Pod(编写 k8s 的 yaml 即可)
暴露应用
日志监控文章来源地址https://www.toymoban.com/news/detail-669086.html

到了这里,关于商城-学习整理-集群-K8S(二十三)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Kubernetes实战(二十三)-k8s event监控利器kube-eventer对接企微告警

    监控是保障系统稳定性的重要组成部分,在Kubernetes开源生态中,资源类的监控工具与组件监控比较多。 cAdvisor:kubelet内置的cAdvisor,监控容器资源,如容器cpu、内存; Kube-state-metrics:kube-state-metrics通过监听 API Server 生成有关资源对象的状态指标,主要关注元数据,比如 Dep

    2024年02月21日
    浏览(27)
  • 【系统开发】尚硅谷 - 谷粒商城项目笔记(十一):K8S

    Kubernetes(k8s)中文文档 Kubernetes概述_Kubernetes中文社区 Kubernetes官网 Kubernetes 是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。 Kubernetes 拥有一个庞大且快速增长的生态系统。Kubernetes 的服务、支持和工具广泛可用。 Kuber

    2024年02月11日
    浏览(40)
  • k8s学习整理文档

    ‍ ‍ 最低配置要求: 2 核虚拟 CPU 4 GB 内存 20 GB 储存空间 X 4 台 (三台集群,一台镜像仓库服务器) 由于搭建网络需要,同时要让各个主机互通,因此这里需要对云服务器设置专门的网络(同时也需要开放服务器对应的公网 IP) 在云服务器厂商中,创建 VPC 网络,网段为:

    2024年02月22日
    浏览(28)
  • K8s(Kubernetes)学习(二):k8s集群搭建

    minikube 只是一个 K8S 集群模拟器,只有一个节点的集群,只为测试用,master 和 worker 都在一起。 裸机安装 至少需要两台机器(主节点、工作节点个一台),需要自己安装 Kubernetes 组件,配置会稍微麻烦点。 缺点:配置麻烦,缺少生态支持,例如负载均衡器、云存储。 直接用

    2024年02月09日
    浏览(47)
  • k8s集群部署springboot项目

    本篇,我们将基于k8s集群,模拟一个比较接近实际业务的使用场景,使用k8s集群部署一个springboot的项目,我们的需求是: 部署SpringBoot项目到阿里云服务器 ; 基于容器打包,推送私有镜像仓库 ; 采用K8S集群部署,对外暴露服务,pod副本扩容,公网可以访问 ; 基于阿里云服

    2024年02月02日
    浏览(37)
  • k8s学习 — (实践)第二章 搭建k8s集群

    k8s学习 — 各章节重要知识点 推荐学习时使用,轻量化的k8s集群,可以在个人电脑上使用。 minikube 是一个工具, 能让你在本地运行 Kubernetes。 minikube 在你的个人计算机(包括 Windows、macOS 和 Linux PC)上运行一个一体化(all-in-one)或多节点的本地 Kubernetes 集群,以便你来尝试

    2024年02月03日
    浏览(35)
  • k8s的jenkins部署java项目到k8s集群cicd持续集成

    k8s1.16.0-k8s的jenkins部署java项目到k8s集群cicd(ci成,cd手动部署的) 注意: 本文档只是实现了ci,cd是通过ci生成的镜像,再手工再k8s-master执行的部署(只因pod部署的jenkins连接k8s的认证不知怎么操作,若jenkins是单独部署在k8s-master机器上,能直接在master执行kubectl命令就没这个问题了

    2024年02月03日
    浏览(43)
  • k8s发布eureka集群,创建微服务项目

    1.1创建父级项目,父级项目pom.xml文件中的打包类型为pom 1.2创建eureka服务 1.1.2配置pom.xml依赖 1.1.3创建eureka的application.yml文件 1.2构建项目推送到docke仓库 此步骤省略可参考以下连接 1.2.1-docker安装配置 1.2.2-Dockerfile 文件编写 1.2.3 -jenkins构建项目 1.2.4-Harbor仓库搭建 2.1 由于eureka是

    2024年02月02日
    浏览(24)
  • k8s集群中部署项目之数据库准备

    同理 同理 同理 同理 同理

    2024年02月07日
    浏览(40)
  • kubernetes(K8S)学习(一):K8S集群搭建(1 master 2 worker)

    kubernetes官网 :https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/#installing-kubeadm-kubelet-and-kubectl GitHub :https://github.com/kubernetes/kubeadm 本文 :使用kubeadm搭建一个3台机器组成的k8s集群,1台master节点,2台worker节点。 由于k8s安装较麻烦,为防止出现其他异常,特此

    2024年04月09日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包