AWS EKS V1.26.13集群Helm升级Prometheus失败求助
问题根源
Kubernetes 1.26版本已彻底移除policy/v1beta1版本的PodDisruptionBudget(PDB)资源定义,仅保留policy/v1版本。你当前使用的Prometheus Helm Chart版本仍在生成基于policy/v1beta1的PDB配置,导致集群无法识别该资源版本,从而触发升级失败。
解决步骤
1. 升级Prometheus Helm Chart到兼容版本
prometheus-community/prometheus Chart从v15.0.0开始适配Kubernetes 1.22+,默认使用policy/v1版本的PDB。执行以下命令升级:
# 更新Helm仓库 helm repo update prometheus-community # 执行升级(指定兼容版本,或去掉--version用最新版) helm -n monitoring upgrade prometheus prometheus-community/prometheus --version 15.0.0 -f development/monitoring/prometheus/values.yaml --dry-run
2. 自定义values.yaml强制指定PDB的API版本
若暂时无法升级Chart,可在你的development/monitoring/prometheus/values.yaml中添加或修改配置,强制生成policy/v1版本的PDB:
server: podDisruptionBudget: enabled: true apiVersion: policy/v1 # 若alertmanager、pushgateway等组件也启用了PDB,需同步修改 alertmanager: podDisruptionBudget: apiVersion: policy/v1 pushgateway: podDisruptionBudget: apiVersion: policy/v1
3. 临时禁用PodDisruptionBudget(应急方案,生产不推荐)
如果只是需要临时绕过错误完成升级,可在values.yaml中关闭PDB:
server: podDisruptionBudget: enabled: false
注意:此操作会移除Prometheus Server的PDB高可用保护,生产环境仅建议临时使用,后续需尽快修复。
内容的提问来源于stack exchange,提问作者DevOps World
相关产品推荐
相关产品推荐

