书籍来源:《CKA/CKAD应试指南:从Docker到Kubernetes完全攻略》
一边学习一边整理老师的课程内容及实验笔记,并与大家分享,侵权即删,谢谢支持!
附上汇总贴:CKA备考实验 | 汇总_热爱编程的通信人的博客-CSDN博客
对于web1来说里面有5个pod,如果要把镜像换成另外一个镜像,我们知道是将所有的pod删除,然后重新用新的镜像创建5个pod出来。这个过程里是一次性把所有5个旧pod全部删除,同时一次性创建5个新pod,还是删除部分旧pod,再创建几个新pod,然后再删除部分旧pod,再创建几个新pod(滚动)呢?
滚动更新就是,不是一次性把所有pod的镜像全部更新,而是先更新几个pod镜像,更新完成之后,再更新几个pod的镜像,直到把所有pod全部更新完毕。
那么每次更新几个pod呢?是由以下两个参数决定的。
(1)maxSurge:用来指定最多一次创建几个pod,可以是百分比,也可以是具体数目。
(2)maxUnavailable:用来指定最多删除几个pod,可以是数字或者百分比。
执行滚动更新
为了更好地看到滚动更新的效果,这里设置在更新镜像时,每次只更新一个pod。
步骤1:通过kubectl edit打开deployment的配置。
##########实操验证##########
[root@vms10 1.8+]# kubectl edit deployments web1
...
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
...
这里可看到:
maxSurge的值被设置为25%,即变更镜像时先创建pod总数的25%个数的pod。
maxUnavailable的值被设置为25%,即变更镜像时关闭pod总数的25%个数的pod。
整个意思就是,变更镜像时先关闭“总pod数1/4”个旧pod,同时创建“总pod数1/4”个新pod。
步骤2:修改这两个参数的值均为1。
##########实操验证##########
...
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
type: RollingUpdate
...
意思就是,变更镜像时,删除一个pod,创建一个pod。
步骤3:再次变更镜像,查看变更的情况。
##########实操验证##########
[root@vms10 1.8+]# kubectl rollout undo deployment/web1 --to-revision=8
deployment.apps/web1 rolled back
[root@vms10 1.8+]# kubectl get pods
NAME READY STATUS RESTARTS AGE
web1-5bb57f44fb-7mclz 0/1 Pending 0 0s
web1-5bb57f44fb-8dg9w 1/1 Running 0 6s
web1-5bb57f44fb-rtnfq 0/1 ContainerCreating 0 6s
web1-5cc989cc89-5t7bm 0/1 Terminating 0 2m17s
web1-5cc989cc89-8cbmg 1/1 Terminating 0 2m25s
web1-5cc989cc89-b68q8 1/1 Running 0 2m25s
web1-5cc989cc89-d8q6g 1/1 Running 0 2m25s
web1-5cc989cc89-w7hmz 1/1 Running 0 2m19s
[root@vms10 1.8+]#
可以看到,这里是删除了1个pod,创建1个pod。