Pod生命周期大白话理解

发布时间:2026/7/30 11:48:33

Pod生命周期大白话理解 一、Pod出生到死亡一共就三步Pause容器出生 → Init容器干活 → 主容器上班二、Pause容器“房东”每个Pod一创建最先启动的就是Pause容器它的作用是租个房子网络栈、存储卷后面的容器都住进来这个房东跟Pod同生共死Pod在它就在Pod没了它也没了三、Init容器“临时工”Pause把房子租好后Init容器就进场了它们是临时工干完活就走。特点记住这3条就够了排队干活不并行比如有2个Init容器必须第1个干完退出了第2个才能开始。 就像排队上厕所前面的人不出来后面的只能等着。退出码必须为0表示成功如果返回的是1或者其他非0数字就表示我干砸了K8s会重新启动这个Init容器从头再来。 就像考试不及格得补考补考不过继续考直到及格为止。一个失败全部重来如果第2个Init容器失败了那么第1个也会被干掉然后全部重新开始。 就像接力赛有一棒掉棒了整个队伍回起点重跑。为什么要用它可以在主容器启动前做初始化工作比如创建配置文件、下载依赖可以阻塞主容器的启动等到条件满足才放行比如等数据库准备好了再启动Web服务四、主容器“正式员工”所有Init容器都成功退出后主容器才开始启动。主容器可以有多个它们并行运行。主容器有两大法宝钩子和探针一钩子Hook—— “开机/关机时干点额外的事”postStart启动后钩子容器刚启动时执行可以干一些初始化的活儿比如写个配置文件。⚠️ 注意它和容器的主进程是同时运行的不保证谁先完成。 就像你电脑开机后桌面还没完全加载但后台已经在启动杀毒软件了。preStop关闭前钩子容器被关闭之前执行用来善后比如保存数据、通知其他服务我要下线了。它执行完毕后才会真正发信号关闭容器。 就像下班前先写好日报、关好电脑再走人。二探针Probe—— “定时体检”探针由kubelet每个节点上的管家定期执行用来检查容器的健康状态。探针类型大白话解释探测失败后怎么办启动探针startupProbe“你启动好了没”探测失败就继续等不会重启存活探针livenessProbe“你还活着吗”探测失败就重启容器救死扶伤就绪探针readinessProbe“你能接客了吗”探测失败就不把流量分给你先养病好了再接客生活类比启动探针你刚进公司HR问你入职手续办完了吗——没办完就一直问不问别的。存活探针老板每天看你在工位上吗——不在就打电话催你回来重启。就绪探针前台问你能接待客户了吗——不能就先不给你安排客户等你准备好了再说。五、三者关系启动探针特别重要容器启动 ↓ 【启动探针】开始探测 ← 在此期间存活探针和就绪探针都处于休眠状态 ↓ 探测成功后 【存活探针】 【就绪探针】开始工作 ↓ 存活探针一直问你还活着吗 就绪探针一直问你能接客吗为什么要有启动探针因为有些应用启动慢比如Java应用如果一上来就用存活探针去问你还活着吗它可能还没启动好就被判定为死了然后被重启陷入无限重启的死循环。启动探针的存在就是给容器一个缓冲期等它真正启动好了其他探针再上场。六、Pod调度全过程一句话总结你敲命令 → API Server验证身份 → 存到etcd数据库 → Scheduler调度员选个合适的节点 → 节点上的kubelet管家拉镜像、创建容器 → Pod状态从Pending变成Running七、一张图帮你串起来脑补版【Pause容器】——房东先租房 ↓ 【Init容器1】——临时工1排队干活退出码0才走 ↓ 【Init容器2】——临时工2等1干完才轮到我 ↓ 全部成功退出 【主容器启动】 ↓ postStart钩子开机干点杂活 ↓ 启动探针你启动好了没→ 成功后 ↓ 存活探针你还活着吗 就绪探针你能接客吗同时工作 ↓某天要关闭Pod了 preStop钩子关机前把数据存一下 ↓ 发送关闭信号 → 容器退出核心记忆口诀Pause先租房Init排队干主容器上班钩子管两头启动和关闭探针管健康启动/存活/就绪启动探针打前站存活救死扶伤就绪决定能不能接客

相关新闻