如何在配置映射更改/更新时自动重新启动与部署关联的 Kubernetes Pod 及其相关 Pod?
我知道已经谈论了在配置映射更改时自动重新启动Pod的能力,但据我所知,这在Kubernetes 1.2中尚不可用。
因此,我想要做的(我认为)是对消耗该配置映射的Pod相关的部署资源进行“滚动重启”。是否有可能强制在Kubernetes中滚动重启部署而不更改实际模板中的任何内容?目前这是最好的方法还是存在更好的选择?
如何在配置映射更改/更新时自动重新启动与部署关联的 Kubernetes Pod 及其相关 Pod?
我知道已经谈论了在配置映射更改时自动重新启动Pod的能力,但据我所知,这在Kubernetes 1.2中尚不可用。
因此,我想要做的(我认为)是对消耗该配置映射的Pod相关的部署资源进行“滚动重启”。是否有可能强制在Kubernetes中滚动重启部署而不更改实际模板中的任何内容?目前这是最好的方法还是存在更好的选择?
将不可变属性添加到配置映射中可以完全避免问题。使用配置哈希有助于无缝滚动更新,但无法帮助回滚。您可以查看这个开源项目 - “Configurator” - https://github.com/gopaddle-io/configurator.git。'Configurator'通过以下方式使用自定义资源:
Configurator将部署生命周期与configMap绑定。当configMap更新时,为该configMap创建一个新版本。所有附加到configMap的部署都会进行滚动更新,并使用最新的configMap版本。
当您将部署回滚到旧版本时,它会反弹到执行滚动更新之前的configMap版本。
这样,您就可以维护配置映射的版本,并促进部署和配置映射的滚动和回滚。
另一种方法是将其粘贴到部署的命令部分中:
...
command: [ "echo", "
option = value\n
other_option = value\n
" ]
...
command
部分中托管该配置,并对其执行kubectl create
,同时向其名称添加唯一的“版本”(例如计算内容的哈希值),并修改所有使用该配置的部署:...
command: [ "/usr/sbin/kubectl-apply-config.sh", "
option = value\n
other_option = value\n
" ]
...
如果最终成功了,我可能会发布kubectl-apply-config.sh
。
(不要这样做,看起来太糟糕了)
$ kubectl set env deployment my deployment --env="LAST_RESTART=$(date)" --namespace ...
。 - maciek