更新 kubernetes 部署时验证图像是否存在
validate that image exist when updating kubernetes deployment
当使用 none-exist 映像更新部署时,Kubernetes 首先会开始终止现有的 pod,并最终以损坏的部署结束。
是否可以在终止现有 pod 之前告诉 kubectl validate/pull 图像?
虽然我没有对此进行测试,但我认为理论上这应该可行:
您可以使用准入控制器 AlwaysPullImages
和至少有一个 pod 启动的部署策略。准入控制器确保在 Pod 启动之前 Always
拉取镜像。
要启用此准入控制器,您必须在 Kubernetes API 服务器上启用标志,例如 from this link:
kube-apiserver --enable-admission-plugins=AlwaysPullImages,LimitRanger
我不得不将 strategy.rollingUpdate.maxUnavailable
更改为 0
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
type: RollingUpdate
我认为strategy.rollingUpdate.maxUnavailable
的默认值是1
谢谢 Michael Hausenblas
实施 Liveness/Readiness 将确保仅当新 pod 健康时旧 pod 才会终止。
当使用 none-exist 映像更新部署时,Kubernetes 首先会开始终止现有的 pod,并最终以损坏的部署结束。 是否可以在终止现有 pod 之前告诉 kubectl validate/pull 图像?
虽然我没有对此进行测试,但我认为理论上这应该可行:
您可以使用准入控制器 AlwaysPullImages
和至少有一个 pod 启动的部署策略。准入控制器确保在 Pod 启动之前 Always
拉取镜像。
要启用此准入控制器,您必须在 Kubernetes API 服务器上启用标志,例如 from this link:
kube-apiserver --enable-admission-plugins=AlwaysPullImages,LimitRanger
我不得不将 strategy.rollingUpdate.maxUnavailable
更改为 0
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
type: RollingUpdate
我认为strategy.rollingUpdate.maxUnavailable
的默认值是1
谢谢 Michael Hausenblas
实施 Liveness/Readiness 将确保仅当新 pod 健康时旧 pod 才会终止。