滚动更新是按照倒序方式进行,可以指定分区号,如指定分区号N,则表示更新序号大于等于N的Pod,默认分区为0,表示更新所有Pod
[root@maxiaoke local-k8s-yaml]# kubectl -n apps set image sts nginx-web nginx-web=linuxmaxiaoke/nginx:v1.0.1
[root@maxiaoke ~]# kubectl get pod -n apps -w # 注意是倒序更新所有Pod
NAME READY STATUS RESTARTS AGE
nginx-web-0 1/1 Running 2 10h
nginx-web-1 1/1 Running 2 10h
nginx-web-1 1/1 Terminating 2 10h
nginx-web-1 0/1 Terminating 2 10h
nginx-web-1 0/1 Terminating 2 10h
nginx-web-1 0/1 Terminating 2 10h
nginx-web-1 0/1 Pending 0 0s
nginx-web-1 0/1 Pending 0 0s
nginx-web-1 0/1 ContainerCreating 0 0s
nginx-web-1 0/1 Running 0 22s
nginx-web-1 1/1 Running 0 27s
nginx-web-0 1/1 Terminating 2 10h
nginx-web-0 0/1 Terminating 2 10h
nginx-web-0 0/1 Terminating 2 10h
nginx-web-0 0/1 Terminating 2 10h
nginx-web-0 0/1 Pending 0 0s
nginx-web-0 0/1 Pending 0 0s
nginx-web-0 0/1 ContainerCreating 0 0s
nginx-web-0 0/1 ErrImagePull 0 29s
nginx-web-0 0/1 ImagePullBackOff 0 44s
nginx-web-0 0/1 Running 0 62s
nginx-web-0 1/1 Running 0 70s
[root@maxiaoke local-k8s-yaml]# kubectl -n apps patch sts nginx-web -p '{"spec":{"replicas":5}}' # 扩容到5个副本,方便演示
[root@maxiaoke local-k8s-yaml]# kubectl -n apps patch sts nginx-web -p '{"spec":{"updateStrategy":{"type":"RollingUpdate","rollingUpdate":{"partition":3}}}}' # 指定更新分区为3
[root@maxiaoke local-k8s-yaml]# kubectl -n apps set image sts nginx-web nginx-web=linuxmaxiaoke/nginx:v1.0.2 # 开始更新
[root@maxiaoke ~]# kubectl get pod -n apps -w # 只更新序号4和3的Pod
NAME READY STATUS RESTARTS AGE
nginx-web-0 1/1 Running 0 6m31s
nginx-web-1 1/1 Running 0 7m12s
nginx-web-2 1/1 Running 0 3m38s
nginx-web-3 1/1 Running 0 3m33s
nginx-web-4 1/1 Running 0 3m23s
nginx-web-4 1/1 Terminating 0 3m25s
nginx-web-4 0/1 Terminating 0 3m26s
nginx-web-4 0/1 Terminating 0 3m32s
nginx-web-4 0/1 Terminating 0 3m32s
nginx-web-4 0/1 Pending 0 0s
nginx-web-4 0/1 Pending 0 0s
nginx-web-4 0/1 ContainerCreating 0 0s
nginx-web-4 0/1 Running 0 10s
nginx-web-4 1/1 Running 0 17s
nginx-web-3 1/1 Terminating 0 3m59s
nginx-web-3 0/1 Terminating 0 4m
nginx-web-3 0/1 Terminating 0 4m1s
nginx-web-3 0/1 Terminating 0 4m1s
nginx-web-3 0/1 Pending 0 0s
nginx-web-3 0/1 Pending 0 0s
nginx-web-3 0/1 ContainerCreating 0 0s
nginx-web-3 0/1 Running 0 22s
nginx-web-3 1/1 Running 0 25s
[root@maxiaoke local-k8s-yaml]# kubectl -n apps patch sts nginx-web -p '{"spec":{"updateStrategy":{"type":"RollingUpdate","rollingUpdate":{"partition":0}}}}' # 修改分区为0
[root@maxiaoke ~]# kubectl get pod -n apps -w # 会更新剩下来的三个Pod
NAME READY STATUS RESTARTS AGE
nginx-web-0 1/1 Running 0 9m10s
nginx-web-1 1/1 Running 0 9m51s
nginx-web-2 1/1 Running 0 6m17s
nginx-web-3 1/1 Running 0 2m11s
nginx-web-4 1/1 Running 0 2m30s
nginx-web-2 1/1 Terminating 0 6m24s
nginx-web-2 0/1 Terminating 0 6m24s
nginx-web-2 0/1 Terminating 0 6m25s
nginx-web-2 0/1 Terminating 0 6m25s
nginx-web-2 0/1 Pending 0 0s
nginx-web-2 0/1 Pending 0 0s
nginx-web-2 0/1 ContainerCreating 0 0s
nginx-web-2 0/1 Running 0 1s
nginx-web-2 1/1 Running 0 9s
nginx-web-1 1/1 Terminating 0 10m
nginx-web-1 0/1 Terminating 0 10m
nginx-web-1 0/1 Terminating 0 10m
nginx-web-1 0/1 Terminating 0 10m
nginx-web-1 0/1 Pending 0 0s
nginx-web-1 0/1 Pending 0 0s
nginx-web-1 0/1 ContainerCreating 0 0s
nginx-web-1 0/1 Running 0 1s
nginx-web-1 1/1 Running 0 8s
nginx-web-0 1/1 Terminating 0 9m47s
nginx-web-0 0/1 Terminating 0 9m48s
nginx-web-0 0/1 Terminating 0 10m
nginx-web-0 0/1 Terminating 0 10m
nginx-web-0 0/1 Pending 0 0s
nginx-web-0 0/1 Pending 0 0s
nginx-web-0 0/1 ContainerCreating 0 0s
nginx-web-0 0/1 Running 0 1s
nginx-web-0 1/1 Running 0 9s