k8s Pod 的生命周期

举报
剑指南天 发表于 2026/10/13 19:51:53 2026/10/13
【摘要】 Pod(容器组) 的设计理念是支持多个容器在一个 Pod 中共享网络地址和文件系统,可以通过进程间通信和文件共享这种简单高效的方式组合完成服务。Pod 可以被分为自主式的 Pod 和控制器管理的 Pod。这里主要研究的是自主式 Pod 的生命周期。

1.概述

Pod(容器组) 的设计理念是支持多个容器在一个 Pod 中共享网络地址和文件系统,可以通过进程间通信和文件共享这种简单高效的方式组合完成服务。Pod 可以被分为自主式的 Pod 和控制器管理的 Pod。这里主要研究的是自主式 Pod 的生命周期。

2. Pod 的生命周期

3. 初始化容器 InitContainer

Init Container 是在主容器启动之前运行的特殊容器,用来做初始化工作。

  • 一个 Pod 可以有多个 Init Container
  • 按顺序执行,前一个成功,后一个才启动
  • 全部执行成功后,主容器才启动
  • 如果任意一个失败,Pod 会重启(或一直重试,取决于 restartPolicy)

4. 启动探针 Startup

k8s 1.16 版本新增的探针,用于判断应用程序是否已经启动。当配置了 startupProbe 后,会先禁用其他探针,直到 startupProbe 成功后,其他探针才会生效。

4.1 Pod 文件配置

4.2 startupProbe 完成后,其他探针才开始工作

5. 就绪探针 Readiness

指示容器是否准备好接受服务请求。如果探测失败,将从与 Pod 匹配的所有 Service 中删除该 Pod 的 ip 地址。

5.1 Pod 配置文件

5.2 通过 Pod 的内部 ip 访问 nginx 服务,nginx 服务正常

5.3 通过 Service 服务访问 nginx 服务。因为 readiness 探针未完成,所以 nginx 服务访问失败。但 readiness 探针完成后,通过 Service 服务访问 nginx 服务正常

6. 存活探针 Liveness

指示容器是否正在运行。如果存活探测失败,则 kubelet 会杀死容器,并且容器将受到其重启策略影响。

6.1 Pod 配置文件

6.2 Pod 反复重启

6.3 将 started.html 复制到目标容器的目录,Pod 不再重启


7. Start 钩子函数 postStart 和 Stop 钩子函数 preStop

7.1 Pod 配置文件

7.2 postStart 验证

容器创建完成后执行对应动作。但是不能保证该操作一定执行。

7.3 preStop 验证

容器停止前执行对应的动作。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。