Kevin_306

38 k8s-14.Deployment 20220505

14.Deployment

Deployment概念:
用于部署无状态的服务,这个最常用的控制器。一般用于管理维护企业内部无状态的微服务,比如configserver、zuul、springboot。他可以管理多个副本的Pod实现无缝迁移、自动扩容缩容、自动灾难恢复、一键回滚等功能。

1. 创建一个Deployment

01.#deployment就是要创建的资源,nginx是名称,它使用的镜像名字叫nginx:1.15.2
[root@k8s-master01 ~]# kubectl create deployment nginx --image=nginx:1.15.2
02.##查看是否创建成功,利用重定向导出yaml文件
[root@k8s-master01 ~]# kubectl create deployment nginx –o yaml > nginx-deploy.yaml
03.[root@k8s-master01 ~]# kubectl get deploy
# 查看已经部署了的所有应用,可以看到容器,以及容器所用的镜像,标签等信息
[root@k8s-master01 ~]# kubectl get deploy -owide
#查看Pod标签
[root@k8s-master01 ~]# kubectl get pod -show-labels
# 查看目前所有的replica set,显示了所有的pod的副本数,以及他们的可用数量以及状态等信息
[root@k8s-master01 ~]# kubectl get rs


2. 更改deployment的镜像并记录

[root@k8s-master01 ~]# kubectl set image deploy nginx nginx=nginx:1.15.3 –record
#查看更新过程:
[root@k8s-master01 ~]# kubectl rollout status deploy nginx


3. Deployment回滚

01.# 执行更新nginx版本(假设误操作787977da)
[root@k8s-master01 ~]# kubectl set image deploy nginx nginx=nginx:787977da --record
02.# 查看历史版本
[root@k8s-master01 ~]# kubectl rollout history deploy nginx
03.# 回滚到上一个版本
[root@k8s-master01 ~]# kubectl rollout undo deploy nginx
04.# 使用grep查找版本
[root@k8s-master01 ~]# kubectl get deploy nginx -oyaml | grep nginx
05.# 查看指定版本的详细信息
[root@k8s-master01 ~]# kubectl rollout history deploy nginx --revision=5
06.# 回滚到指定的版本
[root@k8s-master01 ~]# kubectl rollout undo deploy nginx --to-revision=5
07.# 查看deploy状态
[root@k8s-master01 ~]# kubectl get deploy -oyaml


4. Deployment的扩容和缩容

01.扩容:将deployment中的nginx容器的pod副本数设置为3,pod创建中
#kubectl scale –replicas=3 deploy nginx
02.缩容:将deployment中的nginx容器的pod副本数设置由3改为2,pod删除中
#kubectl scale –replicas=2 deploy nginx
03.查看目前所有的replica set,显示了所有的pod的副本数,以及他们的可用数量以及状态等信息
# kubectl get rs


5. Deployment的暂停和恢复

✥1.#暂停#

01.# 只要deployment在暂停中,使用deployment更新将不会生效。
[root@k8s-master01 ~]# kubectl rollout pause deployment nginx
02.# 进行第二次配置变更,添加内存CPU配置
[root@k8s-master01 ~]# kubectl set resources deploy nginx -c nginx --limits=cpu=200m,memory=128Mi --requests=cpu=10m,memory=16Mi
03.# 查看yaml文件配置是否生效
[root@k8s-master01 ~]# kubectl get deploy nginx -oyaml
04.# 查看pod是否被更新
[root@k8s-master01 ~]# kubectl get pod


✥2.#恢复#

kubectl rollout resume 恢复已暂停的资源;
#被pause命令暂停的资源将不会被控制器协调使用。可以通过resume来恢复资源。目前仅支持恢复deployment资源
01.# 查看pod是否被更新
[root@k8s-master01 ~]# kubectl get pod
02.# 恢复已暂停的nginx资源
[root@k8s-master01 ~]# kubectl rollout resume deployment nginx
03.# 查看目前所有的replica set,显示了所有的pod的副本数,以及他们的可用数量以及状态等信息
[root@k8s-master01 ~]# kubectl get rs
04.# 查看pod是否被更新,恢复过来然后继续创建容器
[root@k8s-master01 ~]# kubectl get pod
05.# 查看具体的nginx-68db656dd8(实际名称)的yaml文件配置是否生效
[root@k8s-master01 ~]# kubectl get deploy nginx-68db656dd8 -oyaml

执行kubectl get rs和kubectl get pods会显示Replica Set(RS)和Pod已创建的信息,可能会注意到Replica Set的名字总是<Deployment的名字>-<pod template的hash值>

posted on 2022-05-05 00:14  熊猫小虾  阅读(70)  评论(0编辑  收藏  举报

导航