相位是什么
相位描述对象在其生命周期中的大致阶段:等待调度与准备、正常运行、正常结束、失败终止、状态未知。它是粗粒度的结论,用来快速筛选出值得关注的对象,而不是用来判断业务是否健康。真正的判断要看容器状态、就绪情况与事件。
最容易被误读的一点
运行中并不代表可用:容器可能起来了但没通过就绪检查,此时它不会接收流量;也可能内部进程卡死,等待存活检查把它重启。反过来,等待中也不等于失败,可能只是正在下载镜像或附加存储卷。用相位做结论而不做下钻,是排查走偏的常见起点。
基本信息
| 适用环境 | 任何 Kubernetes 发行版,属于对象状态字段的一部分 |
|---|---|
| 典型取值 | 等待中、运行中、成功、失败、未知 |
| 更新方式 | 由节点与控制组件上报,客户端只读 |
| 粒度 | 粗粒度阶段,不含具体原因 |
| 配合信息 | 容器状态、就绪状态、事件与退出码 |
| 重启策略影响 | 总是重启的对象不会进入成功或失败阶段 |
典型使用场景
- 批量筛查:一次筛出所有非运行状态的对象,快速定位异常
- 任务核对:确认一次性任务是否已经正常结束
- 节点异常判断:大量对象同时进入未知状态,指向节点失联
- 发布观察:结合就绪情况判断新副本是否真的可用
- 自动化脚本:用相位做初步判断,再决定是否需要进一步取证
- 容量巡检:通过状态分布发现长期未就绪的对象
查看相位与细节
查看相位与细节
kubectl get pod web-x -o jsonpath='{.status.phase}' # 取当前相位
kubectl get pods -A --field-selector status.phase!=Running # 筛出非运行状态
kubectl get pods -A --field-selector status.phase=Pending # 只看等待中
kubectl describe pod web-x | grep -A6 Status # 看容器状态细节
kubectl get pod web-x -o jsonpath='{.status.containerStatuses[*].ready}' # 就绪情况相位与常见场景
| 相位 | 含义 | 常见场景 |
|---|---|---|
| 等待中 | 已接受但容器未全部启动 | 调度等待、拉镜像、卷未就绪 |
| 运行中 | 已绑定节点且至少一个容器运行 | 正常服务状态,但不代表就绪 |
| 成功 | 所有容器正常结束且不再重启 | 一次性任务完成 |
| 失败 | 至少一个容器失败终止且不再重启 | 任务失败、被驱逐 |
| 未知 | 无法获取状态 | 节点失联或节点故障 |
重启策略为总是重启的对象不会进入成功或失败阶段,而是不断重启,表面上一直停在运行中。
等待中不等于失败:先看事件确认是调度问题还是准备问题,两者的处理方向完全不同。