当前位置: 首页 > news >正文

【3.2】pod详解—— Pod的相位(phase)状态(status)

文章目录

    • Pod的相位(phase)&状态(status)
      • Pod 的相位
      • Pod的status

Pod的相位(phase)&状态(status)

通过前面的学习,我们已经知道了,容器的服务是运行在Pod中的,那么我们如何知道这个Pod目前的状态是什么呢,这个pod是否启动成功了,我们会想到这肯定会有一个什么标识来确定,那么现在我们就来看看。

为什么这里的标题是用“&”而不是“/”连接的呢?事实上这两个名词代表的并不一样,但很多时候我们可能会混淆,为了让初学的我们能够正确理解,索性放在一起了。确保不要将 Status(kubectl 用于用户直觉的显示字段)与 Pod 的 phase 混淆。 Pod 阶段(phase)是 Kubernetes 数据模型和 Pod API 的一个明确的部分

  • 我可以提前告诉你,Pod Phase (status.phase) 是 Pod 一个“摘要状态”,而 Pod Status (.status 对象) 是 Pod 所有运行时状态的“详细总表”。它们不是对立的,是包含关系。
  • 没错,.status.phase.status 都是用来描述 Pod 状态的,只是它们描述的“层级”不同、用途不同。

✅ 主播你说的“层级不同”我还是没完全听懂?

那我这样解释你就明白了:

  • 容器运行时会生成一个详细的“状态报告”,这就是 status,里面记录了容器是否准备就绪、有没有报错、是否被杀死、重启了几次等等。

  • 然后 Kubernetes 会从这个详细报告中总结一句话,归纳成几个词,比如 “正在运行”、“运行失败”、“正在调度中” —— 这就是 phase

  • 类比一下人类健康:

    • 我们说这个人在几时几分由于什么病引起什么贷方衰竭后死亡,这就是status
    • 那么这时候phase就是简单的两个字"死亡"
  • 这还听不懂那就站着听课吧😋

Pod 的相位

Pod的相位(phase),看似高大上的名字,说白了phase就是对Pod的状态进行描述的

下面是 phase 可能的值:

取值描述
Pending(悬决)Pod 已被 Kubernetes 系统接受,但有一个或者多个容器尚未创建亦未运行。此阶段包括等待 Pod 被调度的时间和通过网络下载镜像的时间。
Running(运行中)Pod 已经绑定到了某个节点,Pod 中所有的容器都已被创建。至少有一个容器仍在运行,或者正处于启动或重启状态。
Succeeded(成功)Pod 中的所有容器都已成功结束,并且不会再重启。
Failed(失败)Pod 中的所有容器都已终止,并且至少有一个容器是因为失败终止。也就是说,容器以非 0 状态退出或者被系统终止,且未被设置为自动重启。
Unknown(未知)因为某些原因无法取得 Pod 的状态。这种情况通常是因为与 Pod 所在主机通信失败。

具体来说,Pod 遵循预定义的生命周期,起始于 Pending 阶段, 如果至少其中有一个主要容器正常启动,则进入 Running,之后取决于 Pod 中是否有容器以失败状态结束而进入 Succeeded 或者 Failed 阶段。

Pod的status

Pod 有一个 PodStatus 对象,其中包含一个 PodCondition 数组。 PodCondition 数组的每个元素都有一个 type 字段和一个 status 字段。type 字段是字符串,可能的值有PodScheduled、Ready、Initialized 和 Unschedulable。status 字段是一个字符串,可能的值有 True、False 和 Unknown。

所以,你已经知道了,首先status 是一个结构体,不是单一的“状态值”,所以我们刚刚的phase也是他的一个字段

字段名类型含义举例
phase字符串Pod 的生命周期阶段RunningPending
conditions数组Pod 的各类布尔状态判断Ready, Initialized 等
containerStatuses数组每个容器的详细运行状态Running, Waiting
hostIP字符串Pod 所在节点的 IP 地址192.168.1.101
podIP字符串Pod 本身的 IP 地址10.244.0.5
startTime时间戳Pod 启动的时间2025-04-23T…
message字符串Pod 状态说明文字容器拉取失败
reason字符串状态产生的原因(可供判断或排错)CrashLoopBackOff

我们再看一个status字段(重点关注里面的phase字段)

status:phase: Running                        # 🟢 Pod 当前生命周期阶段的“总结性状态” 表示容器至少已启动成功过一次conditions:                           # 🔍 Pod 的各种布尔状态- type: Ready                       # 类型:Pod 是否就绪status: False                     # ❌ 当前不就绪containerStatuses:                    # 🔎 每个容器的详细状态- name: myapp                       # 容器名state:                            # 当前状态结构waiting:                        # 容器现在处于 waiting 状态reason: CrashLoopBackOff      # 等待原因是崩溃重启回退restartCount: 5                   # 容器已经重启了 5 次

听懂掌声👏

http://www.xdnf.cn/news/108559.html

相关文章:

  • Linux常用指令
  • 小刚说C语言刷题——1338求圆环的面积
  • C++二分法详解
  • el-table 目录树列表本地实现模糊查询
  • Linux部署Redis主从
  • 天梯-零头就抹了吧
  • 实操Obsidian+Ollama+deepseek构建本地知识库
  • C语言五子棋项目
  • [计算机科学#1]:计算机的前世今生,从算盘到IBM的演变之路
  • flex布局说明
  • 百万点数组下memset、memcpy与for循环效率对比及原理分析
  • 经典算法 小数点后的第n位
  • 语音合成之四基于LLM的语音合成
  • Sql刷题日志(day5)
  • JVM理解(通俗易懂)
  • 2025年渗透测试面试题总结-拷打题库14(题目+回答)
  • 时间自动填写——电子表格公式的遗憾(DeepSeek)
  • A13 自定义系统服务使用总结
  • Kafka集群
  • ABP-Book Store Application中文讲解 - Part 0:开发环境搭建
  • 意见反馈留言二维码制作
  • leetcode-枚举
  • Langchain coercion简介
  • deeplab语义分割训练自定数据集
  • leve1.4
  • LLama Factory从入门到放弃
  • iThenticate英文查重系统怎么用?
  • 【AI论文】在非政策指导下学习推理
  • 中药企业数字化转型:从传统制造到智能制药的跨越
  • 3D模型格式转换工具HOOPS Exchange 2025.3.0更新:iOS实现Rhino格式支持!