Azure DevOps AKS持续部署管道卡在Job is pending无日志故障
AKS上Azure DevOps持续部署管道卡在「Job is pending...」无日志排查方案

灰色(X)图标+完全无运行日志的故障,本质是作业根本没调度到执行代理上,不用浪费时间排查管道YAML里的业务部署步骤,按以下优先级排查即可:
1. 优先排查代理池状态(这类问题90%的根因在这)
- 先确认管道绑定的代理池类型:如果是部署在AKS上的自托管代理池,先进入AzDO「组织设置-代理池」找到对应池,查看在线代理数量:
- 若在线代理数为0:直接进AKS集群执行
kubectl get pods -n <代理部署的命名空间>查代理Pod状态- Pod处于Pending状态:执行
kubectl describe pod <代理Pod名称> -n <命名空间>看Events字段,常见原因是AKS节点CPU/内存资源不足无法调度、PVC存储卷绑定失败、节点配置了污点但代理Pod没加对应容忍 - Pod处于CrashLoopBackOff/Error状态:执行
kubectl logs <代理Pod名称> -n <命名空间> --previous查上一次崩溃的日志,常见原因是代理注册用的PAT令牌过期、代理版本和AzDO服务端版本不兼容、代理配置的组织URL/池ID填写错误
- Pod处于Pending状态:执行
- 若有在线代理但作业仍排队:查看代理池的并发作业槽位是不是被僵死作业占满,进入代理池的「作业」标签页,把所有卡了数小时的无响应旧作业取消释放槽位
- 若在线代理数为0:直接进AKS集群执行
- 若用的是微软托管代理池,先查组织级的并发作业配额是不是耗尽,私有项目默认只有1个免费微软托管并发槽,占满后新作业会一直排队。
2. 排查作业调度拦截规则
- 检查作业的「能力需求(Demands)」配置:如果作业配置了特殊匹配规则(比如指定代理名称、要求代理预装特定软件),现有在线代理都不满足匹配条件时,作业会一直处于待调度状态,不会触发执行
- 检查部署阶段的审批/检查规则:如果绑定了AKS环境的部署阶段配置了人工审批、分支合规检查、部署时间窗口限制,卡在审批等待环节时也会显示Job pending,直接进入对应环境的「检查」面板查看未处理的拦截请求,不要只盯着作业日志页
- 若用AzDO的Kubernetes环境资源直连AKS部署,进入「管道-环境」找到对应AKS环境,检查集群服务连接是不是失效,常见原因是AKS集群的服务账号令牌过期、AzDO服务主体的RBAC权限被回收。
3. AKS集群侧异常排查
- 执行
kubectl get nodes确认所有集群节点处于Ready状态,再执行kubectl get pods -n kube-system确认coreDNS、CNI网络插件等核心组件运行正常,集群网络断连时,跑在AKS上的自托管代理无法和AzDO服务端建立长连接,会出现代理显示在线但实际无法接收作业的假在线状态。
4. 快速定位验证技巧
- 临时把作业的代理池切到微软托管池(比如
ubuntu-latest),跑一行最简单的echo "test"命令:如果能正常执行,说明问题完全出在自托管AKS代理/集群连接侧,和管道业务逻辑无关;如果切微软池也卡,直接查看对应区域的AzDO服务健康状态,服务端故障时会出现全量作业排队无响应的情况。
内容的提问来源于stack exchange,提问作者mrc
相关产品推荐
相关产品推荐

