k8s容器生命周期

  1. Waiting(等待中) 容器尚未运行,正在等待调度或拉取镜像。

状态可能是拉镜像、挂载卷等。

kubectl describe pod 中可以看到状态如:ContainerCreating。

  1. Running(运行中) 容器已创建并在运行中。

如果设置了 readinessProbe,只有探针通过后容器才会被视为就绪(Ready)。

  1. Terminated(已终止) 容器已经停止运行。

终止原因可能是退出码非0、超时、Pod 被删除等。

你可以看到状态如:Completed 或 Error。

还有如下几个状态

Pod 的生命周期状态如下图所示的几个阶段:

  1. Pending Pod 已被 Kubernetes API Server 接收,但还没创建所有容器。

可能正在调度中,或者等待镜像拉取、PVC 挂载等操作。

  1. Running 所有容器已成功创建并至少有一个处于 Running 状态。

Pod 已经调度到某个节点上,并且正在运行中。

  1. Succeeded 所有容器都正常退出(退出码为 0),且不会再重启(适用于一次性任务类 Pod,如 Job)。

  2. Failed 所有容器都终止,但至少一个容器非正常退出(退出码非0)。

  3. Unknown 通常是 kubelet 无法与所在节点通信,状态无法确定。

Pod 生命周期相关机制

  1. Init Containers 在主容器启动前运行,用于执行初始化任务。

所有 init 容器 顺序执行,每个必须成功,主容器才会启动。

  1. Lifecycle Hook 属于容器级别,如上文提到的 postStart 和 preStop。

  2. Probes(探针) Readiness Probe:决定服务是否接收流量(不会导致重启)。

Liveness Probe:失败会导致容器重启。

Startup Probe:用于设置应用启动的宽限期,失败时才使用 liveness probe。