如何为Kubernetes集群配置Pod调度失败、运行失败的Grafana告警?
Kubernetes集群Pod异常告警配置方案
一、Pod不可调度或运行失败的常见原因
- 不可调度类原因
- 集群资源不足:CPU、内存、GPU等可分配资源无法满足Pod的requests配置
- 节点亲和性/污点容忍配置不匹配:Pod设置的节点选择器、亲和规则没有对应节点满足,或节点存在未被Pod容忍的污点
- 持久化存储绑定失败:PVC不存在、StorageClass未配置、PV资源耗尽或PV与PVC的匹配规则不满足
- 端口冲突:Pod声明的hostPort在目标节点已被占用
- 运行失败类原因
- 镜像拉取失败:镜像地址错误、私有镜像仓库认证信息未配置、镜像不存在或网络无法访问镜像仓库
- 启动命令/配置错误:容器CMD/ENTRYPOINT配置错误、配置文件挂载错误、环境变量配置缺失
- 健康检查失败:livenessProbe/readinessProbe探测连续失败超过阈值
- 资源超限:容器运行时占用资源超过limits配置被内核OOM kill
- 权限不足:ServiceAccount缺少对应API权限、容器运行需要的root权限或特权模式未开启
二、延迟触发的Pod异常告警规则配置
延迟触发适用于偶发重启、短时间调度失败这类大概率可自动恢复的场景,可有效避免告警轰炸,通常设置5~10分钟的等待窗口即可。
Prometheus规则配置示例
apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: name: pod-abnormal-delayed-alert namespace: monitoring spec: groups: - name: pod-abnormal rules: - alert: PodAbnormalDelayed expr: | kube_pod_status_phase{phase=~"Pending|Unknown"} == 1 or kube_pod_container_status_waiting_reason{reason=~"CrashLoopBackOff|ImagePullBackOff|ErrImagePull"} == 1 or kube_pod_container_status_restarts_total > 3 for: 5m labels: severity: warning annotations: summary: "Pod异常持续超过5分钟" description: "命名空间{{ $labels.namespace }}下的Pod {{ $labels.pod }} 处于异常状态,当前状态: {{ $labels.phase }}"
Grafana侧配置步骤
- 进入Grafana控制台,打开
Alerting > Alert rules,点击New alert rule - 数据源选择已对接的Prometheus,输入上方的PromQL语句,查询时间范围选择5m
- 在
Alert evaluation behavior模块,设置Pending period为5分钟,和Prometheus规则的for参数对应 - 配置通知策略时,将该告警关联到非紧急通知渠道,比如普通告警群、邮件告警组
三、Pod运行失败即时通知告警配置
该类告警针对确定不可恢复的Pod失败场景,无延迟直接触发,严重等级设为critical即可。
Prometheus规则配置示例
apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: name: pod-failed-immediate-alert namespace: monitoring spec: groups: - name: pod-failed rules: - alert: PodFailedImmediate expr: kube_pod_status_phase{phase="Failed"} == 1 for: 0m labels: severity: critical annotations: summary: "Pod运行失败" description: "命名空间{{ $labels.namespace }}下的Pod {{ $labels.pod }} 运行失败,失败原因: {{ $labels.reason }}"
Grafana侧配置步骤
- 新建告警规则,数据源选择Prometheus,输入上方的PromQL语句
Pending period设置为0,即满足条件立刻触发告警- 通知策略关联紧急通知渠道,比如值班告警群、短信、电话告警,可配置@对应负责人逻辑
- 可开启告警分组,按命名空间、应用标签分组发送,方便快速定位故障归属
内容的提问来源于stack exchange,提问作者sayali_bhavsar
相关产品推荐
相关产品推荐

