我有三个由 statefulset 生成的 pod,它们使用来自 docker hub 的过时的公共 docker 映像。
我想通过更改 statefulset yaml 文件中的图像条目来更新图像。
到目前为止,我尝试过的是kubectl -n THE_NAMESPACE apply -f statefuleset-definition.yaml
在更新文件后,我得到:statefulset "statefulset-name" configured
但是 pod 不会自动重启。
从这个页面我还看到可以直接使用--image
标志传递图像名称,但我希望这发生在 statefulset 定义文件中,以保持文件和 pod 内联。
此过程还建议直接更新,但它会更改 pod 名称,这是我不想要的。
有小费吗?
问问题
462 次
1 回答
0
您可以使用kubectl patch命令来更新 StatefulSet 的镜像。默认情况下,它使用rolling update
策略来执行 statefulset 的更新。
它应该类似于:
kubectl patch statefulset <statefulset_name> --type='json' -p='[{"op": "replace", "path": "/spec/template/spec/containers/0/image", "value":"<new_image_name>"}]'
这样,图像将被更新并且 pod 名称将保持不变。它一个接一个地更新 pod。如果一个 pod 收到更新,它会下一个补丁,依此类推。如果 pod 更新失败,它将恢复到以前的版本。
于 2020-02-25T19:03:56.377 回答