Kubernetes:--image-pull-policy 总是不起作用

Kubernetes: --image-pull-policy always does not work

我有一个使用图像的 Kubernetes 部署:test:latest(不是真实的图像名称,但它是最新的标签)。 此图片位于 docker 集线器上。我刚刚将 test:latest 的新版本推送到 dockerhub。我期待在 Kubernetes 中重新部署我的 pod,但什么也没发生。

我是这样创建我的部署的:

kubectl run sample-app --image=`test:latest` --namespace=sample-app --image-pull-policy Always

为什么新镜像推送后没有触发新部署?

Kubernetes 正在等待映像的新版本。图像拉取策略指定如何获取图像到 运行 容器。 Always 意味着它会在每次启动容器时尝试拉取一个新版本。要查看更新,您需要删除 Pod(而不是 Deployment)——新创建的 Pod 将 运行 新图像。

没有直接的方法让 Kubernetes 自动用新镜像更新 运行ning 容器。这将是持续交付系统的一部分(可能使用 kubectl set image 和新的 sha256sum 或图像标签 - 但不是 latest)。

如果您正在使用 yml 文件,请使用

执行部署
kubectl apply -f myfile.yml

imagePullPolicy: Always

在您的文件中,k8s 不会拉取新镜像。首先需要删除pod,K8s deployment会自动拉取镜像

强制更新发生的一种方法是 运行 在您的 CI 脚本中执行此操作(在推送新图像并将 image-pull-policy 设置为 Always 之后应用的 yaml):

kubectl rollout restart deployment/<name> --namespace=<namespace>

在 Azure Devops 中输入“rollout”作为命令,使用上面的命名空间功能并在参数字段中输入“restart ...”。