Kubernetes——StatefulSet控制器资源的金丝雀部署
金丝雀部署 StatefulSet 控制器的资源
一、金丝雀部署
将处于暂存状态的更新操作的 partition 定位于 Pod 资源的最大索引号,即可放出一只金丝雀,由其测试第一轮的更新操作,在确认无误后通过修改 partition 属性的值更新其他的 Pod 对象是一种更为稳妥的更新操作。
StatefulSet 控制器 myapp 资源的分区号设置为 Pod 资源的最大索引号 2,将会触发 myapp-2 的更新操作:
kubectl path statefulset myapp -p '{"spec":{"updateStrategy":{"rollingUpdate":{"partition":2}}}}'
位于非更新区域内的其他 Pod 资源仍然不会更新到新的镜像版本,哪怕它们被删除后重建亦是如此。
二、分段更新
金丝雀部署,第一批更新经过测试验证通过之后,用户便可启动后续其他 Pod 资源的更新操作。
在待更新的 Pod 资源数量极少的情况下,直接将 partition 属性的值设置为 0,它将逆序完成后续所有 Pod 资源的更新。而当待更新的 Pod 资源较多时,用户也可以将 Pod 资源以线性或指数级增长的方式来分阶段完成更新操作,操作过程无非是分步更新 partition 属性值。
例如,将 myapp 控制器的分区号依次设置为 1、0 以完成剩余 Pod 资源的线性分步更新。