【发布时间】:2018-10-22 05:56:23
【问题描述】:
背景。
我们使用的是 k8s 1.7。我们使用 deployment.yml 来维护/更新 k8s 集群状态。在 deployment.yml 中,pod 的镜像设置为${some_image}:latest。创建部署后,只要有代码合并到 master,pod 的镜像就会更新为${some_image}:${build_num}。
现在发生的情况是,假设我们是否需要修改 deployment.yml 中限制的资源并重新应用它。部署镜像也将更新为${some_image} :latest。我们希望保持镜像处于集群状态,而不是在 deployment.yml 中维护实际标签。我们知道文件中的replcas可以省略,默认取集群状态的值。
问题,
在 1.7 上,spec.template.spec.containers[0].image 是必需的。
- 是否也可以应用 deployment.yml 而不将图像更新为
${some_image}:latest(类似--ignore-image-change的参数,或 deployment.yml 中的特定字段)?如果有,怎么做?
另外,我看到 1.10 documentation 中的图片是可选的。
- 是真的吗?如果有,从哪个版本开始?
--- 更新 ---
CI 在每次合并到主映像时构建和部署新映像。在部署时,CI 运行命令kubectl set image deployment/app container=${some_image}:${build_num},其中${build_num} 是管道的内部版本号。
要应用 deployment.yml,我们运行 kubectl apply -f deployment.yml
【问题讨论】:
-
您能解释一下“由 CI 指定”是什么意思吗?如果我理解,您使用“最新”图像标签来保持最新状态,但有时您不希望“最新”提取最新图像?为什么不坚持使用适用于您的应用的标签,而不必担心图像的最新标签?
-
你能链接到说 .spec.containers[].image 字段是可选的文档吗?
-
我们使用 CI 来构建和部署镜像。在部署时,它运行 kubectl set image deployment/app container=image:tag,其中 tag 是内部版本号。 deploy.yml 中的内容无关紧要,一旦再次运行,它会更新部署的映像。和kubernetes.io/docs/reference/generated/kubernetes-api/v1.10/… 这里它说这个字段是可选的,以允许更高级别的配置管理默认或......这让我想知道 1.10 是否像副本一样使其成为可选。
标签: kubernetes