k8s部署的应用镜像发生变化更新应用
【摘要】 在 Kubernetes (K8s) 中,如果你使用的是带有 latest 标签的容器镜像,并且该镜像发生了更新,默认情况下 K8s 不会自动拉取最新的镜像来更新应用。为了强制更新 latest 镜像,你可以通过以下几种方式来触发更新: 1. 修改 imagePullPolicy 选项确保 imagePullPolicy 设置为 Always,这样每次 Pod 启动时都会从镜像仓库拉取最新的...
在 Kubernetes (K8s) 中,如果你使用的是带有 latest 标签的容器镜像,并且该镜像发生了更新,默认情况下 K8s 不会自动拉取最新的镜像来更新应用。为了强制更新 latest 镜像,你可以通过以下几种方式来触发更新:
1. 修改 imagePullPolicy 选项
确保 imagePullPolicy
设置为 Always
,这样每次 Pod 启动时都会从镜像仓库拉取最新的镜像:
spec:
containers:
- name: my-app
image: my-app-image:latest
imagePullPolicy: Always
2. 通过更新 Deployment 的方式
Kubernetes 使用的是声明式部署模型,如果需要更新正在运行的 Pod,可以通过以下方式让 K8s 重新拉取并部署最新的镜像:
- 手动更新 Deployment:即使你使用了 latest 镜像标签,K8s 默认不会察觉到镜像变化,因此你可以手动触发 Deployment 的更新。可以通过更新镜像名来做到这一点,即使是简单的重新设置同一个镜像名称:
kubectl set image deployment/my-app my-app=my-app-image:latest
这将强制 K8s 拉取最新的镜像并重新部署。
- 更新 Deployment 的注释:通过更新 Deployment 的某些字段(比如增加或修改注释),也可以强制重新部署 Pod。
kubectl patch deployment my-app -p \
"{\"spec\": {\"template\": {\"metadata\": {\"annotations\": {\"date\": \"`date +'%s'`\"}}}}}"
3. 删除并重建 Pod
如果你想手动删除旧的 Pod 并让 Kubernetes 自动重新创建新的 Pod 来拉取最新镜像,可以使用以下命令:
kubectl rollout restart deployment my-app
这将重启 my-app 部署的所有 Pod,从而拉取最新的 latest 镜像。
总结
为了确保 Kubernetes 始终使用最新的 latest 镜像,最好的做法是:
- 使用
imagePullPolicy: Always
。 - 通过
kubectl set image 或 kubectl rollout restart
触发应用更新。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)