首页 > Web开发 > 详细

Kubernetes中如何让Deployment更新镜像

时间:2019-11-29 18:33:56      阅读:157      评论:0      收藏:0      [点我收藏+]

问题描述

我的deployment有单个pod,我的自定义docker镜像如下:

1
2
3
containers:
- name: mycontainer
image: myimage:latest

在开发过程中,我想推送新的最新版本并更新Deployment。无法明确定义tag/version并为每个构建增加它,并且无法找到如何做到这一点:

1
kubectl set image deployment/my-deployment mycontainer=myimage:1.9.1

高票回答

您可以使用grace period(例如30秒或更长时间,根据容器启动时间和镜像大小)配置您的pod,并设置“imagePullPolicy:”Always“。并使用kubectl delete pod pod_name。将创建一个新容器并且最新镜像自动下载,然后旧容器终止。

例子:

1
2
3
4
5
6
spec:
terminationGracePeriodSeconds: 30
containers:
- name: my_container
image: my_image:latest
imagePullPolicy: "Always"

我目前正在使用Jenkins进行自动构建和打镜像标签,它看起来像这样:

1
kubectl --user="kube-user" --server="https://kubemaster.example.com"  --token=$ACCESS_TOKEN set image deployment/my-deployment mycontainer=myimage:"$BUILD_NUMBER-$SHORT_GIT_COMMIT"

另一个技巧是最初运行:

1
kubectl set image deployment/my-deployment mycontainer=myimage:latest

然后:

1
kubectl set image deployment/my-deployment mycontainer=myimage

它实际上会触发滚动更新,但请确保您还有imagePullPolicy:“Always”设置。

我发现的另一个技巧是,您不必更改镜像名称,更改将触发滚动更新的字段的值,例如terminationGracePeriodSeconds。您可以使用kubectl编辑部署your_deployment或kubectl apply -f your_deployment.yaml或使用如下补丁:

1
2
kubectl patch deployment your_deployment -p \
‘{"spec":{"template":{"spec":{"terminationGracePeriodSeconds":31}}}}‘

只需确保始终更改数值。

原文链接

Kubernetes how to make Deployment to update image

Kubernetes中如何让Deployment更新镜像

原文:https://www.cnblogs.com/cangqinglang/p/11959300.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!