1. Pod生命周期全景图
当我们在Kubernetes集群中提交一个Pod的YAML描述文件时,kube-apiserver会立即将这个请求记录到etcd中。但此时Pod还只是集群中的一个"意向",真正让Pod从概念变成运行实体的过程,要经历以下几个关键阶段:
-
Pending(挂起):调度器(kube-scheduler)正在为Pod选择合适的节点。这个阶段Pod需要的容器镜像可能正在下载,或者节点资源不足导致等待。
-
ContainerCreating(容器创建中):kubelet已经接收到Pod定义,正在调用容器运行时(如containerd)创建容器。此时会看到镜像拉取、存储卷挂载等操作。
-
Running(运行中):所有容器都已成功启动,并且至少有一个容器正在运行。注意这并不代表容器内的应用已经就绪。
-
Succeeded/Failed(成功/失败):对于一次性任务(Job类Pod),容器执行完成后会进入终止状态。正常退出为Succeeded,非零退出为Failed。
-
Terminating(终止中):当Pod被删除时进入此状态,kubelet会先执行preStop钩子,然后发送SIGTERM信号,最后强制终止(SIGKILL)。
关键细节:Pod的status.phase字段记录了这个主状态,但实际每个阶段还包含更精细的子状态,可以通过kubectl describe pod查看Conditions部分。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 创建阶段深度解析
2.1 调度背后的算法逻辑
当Pod进入Pending状态时,调度器会经历以下决策过程:
-
预选(Predicates):过滤掉不符合硬性要求的节点,例如:
- 节点资源是否足够(cpu/memory请求)
- 节点是否有污点(Taints)且Pod无对应容忍(Tolerations)
- 节点Selector是否匹配Pod的nodeSelector
- 存储卷是否能正常挂载(如AWS EBS是否在相同可用区)
-
优选(Priorities):对通过预选的节点打分,考虑因素包括:
- 资源平衡(选择资源利用率较低的节点)
- 亲和性(尽量将Pod部署到相同拓扑
