Pod 生命周期图解
[创建] → [Pending] → [Running] → [Terminating] → [Terminated/Succeeded/Failed]
│ │
├─ 初始化容器(Init Containers) ─┤
│ │
├─ 主容器(Main Containers) ────┤
│ │
├─ 就绪检查(Readiness Probe) ─┤
│ │
└─ 存活检查(Liveness Probe) ─┘
生命周期阶段详解
- 创建(Created)
- 用户通过
kubectl apply
提交 Pod 配置到 API Server。 - Kubernetes 调度器(Scheduler)为 Pod 分配节点。
- 用户通过
- Pending(挂起)
- Pod 已被调度到节点,但尚未完成资源准备(如下载镜像、分配存储卷等)。
- Init Containers 运行(如果有):
- 按顺序执行,所有 Init 容器必须成功退出(Exit 0),Pod 才会进入下一阶段。
- 若任一 Init 容器失败,Pod 会根据
restartPolicy
重试或终止。
- Running(运行中)
- 所有 Init 容器完成,主容器(Main Containers)启动。
- 此时 Pod 可能处于以下子状态:
- ContainerCreating:容器正在启动(如拉取镜像)。
- Running:容器已正常运行。
- CrashLoopBackOff:容器反复崩溃(依赖
restartPolicy
)。
- Probes(探针检测)
- Liveness Probe:检测容器是否存活。失败会重启容器(根据
restartPolicy
)。 - Readiness Probe:检测容器是否就绪。失败会从 Service 的 Endpoints 中移除 Pod。
- Startup Probe(可选):延迟其他探针,直到容器启动完成。
- Liveness Probe:检测容器是否存活。失败会重启容器(根据
- Terminating(终止中)
- 用户删除 Pod 或触发缩容时,Pod 进入终止流程:
- 发送
SIGTERM
信号给容器,启动优雅关闭(Graceful Shutdown)。 - 等待
terminationGracePeriodSeconds
(默认 30 秒),超时后强制终止(SIGKILL
)。 - 清理存储卷、网络资源等。
- 发送
- 用户删除 Pod 或触发缩容时,Pod 进入终止流程:
- 最终状态
- Succeeded:所有容器正常退出(Exit 0),且不再重启。
- Failed:至少一个容器非正常退出(Exit 非 0)。
- Terminated:人工删除或资源回收后的状态。
关键配置影响生命周期
restartPolicy
:Always
(默认):容器退出时总是重启。OnFailure
:仅当失败时重启。Never
:不重启。
imagePullPolicy
:控制镜像拉取行为(如Always
、IfNotPresent
)。activeDeadlineSeconds
:强制限制 Pod 运行时间。
常见场景示例
- 启动失败:镜像拉取错误 → Pod 卡在
Pending
。 - 崩溃循环:容器持续崩溃 →
CrashLoopBackOff
。 - 就绪失败:Readiness Probe 未通过 → Pod 无法接收流量。
评论需开启科学上网!