我有一个Kubernetes部署,它使用image:test:latest (不是真实的镜像名称,但它是最新的标记)。此图像位于docker hub上。我刚刚把新版本的test:latest推到了dockerhub上。我期待着我的pod在Kubernetes中有一个新的部署,但是什么也没有发生。
我已经像这样创建了我的部署:
kubectl run sample-app --image=`test:latest` --namespace=sample-app --image-pull-policy Always为什么新的镜像推送后没有触发新的部署?
发布于 2017-08-27 23:38:02
Kubernetes是,而不是,正在寻找新版本的图像。镜像拉取策略指定如何获取镜像以运行容器。Always意味着它将在每次启动容器时尝试拉取一个新版本。要查看更新,您需要删除Pod (而不是部署)-新创建的Pod将运行新镜像。
没有直接的方法可以让Kubernetes使用新镜像自动更新正在运行的容器。这将是连续交付系统的一部分(可能使用带有新sha256sum或图像标签的kubectl set image,但不是latest)。
发布于 2020-12-20 05:09:37
强制更新的一种方法是在您的CI脚本中运行此命令(在推送新映像之后,并在应用的yaml中将image-pull-policy设置为Always ):
kubectl rollout restart deployment/<name> --namespace=<namespace>
在Azure Devops中,输入"rollout“作为命令,使用上面的命名空间功能,然后输入"restart ...”在参数字段中。
发布于 2020-02-05 02:07:04
如果您使用的是yml文件,请使用执行部署
kubectl apply -f myfile.yml和
imagePullPolicy: Always在您的文件中,k8s将不会拉出新的图像。您首先需要删除pod,K8s部署会自动拉取镜像。
https://stackoverflow.com/questions/45905999
复制相似问题