使用kubectl set image更新initContainer的图像

时间:2018-03-21 14:36:25

标签: kubernetes

目前,要更新k8s部署映像,我们使用kubectl set image deployment/deployment_name container=url_to_container 命令,如下所示:

initContainer

虽然此命令更新了部署中主容器使用的URL,但它不会更新部署中也设置的kubectl的URL。

我是否可以使用类似的initContainer命令将{{1}}更新为同一网址?

3 个答案:

答案 0 :(得分:7)

documentation似乎表明只关注容器。

也许您可以切换到kubectl patch

(我知道这更乏味......)

kubectl patch deployment/deployment_name --patch "{\"spec\": {\"template\": {\"spec\": {\"initContainers\": [{\"name\": \"container_name\",\"image\": \"url_to_container\"}]}}}}"

答案 1 :(得分:4)

自从接受答案以来,团队developed能够为Kubernetes初始化容器设置映像。使用相同的命令,只需在提供的命令的容器部分中使用初始化容器名称即可。

kubectl set image deployment/deployment_name myInitContainer=url_to_container

如果要在一个命令中更新两个容器映像,请使用:

kubectl set image deployment/deployment_name myInitContainer=url_to_container container=url_to_container

答案 2 :(得分:0)

上面的代码段基于@Hiruma提供的解决方案。因此,这里我删除了json参数上的空白,并添加了一个命名空间示例。

之所以这样做,是因为在为drone.io编写管道时遇到了问题。

kubectl patch deployment deployment_name -n namespace_name -p  "{\"spec\":{\"template\":{\"spec\":{\"initContainers\":[{\"name\":\"deployment_name\",\"image\":\"url_to_container"}]}}}}"