You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

K8s部署sample-app提示超出进度截止时间 如何排查部署失败原因

Deployment部署超时故障排查指南

除镜像拉取失败外的高频故障点

  • 启动命令配置错误:当前YAML中显式指定容器启动命令为/app/sample-app,如果镜像内该路径不存在、文件无执行权限、架构不匹配触发exec格式错误,会导致容器启动后立刻退出
  • Pod调度失败:节点CPU/内存/PID资源不足、节点存在未匹配容忍的污点、Pod亲和/反亲和规则不满足、依赖的PersistentVolume/ConfigMap/Secret不存在,都会导致Pod无法被调度绑定到节点
  • 容器运行时异常:节点上containerd/CRI-O/Docker服务故障、CNI网络插件异常导致Pod沙箱创建失败
  • 安全策略拦截:集群配置了Pod安全准入、OPA Gatekeeper等策略,拦截了特权端口、root用户运行等不符合规则的Pod启动请求
  • 程序启动后崩溃:容器内应用启动时依赖的环境变量、配置文件缺失,或者程序本身bug导致启动即退出,进入CrashLoopBackOff循环

根因定位步骤(按优先级执行)

  1. 先定位故障Pod实例
    执行命令获取关联Pod列表:
kubectl get pods -l app=sample-app

从输出结果中可以先初步判断Pod状态:如果状态是ImagePullBackOff就是镜像拉取问题,CrashLoopBackOff是容器启动崩溃,Pending是调度失败,ContainerCreating是卷挂载/沙箱创建卡住。

  1. 查看Pod事件详情
    拿到故障Pod名称后执行:
kubectl describe pod <替换为实际Pod名称>

直接拉到输出末尾的Events段落,这里会记录Pod从调度到启动全流程的错误信息,80%以上的部署问题可以在这里直接找到明确报错。

常见事件对应问题:

  • FailedScheduling:调度失败,事件内容会明确标注失败原因,比如0/3 nodes are available: 2 Insufficient memory, 1 node(s) had untolerated taint
  • ErrImagePull/ImagePullBackOff:镜像拉取失败,检查镜像地址拼写、节点到镜像仓库的网络连通性、私有仓库的拉取凭证配置
  • CrashLoopBackOff:容器反复崩溃,需要进一步查看容器日志
  • FailedCreatePodSandBox:节点容器运行时或网络插件故障,需要登录对应节点排查kubelet、CRI运行时、CNI组件状态
  1. 查看容器运行日志
    如果Pod已经进入启动阶段但反复崩溃,执行命令查看容器日志:
# 查看当前容器日志
kubectl logs <替换为实际Pod名称> -c sample-app
# 查看上一次崩溃退出的容器日志(容器反复重启时必须加-p参数)
kubectl logs <替换为实际Pod名称> -c sample-app -p

针对当前提供的Deployment配置,优先排查command字段问题:绝大多数公共镜像已经内置了正确的启动入口点,额外手动指定command: ["/app/sample-app"]很容易出现路径不匹配问题,可以先注释掉command字段重新部署验证

  1. 集群层面排查
    如果以上步骤都没有拿到明确报错,再做以下检查:
  • 执行kubectl get nodes确认所有工作节点状态为Ready,没有出现磁盘、PID资源耗尽的Pressure状态
  • 检查集群准入策略配置,确认没有安全规则拦截该Pod的创建请求
  • 查看对应节点的kubelet服务日志,排查是否存在节点侧的组件异常

内容的提问来源于stack exchange,提问作者Richard Rublev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 01:21:34