更新 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 才会终止。