Kubernetes Pod 生命周期

news/2025/3/6 2:32:57/

Pod 生命周期是其从创建开始至终止退出的事件范围。

Pod 状态

  • Pending API server 创建了 Pod 对象并已存入 etcd 中,但尚未调度完成或仍处于从镜像仓库下载镜像的过程中。
  • Running Pod 已经被调度至某节点,并且所有容器都已经被 kubelet 创建完成。
  • Succeeded Pod 中所有的容器都已经成功终止并且不会被重启
  • Failed 所有容器都已经终止,但至少有一个容器终止失败。
  • Unknown API server 无法正常获取到 Pod 对象的状态信息,通常是由于无法与所在工作节点的 kubelet 通信导致。

Pod 创建过程

  1. 用户通过 kubectl 或其他 API 客户端提交 Pod 对象给 API server。
  2. API server 尝试将 Pod 对象的相关信息存入 etcd 中,写入操作完成后 API server 会返回确认信息至客户端。
  3. API server 开始反映 etcd 中的状态变化。
  4. 所有的 Kubernetes 组件均使用 watch 机制来跟踪检查 API server 上的相关变化。
  5. kube-scheduler 通过其 watcher 观察到 API server 创建了新的 Pod 对象但尚未绑定至任何节点。
  6. kube-scheduler 为 Pod 对象挑选一个工作节点并将结果更新至 API server。
  7. 调度结果由 API server 更新至 etcd,而且 API server 也开始反映此 Pod 对象的调度结果。
  8. Pod 被调度的目标工作节点上的 kubelet 尝试在当前节点上启动容器,并将容器的结果状态返回至 API server。
  9. API server 将 Pod 状态信息存入 etcd。
  10. 在 etcd 确认写操作完成后,API server 将确认信息发送至相关的 kubelet。

Pod 生命周期中的行为

用户可以为 Pod 对象定义其生命周期中的多种行为。

1. init container

在应用程序的主容器启动之前运行,常用于为主容器执行一些预操作

  1. init container 运行失败将不断重启直到成功完成。
  2. init container 按定义的顺序执行。

2. lifecycle hook

在关键时刻采取某种行动。

  1. postStart 容器创建完成之后立即运行,与容器的 ENTRYPOINT 异步。
  2. preStop 容器终止前立即运行,同步,在完成前会阻塞删除容器的操作。

探针

  • ExecAction 在 Pod 中执行命令,并根据返回的状态码进行诊断,状态码 0 表示成功。
  • TCPSocketAction 与 Pod 的某端口尝试建立 TCP 连接。
  • HTTPGetAction 通过指定路由发起 HTTP GET 请求诊断,响应码为 2xx 或 3xx 时成功。
  • liveness probe(存活性检测) 用于判断 Pod 是否处于 Running 状态,如果未通过,kubelet 将杀掉 Pod 并根据 restartPolicy 决定是否将其重启。
  • readness probe(就绪性检测) 用于判断 Pod 是否准备就去并可以对外提供服务,未通过检测 Service 会将其 IP 摘除。

重启

  1. Always 一终止就重启
  2. OnFailure 仅在 Pod 出现错误时才重启
  3. Never 从不

一旦 Pod 绑定到某个节点,将永远不会被重新绑定到另外一个节点,要么被重启,要么终止,直到节点挂掉或被删除。

Pod 终止过程

当用户提交删除请求后,系统会进行强制删除操作的宽限期倒计时,并将 TERM 信息发送给 Pod 对象的每个容器中的主进程。宽限期倒计时结束后,进程将收到强制终止的 KILL 信号,Pod 对象随即也由 API server 删除。

  1. 请求删除 Pod。
  2. API server 将 Pod 标记为 Terminating 状态。
  3. (与第 2 步同时进行)kubelet 在监控到 Pod 对象转为 Terminating 状态的同时启动 Pod 关闭过程。
  4. (与第 2 步同时进行)Service 将 Endpoint 摘除。
  5. 如果当前 Pod 对象定义了 preStop hook,则在其标记为 Terminating 后会以同步的方式执行,宽限期开始计时。
  6. Pod 中的容器进程收到 TERM 信号。
  7. 宽限期结束后,若进程仍在运行,会收到 SIGKILL 信号。
  8. kubelet 请求 API server 将此 Pod 对象的宽限期设置为 0 从而完成删除操作。

http://www.ppmy.cn/news/464637.html

相关文章

mysql攻城掠地_攻城掠地单机武将修改造出自己心目中大神.doc

?想造出自己心目中的大神,并让他们在三国大世界里面纵横天下无敌手的也可以来看看。玩厌了网络游戏,当你被土壕虐的苦不堪言的时候,想玩单机版来放松下自己受伤的小心灵的来看看(呵呵……) 测试单机版本:蒂芙尼攻城掠地单机完善版…

三国介绍

东汉末年政治腐败,统治阶级内部出现外戚和宦官之间争权夺位的斗争,相互轮番擅权,同时更加残酷地剥削压迫人民,皇族地主豪强强占土地,使之出现“馆舍布于州郡,田亩连于方国。”对人民加重征收赋税&#xff0…

网上三国

http://xf-www.hb.cninfo.net/sanguo/lishi/

微信攻城三国怎么找服务器,攻城三国怎么玩 新手FAQ常见问题答案汇总[图]

类型:策略卡牌 大小:269MB 评分:5.0 平台: 攻城三国怎么玩?很多小伙伴是第一次玩这种类型的游戏,下面友情小编为大家带来新手FAQ的常见问题答案汇总,看看能不能帮到大家哦~ 新手FAQ常见问题答案…

Java霸王的大陆梦幻版_三国志霸王的大陆,喜欢三国的进

三国是中国历史上英雄辈出的时代,《霸王的大陆》这款移植自Fc的战棋游戏更是中国手游java游戏的No.1!该游戏内容极其丰富,对玩家的要求很高,因此这完全是一款符合游戏高手要求的大型单机游戏。以下是这款游戏的核心攻略,只要稍加留…

三国兵器谱~

三国兵器谱~青龙偃月刀 青龙偃月刀,又名“冷艳锯”。刀长九尺五寸,重八十二斤,刀身上镶有蟠龙吞月的图案,因而得名。 正月初八,汜水关前。 十八镇诸侯的连营绵延百里,五颜六色的十几面大旗在西北风中迎风招…

街机三国服务器维护,街机三国,360街机三国官方网站-街机三国选区|街机三国攻略|街机三国开服表-360游戏中心...

亲爱的玩家: 您好,为保证服务器稳定运营,优化游戏体验,我们将在7月4日8点-9点对服务器进行停机维护更新。 游戏内容调整 游戏优化 1. 元素跨服掉落元素之令翻倍,并增加道具(天赋培养叶、天地人参果、高级营养液) 2. 2V2竞技周…

一个以东晋北伐为背景的战略战术类古代战争游戏

一个以东晋北伐为背景的战略战术类古代战争游戏 中国五千年历史,最让我觉得神秘,充满诱人之处的却是很多人不太了解的五胡乱华南北朝。说来好笑,对这段历史的偏好居然是因为自以为的那些不同凡响的人名。祖逖,刘琨,苟…