有状态集的RollingUpdate不会重新启动Pod,更新后的ConfigMap中的更改不会反映出来

时间:2019-08-05 10:15:33

标签: prometheus prometheus-alertmanager configmap kubernetes-statefulset

我正在使用Prometheus和Prometheus Alertmanager发送警报。

我已经在GKE上运行了Kubernetes状态集。我更新了Prometheus和Prometheus AlertManager的ConfigMap,并为有状态集进行了RollingUpdate,但是pod没有重新启动,而且似乎仍在使用旧的ConfigMap。

我使用了命令来更新ConfigMaps

kubectl create configmap prometheus-alertmanager-config --from-file alertmanager.yml -n mynamespace -o yaml --dry-run | kubectl replace -f - 同样,我也更新了Prometheus。

对于RollingUpdate,我使用以下命令:

kubectl patch statefulset prometheus-alertmanager -p '{"spec":{"updateStrategy":{"type":"RollingUpdate"}}}' -n mynamespace

另外,当我进行RollingUpdate时,它也会显示

statefulset.apps/prometheus-alertmanager patched (no change)

我不知道发生了什么,通过RollingUpdate是否不可能使有状态集中的Pod适应更新的ConfigMap?还是我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

必须重新启动Prometheus吊舱,以获取更新的ConfigMap或Secret。

滚动更新不会总是重新启动Pod(仅当Pod的直接配置属性发生更改时,例如-image标签。)

kubectl v1.15现在提供了一个推出重新启动子命令,该命令可让您在部署中重新启动Pod-考虑到您的浪涌/不可用配置-从而让他们选择对引用的ConfigMap,Secret或类似的更改。值得注意的是,您可以将其用于早于v1.15的群集,因为它是在客户端中实现的。

用法示例:kubectl部署重新启动部署/ prometheus重新启动特定部署。那样简单!

更多信息-here