任务没有启动、运行报错或反复重启时,可以先查 Pod 状态,再看容器日志和事件。下面以快速入门中的
orders-runner 为例,命名空间沿用 AGC_DEMO_NS,业务容器为 runner。继续使用快速入门的终端,设置 Pod 和容器名称:
: "${AGC_DEMO_NS:?请设置快速入门实际使用的命名空间}"export AGC_DEMO_POD='orders-runner'export AGC_DEMO_CONTAINER='runner'
换了终端后,需要填回原来的命名空间。不要重新生成名称,否则会查不到之前的任务。忘记名称时,可以先列出命名空间和 Pod:
kubectl get namespaceskubectl get pods -A -o wide
找到任务后,填入它的命名空间和 Pod 名称,再查看容器名称。如果已经重建过环境,使用新 Pod 的名称:
export AGC_DEMO_NS='<已有任务的命名空间>'export AGC_DEMO_POD='<实际 Pod 名称>'kubectl -n "$AGC_DEMO_NS" get pod "$AGC_DEMO_POD" \\-o jsonpath='{.spec.containers[*].name}{"\\n"}'
将输出中的业务容器名称填入
AGC_DEMO_CONTAINER,然后执行下面的查询。若没有查看所有命名空间的权限,可在控制台查找自己的任务,或请管理员确认名称。查看 Pod 与节点
kubectl -n "$AGC_DEMO_NS" get pods -o widekubectl get nodeskubectl -n "$AGC_DEMO_NS" describe pod "$AGC_DEMO_POD"
NODE 列显示 Pod 被调度到哪个节点。启动失败时,查看 describe 输出末尾的 Events,通常能找到调度、镜像拉取或卷挂载的错误。查看容器日志
kubectl -n "$AGC_DEMO_NS" logs "$AGC_DEMO_POD" -c "$AGC_DEMO_CONTAINER"
-c 用来指定容器。容器重启后,可在命令末尾加上 --previous 查看重启前的日志;没有重启过的容器通常没有这份日志。查看事件
kubectl -n "$AGC_DEMO_NS" get events --sort-by=.metadata.creationTimestampkubectl -n "$AGC_DEMO_NS" get events --field-selector "involvedObject.name=$AGC_DEMO_POD" --sort-by=.metadata.creationTimestamp
删除或重建资源前,先保存需要的日志和事件,清理后可能无法再查询。
记录运行效果
记录业务任务 ID、Pod UID 和报错时间;如果调用过云 API,也保留对应的 RequestId。
常见问题
问题 | 观察对象 | 判断边界 |
集群能否接入 | API 可达性、身份、命名空间权限 | 控制台显示运行中不等于客户端可达 |
是否有可用沙箱节点 | 调度状态、RuntimeClass、节点与运行时健康 | 节点 Ready 不替代组件就绪 |
任务是否完成 | Job 条件、容器退出码、业务结果 | Running 或 Ready 不等于业务成功 |
文件是否保留 | 原 PVC、挂载对象、文件校验 | PVC Bound 不证明文件内容正确 |
镜像是否加速 | 目标节点、镜像 digest、平台数据面证据 | 镜像拉取事件本身不证明走加速路径 |