我正在使用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?还是我在这里缺少什么?
答案 0 :(得分:1)
必须重新启动Prometheus吊舱,以获取更新的ConfigMap或Secret。
滚动更新不会总是重新启动Pod(仅当Pod的直接配置属性发生更改时,例如-image标签。)
kubectl v1.15现在提供了一个推出重新启动子命令,该命令可让您在部署中重新启动Pod-考虑到您的浪涌/不可用配置-从而让他们选择对引用的ConfigMap,Secret或类似的更改。值得注意的是,您可以将其用于早于v1.15的群集,因为它是在客户端中实现的。
用法示例:kubectl部署重新启动部署/ prometheus重新启动特定部署。那样简单!
更多信息-here。