statefulset 的 RollingUpdate 不会重新启动 pods 并且更新 ConfigMaps 的更改不会反映出来
RollingUpdate for stateful set doesn't restart pods and changes from updated ConfigMaps doesnot reflect
我正在使用 Prometheus 和 Prometheus Alertmanager 发送警报。
我已经在 GKE 上设置了 Kubernetes 有状态集 运行。我更新了 Prometheus 和 Prometheus AlertManager 的 ConfigMaps 并为有状态集做了 RollingUpdate,但是 pods 没有重新启动,它似乎仍在使用旧的 ConfigMaps。
我使用了更新 ConfigMaps 的命令
kubectl create configmap prometheus-alertmanager-config --from-file alertmanager.yml -n mynamespace -o yaml --dry-run | kubectl replace -f -
类似地,我也更新了普罗米修斯。
对于 RollingUpdate,我使用了以下命令:
kubectl patch statefulset prometheus-alertmanager -p '{"spec":{"updateStrategy":{"type":"RollingUpdate"}}}' -n mynamespace
另外,当我执行 rollingUpdate 时,它显示
statefulset.apps/prometheus-alertmanager patched (no change)
我不知道发生了什么,是不是可以通过RollingUpdate 使stateful set 中的pods 适应更新后的ConfigMaps?或者我在这里遗漏了什么?
必须重新启动 Prometheus pods 才能获取更新的 ConfigMap 或 Secret。
滚动更新不会总是重新启动 pods(仅当更改 pod 的直接配置 属性 时。例如 - 图像标签。)
kubectl v1.15 现在提供了一个 rollout restart 子命令,允许您在 Deployment 中重新启动 Pods - 考虑到您的 surge/unavailability 配置 - 从而让它们获取对引用的 ConfigMap、Secret 或类似的。值得注意的是,您可以将它用于早于 v1.15 的集群,因为它已在客户端中实现。
用法示例:kubectl rollout restart deployment/prometheus 重新启动特定部署。就这么简单!
更多信息 - here。
我正在使用 Prometheus 和 Prometheus Alertmanager 发送警报。
我已经在 GKE 上设置了 Kubernetes 有状态集 运行。我更新了 Prometheus 和 Prometheus AlertManager 的 ConfigMaps 并为有状态集做了 RollingUpdate,但是 pods 没有重新启动,它似乎仍在使用旧的 ConfigMaps。
我使用了更新 ConfigMaps 的命令
kubectl create configmap prometheus-alertmanager-config --from-file alertmanager.yml -n mynamespace -o yaml --dry-run | kubectl replace -f -
类似地,我也更新了普罗米修斯。
对于 RollingUpdate,我使用了以下命令:
kubectl patch statefulset prometheus-alertmanager -p '{"spec":{"updateStrategy":{"type":"RollingUpdate"}}}' -n mynamespace
另外,当我执行 rollingUpdate 时,它显示
statefulset.apps/prometheus-alertmanager patched (no change)
我不知道发生了什么,是不是可以通过RollingUpdate 使stateful set 中的pods 适应更新后的ConfigMaps?或者我在这里遗漏了什么?
必须重新启动 Prometheus pods 才能获取更新的 ConfigMap 或 Secret。
滚动更新不会总是重新启动 pods(仅当更改 pod 的直接配置 属性 时。例如 - 图像标签。)
kubectl v1.15 现在提供了一个 rollout restart 子命令,允许您在 Deployment 中重新启动 Pods - 考虑到您的 surge/unavailability 配置 - 从而让它们获取对引用的 ConfigMap、Secret 或类似的。值得注意的是,您可以将它用于早于 v1.15 的集群,因为它已在客户端中实现。
用法示例:kubectl rollout restart deployment/prometheus 重新启动特定部署。就这么简单!
更多信息 - here。