博客园  :: 首页  :: 管理

前面提到的普通的滚动更新,都是修改完sts立即就会发生更新操作

而还有一种更新的策略为, OnDelete,即只有在 pod 被删除时会进行更新操作

还是先看一下web这个sts的当前更新策略如下:

这里我们修改,更新策略,kubectl edit sts web 命令,更新后保存,更新策略的块配置如下: 

  updateStrategy:
    type: OnDelete

1、更新nginx的版本为 1.7.9 ,然后可以通过如下看到,所有pod都没有进行更新

[root@k8s-master ~]# kubectl patch sts web --type='json' -p='[{"op": "replace", "path": "/spec/template/spec/containers/0/image", "value":"nginx:1.7.9"}]'
statefulset.apps/web patched
[root@k8s-master ~]#
[root@k8s-master ~]#
[root@k8s-master ~]# kubectl describe po web-0 | grep Image:
    Image:          nginx:1.9.1
[root@k8s-master ~]# kubectl describe po web-1 | grep Image:
    Image:          nginx:1.9.1
[root@k8s-master ~]# kubectl describe po web-2 | grep Image:
    Image:          nginx:1.9.1
[root@k8s-master ~]# kubectl describe po web-3 | grep Image:
    Image:          nginx:1.9.1
[root@k8s-master ~]# kubectl describe po web-4 | grep Image:
    Image:          nginx:1.9.1
[root@k8s-master ~]#

2、此时我们可以删除一个pod,如web-2,再进行观察,可以看到,只有被删除的web-2,才会重新生成,更新到指定的版本

[root@k8s-master ~]# kubectl delete po web-2
pod "web-2" deleted
[root@k8s-master ~]# kubectl describe po web-0 | grep Image:
    Image:          nginx:1.9.1
[root@k8s-master ~]# kubectl describe po web-1 | grep Image:
    Image:          nginx:1.9.1
[root@k8s-master ~]# kubectl describe po web-2 | grep Image:
    Image:          nginx:1.7.9
[root@k8s-master ~]# kubectl describe po web-3 | grep Image:
    Image:          nginx:1.9.1
[root@k8s-master ~]# kubectl describe po web-4 | grep Image:
    Image:          nginx:1.9.1
[root@k8s-master ~]#

3、最后,没有问题的,再依次将所有的pod进行删除,完成所有的更新

[root@k8s-master ~]# kubectl delete po web-0 web-1 web-3 web-4
pod "web-0" deleted
pod "web-1" deleted
pod "web-3" deleted
pod "web-4" deleted
[root@k8s-master ~]#

 

 

 

尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/17726284.html