Kind本地Kubernetes集群Pod持续处于Pending状态如何排查?
Kind集群Pod持续Pending状态排查方案
- 确认节点状态
执行kubectl get nodes检查所有节点是否处于Ready状态,单节点Kind集群若节点状态异常会直接阻断Pod调度流程。 - 核对资源请求配置
查看goserver Pod的YAML定义中resources.requests字段的CPU、内存配置,确认请求总量未超过节点可分配资源上限。可执行kubectl describe node <你的节点名称>查看节点Allocatable项的资源总量以及已分配资源占比,Kind本地节点默认分配的资源上限较低,资源不足是本地测试场景下最常见的调度失败原因。 - 检查调度器运行日志
尽管kube-system下组件Pod显示Running,仍需执行kubectl logs -n kube-system <kube-scheduler对应的Pod名称>查看调度器运行日志,排查是否存在节点亲和性、污点容忍度不匹配,或是自定义调度规则拦截了Pod绑定流程。 - 核对污点容忍配置
Kind默认给control-plane节点添加了node-role.kubernetes.io/control-plane:NoSchedule污点,单节点集群下若Pod未配置对应tolerations,将无法调度到唯一的master节点上。 - 排查命名空间资源限制
执行kubectl get resourcequota,limitrange -A检查是否配置了ResourceQuota、LimitRange规则,若当前命名空间的资源配额已耗尽,也会出现Pod无法调度且无事件输出的情况。 - 确认etcd状态正常
执行kubectl exec -n kube-system <etcd对应的Pod名称> -- etcdctl endpoint health验证etcd集群健康状态,etcd写入异常会导致Pod绑定操作无法持久化,也会触发该异常现象。 - 复现操作抓取实时事件
删除现有Pending的goserver Pod,在另一个终端执行kubectl get events -w监听集群事件,再重新提交Pod创建请求,观察创建流程中输出的事件信息即可定位具体失败环节。
内容的提问来源于stack exchange,提问作者Allan Duarte
相关产品推荐
相关产品推荐

