ContainerCreating 卡住是什么情况
Pod 已经调度到节点却迟迟不是运行状态,停在 ContainerCreating,说明容器运行时在准备阶段卡住了。卡点集中在三处:挂卷失败、创建 Pod 沙箱也就是网络失败、镜像拉取慢或失败。事件会说明卡在哪一步,先读事件再动手,别急着删 Pod。
基本信息
| 常见事件 | 挂载失败、创建沙箱失败、拉取镜像中 |
|---|---|
| 卷问题 | 存储声明未绑定、挂载超时、卷被其他 Pod 占用 |
| 网络问题 | 网络插件未就绪、IP 耗尽、网卡配置报错 |
| 镜像问题 | 大镜像拉取慢,事件里能看到进度 |
| 节点侧 | 用容器运行时命令行与 kubelet 日志看底层报错 |
| 判定线 | 超过 5 分钟基本不是单纯慢 |
卡点与处置
| 事件关键词 | 含义 | 处置 |
|---|---|---|
| 挂载失败 | 存储声明未绑定或挂载超时 | 先查存储声明状态与存储插件 |
| 创建沙箱失败 | 网络插件或 IP 资源不足 | 查网络插件 Pod 与 IP 池 |
| 拉取镜像中 | 镜像大或仓库慢 | 看进度,必要时预热镜像 |
| 卷被占用 | 单节点读写卷已被同节点其他 Pod 使用 | 核对副本数与访问模式 |
| 节点压力 | 节点正在驱逐或回收 Pod | 看节点状态与事件 |
排查命令
排查命令
kubectl describe pod web-1 | tail -25 # 事件是关键
kubectl get pvc -n dev # 存储声明是否绑定
kubectl get events --field-selector involvedObject.name=web-1 --sort-by=.lastTimestamp | tail
kubectl get pods -n kube-system | grep -Ei "cni|calico|flannel" # 网络插件是否就绪典型使用场景
- 新副本长时间不起,需要区分是挂卷、网络还是镜像问题
- 节点重启后网络插件未就绪,新 Pod 全部卡在创建阶段
- 大镜像首次拉取很慢,需要判断是正常等待还是卡死
- 有状态服务的卷被占用,新 Pod 无法完成挂载
超过 5 分钟还停在创建阶段,基本可排除只是慢:按卷、网络、镜像的顺序逐项看事件,比反复删除重建有效得多。
节点侧信息比集群侧更具体:用容器运行时命令行看容器状态、查 kubelet 日志,能拿到真正失败的底层原因。
反复删除重建不会解决卷被占用的问题:旧 Pod 的卷没释放时,新 Pod 依然会卡在同一位置。