kubernetes - 推送新图像后触发发布

标签 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

最佳答案

请参阅有关 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>/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 中如果您对其他想法感兴趣。

关于kubernetes - 推送新图像后触发发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45972037/

相关文章:

kubernetes - kubernetes 端口和容器名称中允许使用哪些字符?

kubernetes - Minikube 无法启动,kubectl 与服务器的连接被拒绝

kubernetes - 使用部署中的自定义指标进行GKE自动扩展

kubernetes - 卷 "rook-ceph-crash-collector-keyring": secret "rook-ceph-crash-collector-keyring" not found 的 MountVolume.SetUp 失败

kubernetes - 如何使用 gitlab-ci 动态分配命名空间名称?

nginx - 有没有办法使用 "ngx_http_access_module"、 "ngx_http_limit_req_module"和 "ngx_http_realip_module",而不会踩到对方的脚趾?

kubernetes - 如何在 Google Kubernetes Engine 上将集群节点设为私有(private)?

kubernetes - 来自服务器的错误(禁止): error when creating .。 : clusterroles. rbac.authorization.k8s.io ...:尝试授予额外权限:

kubernetes - 服务模型中的 Kubeflow Pipeline

elasticsearch - 为Pod分配特定的CPU资源-kubernetes.io/limit-ranger: 'LimitRanger plugin set: cpu request for container elasticsearch'