
报错如上图内容,之前是没问题的,重启了pod之后出现上图报错

报错如上图内容,之前是没问题的,重启了pod之后出现上图报错
关注让【宝码香车】来帮您解答,本回答参考DeepSeek编写,并整理提供。
如果答案能帮助您,请采纳,非常感谢!
.
每日一句正能量,让它带给您好心情:努力的人,自带光芒,走到哪里都能照亮一片天。
.
根据您提供的日志,Prometheus Server 主要存在两个核心问题:
错误现象:
cannot List resource "nodes/services/pods/endpoints" in API group "" at the cluster scope
根本原因:
Prometheus 使用的 ServiceAccount znaqyxbzpt:default 缺少必要的 Kubernetes API 权限,无法列出集群范围的资源(nodes、services、pods、endpoints等)。
解决方案:
检查并修复 ClusterRole 和 ClusterRoleBinding:
# 检查当前的 ClusterRole 和 ClusterRoleBinding
kubectl get clusterrole,clusterrolebinding -n znagyxbzpt | grep prometheus
# 检查 ServiceAccount 是否存在
kubectl get serviceaccount -n znagyxbzpt
创建或更新必要的 RBAC 权限:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: prometheus-k8s
rules:
- apiGroups: [""]
resources:
- nodes
- nodes/proxy
- services
- endpoints
- pods
verbs: ["get", "list", "watch"]
- apiGroups:
- extensions
resources:
- ingresses
verbs: ["get", "list", "watch"]
- nonResourceURLs: ["/metrics"]
verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: prometheus-k8s
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: prometheus-k8s
subjects:
- kind: ServiceAccount
name: default # 或您的具体 ServiceAccount 名称
namespace: znagyxbzpt
错误现象:
Error sending alert err="Post \"http://prometheus-alertmanager:80/api/v1/alerts\": context deadline exceeded"
根本原因:
Prometheus 无法在超时时间内连接到 Alertmanager。
解决方案:
检查 Alertmanager 状态:
# 检查 Alertmanager Pod 状态
kubectl get pods -n znagyxbzpt | grep alertmanager
# 检查 Alertmanager 服务
kubectl get svc -n znagyxbzpt | grep alertmanager
# 检查网络连通性
kubectl exec -it prometheus-server-pod -n znagyxbzpt -- nc -zv prometheus-alertmanager 80
检查 Prometheus 配置中的 Alertmanager 配置:
alerting:
alertmanagers:
- static_configs:
- targets:
- prometheus-alertmanager:80
# 可以尝试增加超时时间
timeout: 10s
kubectl auth can-i list nodes --as=system:serviceaccount:znagyxbzpt:default
kubectl auth can-i list pods --as=system:serviceaccount:znagyxbzpt:default
# 重启 Prometheus(在修复 RBAC 后)
kubectl delete pod -n znagyxbzpt prometheus-server-64759849¢9-47919
# 检查 Alertmanager 并重启
kubectl get pods -n znagyxbzpt | grep alertmanager
kubectl get events -n znagyxbzpt --sort-by=.lastTimestamp
问题主要是由于:
建议先修复 RBAC 权限问题,然后检查 Alertmanager 的网络连通性。重启后出现此问题可能是由于集群权限配置发生了变化。