更改/更新配置图时,如何自动重启 Kubernetes pod 和与部署关联的 pod?
我知道有人谈论过当配置映射发生变化时自动重启 Pod 的能力,但据我所知,这在 Kubernetes 1.2 中尚不可用。
所以(我认为)我想做的是与使用配置映射的 pod 关联的部署资源的“滚动重启”。是否有可能,如果可以,如何在不更改实际模板中的任何内容的情况下强制滚动重启 Kubernetes 中的部署?这是目前最好的方法还是有更好的选择?
在配置地图更新时发出 pod 信号是一项正在开发的功能(https://github.com/kubernetes/kubernetes/issues/22368)。
您始终可以编写一个自定义 pid1 来通知 confimap 已更改并重新启动您的应用程序。
您还可以例如:在 2 个容器中挂载相同的配置映射,在第二个容器中公开一个 http 健康检查,如果配置映射内容的哈希发生变化,该检查将失败,并将其作为第一个容器的活性探测(因为容器中的pod 共享相同的网络命名空间)。当探测失败时,kubelet 将为您重新启动您的第一个容器。
当然,如果您不关心 pod 在哪些节点上,您可以简单地删除它们,复制控制器将为您“重新启动”它们。