k8s容器生命周期
- Waiting(等待中) 容器尚未运行,正在等待调度或拉取镜像。
状态可能是拉镜像、挂载卷等。
kubectl describe pod 中可以看到状态如:ContainerCreating。
- Running(运行中) 容器已创建并在运行中。
如果设置了 readinessProbe,只有探针通过后容器才会被视为就绪(Ready)。
- Terminated(已终止) 容器已经停止运行。
终止原因可能是退出码非0、超时、Pod 被删除等。
你可以看到状态如:Completed 或 Error。
还有如下几个状态
Pod 的生命周期状态如下图所示的几个阶段:
- Pending Pod 已被 Kubernetes API Server 接收,但还没创建所有容器。
可能正在调度中,或者等待镜像拉取、PVC 挂载等操作。
- Running 所有容器已成功创建并至少有一个处于 Running 状态。
Pod 已经调度到某个节点上,并且正在运行中。
-
Succeeded 所有容器都正常退出(退出码为 0),且不会再重启(适用于一次性任务类 Pod,如 Job)。
-
Failed 所有容器都终止,但至少一个容器非正常退出(退出码非0)。
-
Unknown 通常是 kubelet 无法与所在节点通信,状态无法确定。
Pod 生命周期相关机制
- Init Containers 在主容器启动前运行,用于执行初始化任务。
所有 init 容器 顺序执行,每个必须成功,主容器才会启动。
-
Lifecycle Hook 属于容器级别,如上文提到的 postStart 和 preStop。
-
Probes(探针) Readiness Probe:决定服务是否接收流量(不会导致重启)。
Liveness Probe:失败会导致容器重启。
Startup Probe:用于设置应用启动的宽限期,失败时才使用 liveness probe。