Pod的生命周期

一、初始化阶段
  1. 创建Pod:用户通过kubectl或其他API客户端提交Pod的创建请求给apiServer。apiServer接收到请求后,会生成Pod对象的信息,并将其存入etcd,然后返回确认信息至客户端。
  2. 调度Pod:scheduler监控到新的Pod对象后,会为其分配主机节点,并将结果信息更新至apiServer。
  3. 启动容器:node节点上的kubelet发现Pod被调度到本节点后,会尝试调用Docker(或其他容器运行时)启动容器。在这个阶段,Pod可能会包含初始化容器(Init Containers),这些容器在主容器启动之前运行,主要用于做一些前置工作,如配置环境变量、拉取配置文件等。
二、运行阶段
  1. 容器启动:Pod中的所有容器(包括初始化容器和主容器)启动后,Pod进入运行状态。在这个阶段,Pod可能会经历一些钩子事件,如容器启动后钩子(postStart)和容器终止前钩子(preStop)。
  2. 健康状态诊断:Kubernetes会对Pod的健康状态进行持续诊断,包括启动探测(StartupProbe)、存活性探测(LivenessProbe)和就绪性探测(ReadinessProbe)。这些探测用于确保Pod中的容器能够正常运行并准备好接受流量。
  3. 重启策略:如果Pod中的容器因为某些原因退出,kubelet会根据Pod的重启策略(restartPolicy)来决定是否重启容器。重启策略包括Always(总是重启)、OnFailure(仅在失败时重启)和Never(从不重启)。
三、终止阶段
  1. 删除Pod:用户通过kubectl或其他API客户端提交删除Pod的请求给apiServer。apiServer接收到请求后,会更新Pod对象的状态,并将其标记为terminating。
  2. 宽限期:在Pod被标记为terminating后,会进入一个宽限期(默认为30秒)。在这个宽限期内,Pod中的容器会尝试优雅地终止。如果定义了preStop钩子,它会在容器接收到终止信号之前执行。
  3. 强制终止:如果宽限期结束后,Pod中仍有容器在运行,kubelet会请求apiServer将Pod的宽限期设置为0,从而强制终止剩余的容器。此时,Pod对象也会被从etcd中删除,对于用户来说,Pod已经不可见。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值