我有一个使用图像的 Kubernetes 部署:test:latest
(不是真实的图像名称,但它是最新的标签)。
此图像位于 docker hub 上。我刚刚推送了test:latest
的新版本到 dockerhub。我期待在 Kubernetes 中对我的 pod 进行新的部署,但什么也没发生。
我已经像这样创建了我的部署:
kubectl run sample-app --image=`test:latest` --namespace=sample-app --image-pull-policy Always
为什么推送新镜像后没有触发新部署?
最佳答案
Kubernetes 是 不是 观看图像的新版本。镜像拉取策略指定如何获取镜像来运行容器。 Always
意味着它会在每次启动容器时尝试拉取一个新版本。要查看更新,您需要删除 Pod(而不是部署) - 新创建的 Pod 将运行新镜像。
没有直接的方法让 Kubernetes 用新镜像自动更新正在运行的容器。这将是持续交付系统的一部分(也许将 kubectl set image
与新的 sha256sum 或图像标签一起使用 - 但不是 latest
)。
关于Kubernetes:--image-pull-policy 总是不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45905999/