我按照这里的教程 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
最佳答案
请参阅有关 updating a Deployment 的文档中的说明和示例:
Note: A Deployment’s rollout is triggered if and only if the Deployment’s pod template (that is, .spec.template) is changed, for example if the labels or container images of the template are updated.
即使您推送了新的图像版本,模板本身也没有变化;模板仍然将图像引用为 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 中如果您对其他想法感兴趣。
关于kubernetes - 推送新图像后触发发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45972037/