概念补充
Deployment 是在 Pod 这个抽象上更为上层的一个抽象层,它可以定义一组 Pod 的副本数量,以及这个 Pod 的版本。一般大家用 Deployment 这个抽象来做应用的真正的管理,而 Pod 是组成 Deployment 最小的单元。
Kubernetes 是通过 Controller,控制器去维护 Deployment 中Pod 的数目,它也会去帮助 Deployment 自动恢复失败的 Pod。
比如说我可以定义一个 Deployment ,这个 Deployment 里面需要两个 Pod,当一个 Pod 失败的时候,控制器就会检测到,它重新把 Deployment 中的 Pod 数目从一个恢复到 2 个,通过再去新生成 1 个 Pod 。通过控制器,我们也会帮助完成发布的策略。比如说进行滚动升级,进行重新生成的升级,或者进行版本的回滚。
实验??准备
实验前准备三个界面以方便观察
1.实验??开始
(1)首先我们看一下 minikube 的 status,可以看到所有配置都是配置好了的
minikube status
(2)下一步我们来看看集群???选???节点的状态,可以看到 master 的节点已经跑起来了
kubectl get nodes
(3)查看集群中 Deployment 这个资源
kubectl get deployments
(4)现在我们通过编写 deploymentnginx.yaml ??并运行它
??编写时请先使用管理员的方式进行编写
??后期会讲解内容具体含义
内容如下
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: selector: matchLabels: app: nginx replicas: 2 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80
(5)在↗?角的控制台上打开监听
kubectl get --watch deployments
(6)在??边的控制台上,执行命令创建文件内容所对应的 Pod
kubectl apply -f deploymentnginx.yaml
再来看看监控
??如果遇到如下问题请务必仔细检测yaml??是否有误
(7)我们再来访问一下我们刚刚所创建的详细信息
kubectl describe deployment nginx-deployment [object Object]
上图我们可以看到版本为 1.7.9
并且创建的 Pod 为 2 个
(8)接下来我们进行一个更新操作,创建一个 deploymentnginx-update.yaml 文件进行更新操作
sudo cp deploymentnginx.yaml deploymentnginx-update.yaml sudo vim deploymentnginx-update.yaml
修改版本为 1.8 如下
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: selector: matchLabels: app: nginx replicas: 2 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.8 ports: - containerPort: 80
(9)更新 deploymentnginx.yaml
kubectl apply -f deploymentnginx-update.yaml
查看监控结果
(10)查看 nginx-deployment 的状态信息
(11)删除我们刚刚创建的节点
kubectl delete deployment nginx-deployment
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739