在默认的策略下,statefulset启停Pod都是按照顺序执行的,新建Pod按照序号从小到大进行,删除Pod从大到小进行,通常需要在Pod配置就绪性探针,严格保证次序。
[root@maxiaoke local-k8s-yaml]# kubectl -n apps patch sts nginx-web -p '{"spec":{"replicas":5}}' # 增加副本数
[root@maxiaoke ~]# kubectl get pod -n apps -w # 观察启动顺序,前一个就绪后,再启动下一个
NAME READY STATUS RESTARTS AGE
nginx-web-0 1/1 Running 2 10h
nginx-web-1 1/1 Running 2 10h
nginx-web-2 0/1 Pending 0 0s
nginx-web-2 0/1 Pending 0 0s
nginx-web-2 0/1 Pending 0 1s
nginx-web-2 0/1 ContainerCreating 0 2s
nginx-web-2 0/1 Running 0 3s
nginx-web-2 1/1 Running 0 5s
nginx-web-3 0/1 Pending 0 0s
nginx-web-3 0/1 Pending 0 0s
nginx-web-3 0/1 Pending 0 1s
nginx-web-3 0/1 ContainerCreating 0 2s
nginx-web-3 0/1 Running 0 3s
nginx-web-3 1/1 Running 0 9s
nginx-web-4 0/1 Pending 0 0s
nginx-web-4 0/1 Pending 0 0s
nginx-web-4 0/1 Pending 0 1s
nginx-web-4 0/1 ContainerCreating 0 2s
nginx-web-4 0/1 Running 0 3s
nginx-web-4 1/1 Running 0 7s
[root@maxiaoke local-k8s-yaml]# kubectl -n apps patch sts nginx-web -p '{"spec":{"replicas":2}}' # 减少副本数
[root@maxiaoke ~]# kubectl get pod -n apps -w # 观察停止顺序,按序号倒序停止
NAME READY STATUS RESTARTS AGE
nginx-web-0 1/1 Running 2 10h
nginx-web-1 1/1 Running 2 10h
nginx-web-2 1/1 Running 0 117s
nginx-web-3 1/1 Running 0 112s
nginx-web-4 1/1 Running 0 103s
nginx-web-4 1/1 Terminating 0 109s
nginx-web-4 0/1 Terminating 0 110s
nginx-web-4 0/1 Terminating 0 111s
nginx-web-4 0/1 Terminating 0 111s
nginx-web-4 0/1 Terminating 0 111s
nginx-web-3 1/1 Terminating 0 2m
nginx-web-3 0/1 Terminating 0 2m
nginx-web-3 0/1 Terminating 0 2m1s
nginx-web-3 0/1 Terminating 0 2m1s
nginx-web-2 1/1 Terminating 0 2m7s
nginx-web-2 0/1 Terminating 0 2m7s
nginx-web-2 0/1 Terminating 0 2m13s
nginx-web-2 0/1 Terminating 0 2m13s