k8s pod异常排错

问题

kuboard页面打不开,看etcd pod未启动导致的。

查看pod events:

kubectl describe pod kuboard-etcd-vmd75 -n kuboard
...
Events:
  Type     Reason     Age    From               Message
  ----     ------     ----   ----               -------
  Normal   Scheduled  3m52s  default-scheduler  Successfully assigned kuboard/kuboard-etcd-vmd75 to 97-61-master-dev
  Warning  Evicted    3m52s  kubelet            The node had condition: [DiskPressure].

解决

1.DiskPressure时间含义及触发机制

Evicted + DiskPressure 本质是什么

这条事件表示:

kubelet 判断节点磁盘资源已进入“不可接受状态”,为了保护节点自身,主动驱逐(Evict)了 Pod。

不是调度器的问题,也不是 Pod 自己“崩了”,而是 节点在自救

1.2 DiskPressure 的判定逻辑

kubelet 并不是等磁盘 100% 才动作,它基于 Eviction Threshold

  • evictionHard:(默认)
    • nodefs.available: 10%
    • nodefs.inodesFree: 5%
    • imagefs.available: 15%
    • imagefs.inodesFree: 5%

只有 evictionHard,没有 evictionSoft。一旦触发,直接驱逐,没有缓冲期。

NodeCondition: DiskPressure=True

1.3. kubelet 驱逐 Pod 的内部流程

flowchart TD
    A[磁盘可用空间下降] --> B[kubelet 监控到 nodefs/imagefs 低于阈值]
    B --> C[NodeCondition: DiskPressure=True]
    C --> D[Eviction Manager 启动]
    D --> E[按 QoS 等级排序 Pod]
    E --> F[驱逐 BestEffort Pod]
    F --> G[仍不足 → 驱逐 Burstable]
    G --> H[最后才是 Guaranteed]

核心原则:牺牲“不重要”的 Pod,保全节点稳定性。

1.4磁盘清理