长时间创建中是什么
对象已经被分到某台节点,但容器迟迟没有真正跑起来。这一步涉及三件事:为对象准备网络沙箱、把存储卷挂载进去、把镜像拉下来并解压。任何一环没完成,都会停在这个状态。它与调度无关——调度早已完成,问题发生在节点侧。
为什么老对象正常新对象不行
典型现象是同一节点上早就运行着的实例一切正常,新创建的实例却一直卡住。这说明节点本身能用,但某个可分配资源耗尽了:网络地址池没有余量、插件自身异常、或者节点磁盘写满导致无法准备沙箱。排查重点因此在节点侧的资源与插件状态,而不是业务镜像。
基本信息
| 适用环境 | 任何 Kubernetes 发行版,属于对象生命周期的一个阶段 |
|---|---|
| 已完成的步骤 | 调度,节点已经确定 |
| 未完成的步骤 | 网络准备、卷挂载、镜像下载与解压 |
| 关键证据 | 对象事件与节点侧组件日志 |
| 常见诱因 | 网络插件异常、地址池耗尽、卷挂载阻塞 |
| 影响范围 | 同一节点上的新对象都会受影响 |
典型使用场景
- 扩容卡住:新实例迟迟不启动,业务容量上不去
- 网络插件异常:插件组件重启或配置损坏导致沙箱无法建立
- 地址池耗尽:地址分配用完,新对象拿不到地址
- 卷挂载阻塞:存储接口无响应或卷正在从其他节点分离
- 镜像过大:大镜像下载与解压耗时较长,看起来像卡住
- 节点磁盘写满:无法写入容器层,准备流程直接失败
排查步骤
排查步骤
kubectl describe pod web-x | grep -iE 'warning|failed|sandbox' # 事件里的关键线索
kubectl get pod web-x -o jsonpath='{.status.containerStatuses[*].state}' # 容器状态细节
kubectl get pods -A -o wide --field-selector spec.nodeName=node-1 | grep -v Running # 同节点其他对象
kubectl get pods -n kube-system -o wide # 网络插件是否就绪(在节点上执行下面两条)
# journalctl -u kubelet --since '10 min ago' | grep -iE 'sandbox|network|cni' | tail -30现象与诱因对照
| 现象 | 可能诱因 | 验证方向 |
|---|---|---|
| 事件提到沙箱建立失败 | 网络插件异常或地址耗尽 | 查看插件状态与地址余量 |
| 事件提到挂载失败 | 存储卷不可用或正在分离 | 确认卷状态与附加情况 |
| 无明显事件但一直等待 | 镜像下载与解压耗时 | 观察节点磁盘与网络吞吐 |
| 同节点新对象全部卡住 | 节点侧资源或插件问题 | 先处理节点再重建对象 |
网络插件未就绪或地址池耗尽时,节点上已有对象表现正常而新对象长期卡住,容易误判为业务镜像问题。
反复删除重建不会解决节点侧的问题,还会丢掉现场证据,应先看清事件再决定动作。