Kubernetes如何进行部署以更新映像

我确实使用单个pod进行了部署,并使用了我的自定义docker映像,例如:

containers:

- name: mycontainer

image: myimage:latest

在开发过程中,我想推送新的最新版本并更新Deployment。如果没有显式定义标签/版本并为每个版本增加它,就找不到方法。

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

回答:

您可以为Pod配置宽限期(例如30秒或更长时间,具体取决于容器启动时间和图像大小)并进行设置"imagePullPolicy:

"Always"。并使用kubectl delete pod pod_name。将创建一个新容器,并自动下载最新的映像,然后终止旧容器。

例:

spec:

terminationGracePeriodSeconds: 30

containers:

- name: my_container

image: my_image:latest

imagePullPolicy: "Always"

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

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

另一个技巧是初始运行:

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

然后:

kubectl set image deployment/my-deployment mycontainer=myimage

它实际上会触发滚动更新,但请确保您也已imagePullPolicy: "Always"设置。

我发现的另一个技巧是,无需更改图像名称,而是更改将触发滚动更新的字段的值,例如terminationGracePeriodSeconds。您可以使用kubectl

edit deployment your_deploymentkubectl apply -f

your_deployment.yaml使用如下补丁来做到这一点:

kubectl patch deployment your_deployment -p \

'{"spec":{"template":{"spec":{"terminationGracePeriodSeconds":31}}}}'

只要确保您始终更改数字值即可。

以上是 Kubernetes如何进行部署以更新映像 的全部内容, 来源链接: utcz.com/qa/422700.html

回到顶部