-Pod 的生命周期经历了一系列的状态变化,每个状态反映了 Pod 当前所处的不同阶段。
1. Pending
- 定义: 当创建一个 Pod 时,它会首先进入 Pending 状态。此时,Kubernetes 正在进行节点调度、容器镜像拉取或等待资源准备。
- 原因: Pod 可能尚未被调度到特定的 Node 上,或者其依赖的卷(Volumes)尚未准备好。
2. ContainerCreating
- 定义: 一旦 Pod 被调度到某个 Node 并开始执行容器创建操作,但容器尚未成功启动时,Pod 进入 ContainerCreating 状态。
- 原因: 容器正在初始化或拉取容器镜像,可能需要一些时间来完成这些任务。
3. Running
- 定义: 当 Pod 中的所有容器都已成功启动并开始运行时,Pod 会进入 Running 状态。
- 注意: 进入 Running 状态并不意味着容器已经通过健康检查(如 liveness probe 和 readiness probe)。容器可能仍然在处理启动过程中的健康检查。
4. Ready
- 定义: 在 Running 状态的基础上,Pod 只有在其所有容器通过了 readiness probe 检查后,才会进入 Ready 状态。
- 作用: 只有处于 Ready 状态的 Pod 才能接收流量。Kubernetes 中的 Service 会将请求路由到那些处于 Ready 状态的 Pod。
5. Succeeded
- 定义: 对于一次性任务型的 Pod(如通过 Job 创建的 Pod),如果 Pod 内的主容器完成了任务并且退出代码为 0(表示成功),则 Pod 会进入 Succeeded 状态。
- 场景: 一次性任务完成后,Pod 状态标记为 Succeeded,表示任务已经成功完成并退出。
6. Failed
- 定义: 如果 Pod 内的容器由于错误终止(退出码非 0),或重启次数超过了重启策略允许的最大值,Pod 将进入 Failed 状态。
- 场景: 一次性任务型 Pod 如果以非零退出码结束,也会进入 Failed 状态。此时任务未成功完成,可能需要进行重新调度或查看日志来排查问题。
7. Unknown
- 定义: 当
kubelet
无法获取 Pod 的状态信息时,Pod 会被标记为 Unknown。 - 原因: 这通常是由于与
kubelet
的通信问题,导致集群无法获取 Pod 的真实状态。
总结
Kubernetes 通过持续监控和管理 Pod 的状态,确保集群资源的健康和稳定。每个状态代表 Pod 在生命周期中的不同阶段,并帮助 Kubernetes 管理和调度任务:
- Pending 和 ContainerCreating 状态标识 Pod 尚在准备过程中。
- Running 和 Ready 表示 Pod 已经准备好运行且可以接受流量。
- Succeeded 和 Failed 标识任务的成功或失败,特别适用于一次性任务。
- Unknown 是一个异常状态,通常反映出与
kubelet
通信的问题。
Kubernetes 控制器组件会根据 Pod 所处的不同状态采取适当的操作,例如自动重启容器、重新调度 Pod 等。
标签:状态,生命周期,Kubernetes,容器,Running,Ready,pod,Pod From: https://www.cnblogs.com/leojazz/p/18684159