You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 06:54:08