kube-prometheus-stack Helm版本陷入Pending-install状态的解决咨询
解决kube-prometheus-stack Helm版本陷入Pending-install状态的问题
问题原因
Helm的Pending-install状态通常源于以下几种情况:
- 安装/更新过程中Hook(预安装、后安装等)执行超时或失败,导致Helm无法完成状态确认
- 多次重试更新后,Helm的release元数据出现不一致,旧release的清理流程未正常完成,新release的状态跟踪逻辑卡住
- 虽然实际组件已创建成功,但Helm内部的状态校验机制未收到预期的资源就绪信号,导致状态无法推进
解决方法
1. 强制回滚到正常版本
先通过历史记录找到上一个处于deployed状态的revision:
helm history <你的release名称> --namespace <目标命名空间>
执行强制回滚,覆盖异常的Pending状态:
helm rollback <你的release名称> <正常revision号> --force --namespace <目标命名空间>
2. 手动清理异常的release元数据
如果回滚无效,直接清理对应版本的Secret(Helm 3用Secret存储release元数据):
- 列出目标命名空间下的Helm release Secret:
kubectl get secrets -n <目标命名空间> | grep sh.helm.release.v1.<你的release名称>
- 删除标记为Pending-install的版本对应的Secret(注意替换版本号):
kubectl delete secret sh.helm.release.v1.<你的release名称>.v<异常版本号> -n <目标命名空间>
- 再次执行
helm list -n <目标命名空间>确认状态是否恢复。
3. 跳过Hook重新执行更新
如果是Hook执行失败导致的卡住,更新时跳过Hook直接完成部署:
helm upgrade <你的release名称> prometheus-community/kube-prometheus-stack --version 14.9.0 -f values.yaml --skip-hooks --namespace <目标命名空间>
完成后手动检查需要的Hook资源(如初始化Job)是否需要手动创建。
4. 验证组件状态
处理完release状态后,确认所有组件正常运行:
kubectl get pods -n <目标命名空间> kubectl get services -n <目标命名空间>
重点检查kube-state-metrics的Pod状态,查看日志确认镜像拉取和启动是否正常:
kubectl logs <kube-state-metrics-pod名称> -n <目标命名空间>
内容的提问来源于stack exchange,提问作者Abdullah Khawer
相关产品推荐
相关产品推荐

