胡文成的个人博客

Pod生命周期

2024-08-14

一、Pod生命周期

Pod的status字段是一个PodStatus对象

使用两种方式可以查看Pod详情

  • kubectl get pod -o yaml
  • kubectl describe pod

可以查看Pod的信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
kind: Pod
...
spec:
readinessGates:
- conditionType: "www.example.com/feature-1"
status:
conditions:
- type: Ready # 内置的 Pod 状况
status: "False"
lastProbeTime: null
lastTransitionTime: 2018-01-01T00:00:00Z
- type: "www.example.com/feature-1" # 额外的 Pod 状况
status: "False"
lastProbeTime: null
lastTransitionTime: 2018-01-01T00:00:00Z
containerStatuses:
- containerID: docker://abcd...
ready: true
...
Pod阶段(粗略状态)

其中status.phase字段,表示的就是Pod的阶段或状态

阶段值 描述
Pending(待处理) ① 已经被Kubernetes接受,但是有一个或多个容器还没有被创建和运行;
说明:此阶段包括两个时间:等待Pod被调度的时间和通过网络下载镜像的时间
Running(运行中) Pod已经被分配到某个节点上了
Pod中所有容器都已经被创建,至少有一个容器在运行、或处于启动或重启状态
Succeeded(已成功) Pod中的所有容器都已成功运行,并且不会再重启
Failed(已失败) Pod中所有容器都已终止,并且至少有一个容器因为失败而停止。也就是说,容器以非0状态退出或被系统终止
Unknown(未知) 因为某些原因无法取得Pod状态,通常是因为与Pod所在主机通信失败
Pod状况(详细状态)

每个Pod都有一个PodStatus,它是一个PodCondition数组,通过它可以判断Pod是否通过了状况测试

状况值 描述
PodScheduled(Pod已调度) Pod已经被分配到某个节点上了
PodReadyToStartContainers(Pod已就绪) Pod沙箱被成功创建并且配置了网络
ContainersReady(容器已就绪) Pod 中所有容器都已就绪
Initialized(容器已初始化) 所有的Init容器都已成功完成
Ready(已完成) Pod 可以为请求提供服务,并且应该被添加到对应服务的负载均衡池中
容器状态

一旦调度器将Pod分派给某个节点,kubelet就通过容器运行时来为Pod创建容器

状态值 描述
Waiting(等待中) 容器正在为启动做一些工作(比如:正在从镜像仓库拉取镜像、正在向容器应用Secret数据)
Running(运行中) 容器正在执行中且没有发生任何问题
说明:如果配置了postStart回调,该状态下就已经回调了该方法
Terminated(已终止) 运行中的容器正常结束或因某些原因而结束失败
说明:如果配置了preStop回调,进入该状态之前会回调该方法
Tags: k8s

扫描二维码,分享此文章