EKS集群升级至1.29后kube-state-metrics资源请求报错排查
解决kube-state-metrics API资源找不到的问题
问题原因
Kubernetes 1.22及后续版本彻底移除了多个v1beta1版本的API资源:
certificates.k8s.io/v1beta1/CertificateRequest(你日志里的certificationRequest是拼写错误):1.22版本废弃,替代为certificates.k8s.io/v1batch/v1beta1/CronJob:1.21版本升级为batch/v1,1.25版本完全移除v1beta1版本networking.k8s.io/v1beta1/Ingress:1.22版本废弃,替代为networking.k8s.io/v1
你的kube-state-metrics版本过低,仍在请求这些已被移除的旧API,导致报错。
解决步骤
1. 检查当前kube-state-metrics版本
执行命令查看部署的镜像版本:
kubectl get pods -n <你的命名空间> -l app.kubernetes.io/name=kube-state-metrics -o jsonpath='{.items[0].spec.containers[0].image}'
若版本低于v2.5.0,必须升级(v2.5.0及以上版本已适配Kubernetes 1.22+的API规范)。
2. 升级kube-state-metrics
如果是通过Helm部署,直接升级到兼容的稳定版本:
helm upgrade kube-state-metrics prometheus-community/kube-state-metrics -n <你的命名空间> --set image.tag=v2.10.0
(可根据实际情况选择最新稳定版,确保适配Kubernetes 1.29)
3. 验证修复效果
重启pod后查看日志,确认报错消失:
kubectl delete pods -n <你的命名空间> -l app.kubernetes.io/name=kube-state-metrics kubectl logs -n <你的命名空间> -l app.kubernetes.io/name=kube-state-metrics -f
4. 可选:禁用不必要的资源采集
如果不需要采集这些资源,可在Helm配置中禁用对应的类型,创建values.yaml:
kube-state-metrics: resources: certificateRequests: false cronJobs: false ingresses: false
然后重新应用配置:
helm upgrade kube-state-metrics prometheus-community/kube-state-metrics -n <你的命名空间> -f values.yaml
注意:如果是Datadog集成的kube-state-metrics,确保使用Datadog官方提供的适配Kubernetes 1.29的版本,避免版本不兼容。
内容的提问来源于stack exchange,提问作者XP_2600
相关产品推荐
相关产品推荐

