[CloudNative:KuberNetes&资源调度.V07] [Applications.KuberNetes]
[|DevOps|k8s|资源调度|无状态应用管理|Deployment|deployment创建|deployment更新|]
[deployment回滚|deployment扩容和缩容|deployment更新暂停和恢复|deployment更新注意事项|]
一、deployment暂停和恢复
### --- deployment暂停恢复概述
~~~ 使用edit命令可以同时修改多个参数,统一去保存的。
~~~ 使用set命令多次修改它的配置,只触发一次更新呢?
~~~ 可以使用呢Deployment的暂停功能,就是多次执行deployment的更新给暂停掉,
~~~ 多次去修改它的参数,然后再把它的暂停给恢复
~~~ 这个就实现了使用set多次执行命令只触发一次的操作。
二、deployment暂停
### --- 暂停deployment的更新,比如以nginx为例
[root@k8s-master01 ~]# kubectl rollout pause deployment nginx
deployment.apps/nginx paused
### --- deployment暂停后修改配置参数
~~~ # 第一次修改:修改它的一些配置
[root@k8s-master01 ~]# kubectl set image deploy nginx nginx=nginx:1.15.3 --record
deployment.apps/nginx image updated
[root@k8s-master01 ~]# kubectl get po //可以看到它没有被更新,因为我们已经暂停了deployment的更新操作
NAME READY STATUS RESTARTS AGE
nginx-6cdd5dd489-rsf6k 1/1 Running 0 133m
nginx-6cdd5dd489-sfdzr 1/1 Running 0 131m
~~~ # 第二次修改:添加内存和CPU配置
[root@k8s-master01 ~]# kubectl set resources deploy nginx -c nginx --limits=cpu=200m,memory=128Mi --requests=cpu=10m,memory=16Mi
deployment.apps/nginx resource requirements updated
[root@k8s-master01 ~]# kubectl get deploy nginx -oyaml
spec:
containers:
- image: nginx:1.15.3
imagePullPolicy: IfNotPresent
name: nginx
resources: //启动容器使用最大的内存和CPU的使用量
limits:
cpu: 200m
memory: 128Mi
requests: //启动容器使用最小的内存和CPU的使用量
cpu: 10m
memory: 16Mi
### --- 修改配置后在暂停状态下pod是不会被更新的
~~~ 查看pod是否被更新
~~~ 在暂停状态下pod是不会发生任何更新的
[root@k8s-master01 ~]# kubectl get po
NAME READY STATUS RESTARTS AGE
nginx-6cdd5dd489-rsf6k 1/1 Running 0 139m
nginx-6cdd5dd489-sfdzr 1/1 Running 0 136m
三、deployment恢复
### --- 恢复更新,查看pod更新状态
~~~ 恢复更新
[root@k8s-master01 ~]# kubectl rollout resume deploy nginx
deployment.apps/nginx resumed
### --- 查看pod更新记录,rs生成记录
~~~ 查看rs记录
[root@k8s-master01 ~]# kubectl get rs //可以看到恢复更新之后创建了一个新的RS
NAME DESIRED CURRENT READY AGE
nginx-5788dd5dcd 0 0 0 119m
nginx-5dfc8689c6 0 0 0 152m
nginx-65468bc655 0 0 0 119m
nginx-66bbc9fdc5 0 0 0 5h14m
nginx-68db656dd8 1 1 0 3s
### --- 查看pod更新记录
[root@k8s-master01 ~]# kubectl get po //修改了2次,所以创建了2个新的Pod。但最终只会留下一个,历史的会被执行后删除
NAME READY STATUS RESTARTS AGE
nginx-68db656dd8-df8xn 1/1 Running 0 7s
nginx-68db656dd8-fdw4k 0/1 ContainerCreating 0 2s
nginx-6cdd5dd489-rsf6k 1/1 Running 0 139m
nginx-6cdd5dd489-sfdzr 1/1 Terminating 0 137m
[root@k8s-master01 ~]# kubectl get po
NAME READY STATUS RESTARTS AGE
nginx-68db656dd8-df8xn 1/1 Running 0 23s
nginx-68db656dd8-fdw4k 0/1 ContainerCreating 0 18s
nginx-6cdd5dd489-rsf6k 1/1 Running 0 140m
[root@k8s-master01 ~]# kubectl get po
NAME READY STATUS RESTARTS AGE
nginx-68db656dd8-df8xn 1/1 Running 0 109s
nginx-68db656dd8-fdw4k 1/1 Running 0 104s
### --- 查看最终的配置参数是否符合更改后的参数配置
~~~ 查看结果是否符合更改后的参数
[root@k8s-master01 ~]# kubectl get deploy nginx -oyaml
spec:
containers:
- image: nginx:1.15.3
imagePullPolicy: IfNotPresent
name: nginx
resources:
limits:
cpu: 200m
memory: 128Mi
requests:
cpu: 10m
===============================END===============================
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor