在推送新图像后触发卷展栏

时间:2017-08-31 01:49:16

标签: kubernetes google-kubernetes-engine

我在这里按照教程https://cloud.google.com/python/django/container-engine#initialize_your_cloud_sql_instance

我已成功部署了我的服务,但教程在更新部署之前就停止了。

我试图做的就是这个。但它似乎并没有真正更新pod或部署代码。

docker build -t gcr.io/<my-app>/polls .
gcloud docker -- push gcr.io/<my-app>/polls
kubectl apply -f polls.yaml

1 个答案:

答案 0 :(得分:2)

请参阅有关updating a Deployment的文档中的注释和示例:

  

注意:当且仅当部署的pod模板(即.spec.template)发生更改时才会触发部署的卷展栏,例如,如果模板的标签或容器图像已更新

即使你推了一个新的图像版本,模板本身也没有改变;模板仍然将图像称为gcr.io/<my-app>/pollsgcr.io/<my-app>/polls:latest。虽然改变了它的含义,但字符串本身没有改变。

要触发更新,请按一个新标记,例如gcr.io/<my-app>/polls:v2,编辑yaml文件并执行kubectl apply -f polls.yaml

您还可以使用kubectl set image触发更新,而无需更改部署yaml文件(demo);同样的规则适用,标识图像的字符串必须与此时部署的字符串不同。

如果您不想创建图片标签,您还可以使用新图像的sha256sum(按下图像时会显示该值);也适用于yaml文件:

kubectl set image deploy/mydeployment mycontainer=gcr.io/<my-app>/polls@sha256:2aac5e7514fbc77125bd315abe9e7b0257db05fe498af01a58e239ebaccf82a8

如果您对其他想法感兴趣,可以在issue #33664中讨论这种不便。