我在这里按照教程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
答案 0 :(得分:2)
请参阅有关updating a Deployment的文档中的注释和示例:
注意:当且仅当部署的pod模板(即.spec.template)发生更改时才会触发部署的卷展栏,例如,如果模板的标签或容器图像已更新
即使你推了一个新的图像版本,模板本身也没有改变;模板仍然将图像称为gcr.io/<my-app>/polls
或gcr.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中讨论这种不便。