基于Kubernetes v1.7.4
关于Kubernetes Deployment滚动更新
- Kubernetes官网文档说明:https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy
- 更多关于Deployment rollout的相关内容,请参考我的博文聊聊你可能误解的Kubernetes Deployment滚动更新机制
场景1:正常滚动更新流程
- 新建deployment:webserver,replicas=10,image=tomcat。
- 滚动更新应用镜像为:nginx
- 观察Replicasets的变化,可发现升级后会创建新的Replicasets,删除老的Replicasets实例,滚动创建新实例。
- 观察deployment的变化
- DESIRED: 10(一直为10)
- CURRENT: 在[replicas-maxUnavailable, replicas+maxSurge]:[8,13]之间变动,最终等于DESIRED值
- UP-TO-DATE: 已更新为nginx镜像的实例,最终等于DESIRED值。
- AVALIABLE: 新老replicaset总的实例数,最终等于DESIRED值。
场景2:应用滚动更新时,用户删除应用
- 新建deployment:webserver,replicas=10,image=tomcat。
- 更改容器镜像,触发deployment的滚动更新。
- 新老Replicaset开始进行滚动更新。
- 使用kubectl删除正在滚动更新的deployment。
- 新老replicaset的实例数被缩减为0,实例开始被删除。
- 观察deployment实例变化如下
从红框处,DESIRED=0,实例逐渐被删除。
场景3:应用滚动更新时,用户对该应用进行扩容
- 新建depl