文章目录
一 现象描述
当 Pod 一直处于 Pending 状态时,说明该 Pod 还未被调度到某个节点上,需查看 Pod 分析问题原因。例如执行 kubectl describe pod 命令,则获取到的事件信息如下:
$ kubectl describe pod tikv-0
...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling 3m (x106 over 33m) default-scheduler 0/4 nodes are available: 1 node(s) had no available volume zone, 2 Insufficient cpu, 3 Insufficient memory.
二 可能原因
- 节点资源不足
- 不满足 nodeSelector 与 affinity
- Node 存在 Pod 没有容忍的污点
- 低版本 kube-scheduler 的 bug
- kube-scheduler 未正常运行
- 驱逐后其他可用节点与当前节点的有状态应用不在相同可用区
三 排查方法
3.1 检查节点是否资源不足
3.1.1 问题分析
节点资源不足有以下几种情况:
- CPU 负载过高。
- 剩余可以被分配的内存不足。
- 剩余可用 GPU 数量不足(通常在机器学习场景、GPU 集群环境