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 ...”。
我有一个使用图像的 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 ...”。