Pod生命周期全解析:从创建到终止,你不得不知的关键阶段

B站影视 2025-01-07 09:01 2

摘要:Kubernetes 作为云原生领域的标准编排平台,对 Pod 生命周期的精确把控是确保应用稳定运行的关键。

Kubernetes 作为云原生领域的标准编排平台,对 Pod 生命周期的精确把控是确保应用稳定运行的关键。

1. Pending(等待中)

当 Pod 被创建时,它首先进入 Pending 阶段。在此阶段,调度器会为 Pod 选择合适的节点。主要包含以下步骤:

• 资源配额检查

• 节点筛选(预选)

• 节点优先级排序(优选)

• 绑定节点

2. Running(运行中)

一旦 Pod 被调度到某个节点并且所有容器都被成功创建,Pod 就会进入 Running 状态。这个阶段包括:

• Init Container 按序启动

• 主容器并行启动

• 健康检查开始执行

值得注意:即使 Pod 处于 Running 状态,也不意味着应用程序正常运行。需要配合就绪探针(Readiness Probe)来确保服务真正可用。

3. Succeeded(成功)

适用于运行一次性任务的 Pod,当 Pod 中的所有容器都成功终止且不会重启时,进入此状态。典型应用场景:

• 批处理作业

• 数据迁移任务

• 初始化操作

4. Failed(失败)

当 Pod 中的任何容器以非零状态退出且重启策略配置为 Never 时,Pod 进入 Failed 状态。常见原因:

• 应用程序崩溃

• 配置错误

• 资源不足

5. Unknown(未知)

kubelet 无法获取 Pod 的状态信息时,会报告 Unknown 状态。通常由以下原因导致:

• 网络通信问题

• 节点故障

• kubelet 异常

1. 重启策略

Pod 的重启策略(RestartPolicy)决定了容器失败时的处理方式:

• Always(默认):始终尝试重启

• OnFailure:仅在失败时重启

• Never:从不重启

2. 生命周期钩子

Kubernetes 提供了两个生命周期钩子:

lifecycle:
postStart:
exec:
command: ["/bin/sh", "-c", "echo Starting"]
preStransform: translateY(
exec:
command: ["/bin/sh", "-c", "echo Stopping"]

重要提示:postStart 不保证在容器 ENTRYPOINT 之前运行,但一定在容器变成 Running 状态之前执行完成。

3. 终止流程

Pod 终止时会经历以下步骤:

1. Pod 标记为 Terminating

2. 执行 preStop 钩子

3. 发送 SIGTERM 信号

4. 等待宽限期(默认 30 秒)

5. 发送 SIGKILL 信号


来源:opendotnet

相关推荐