k8s中pod生命周期整理

文章详细阐述了Pod在Kubernetes中的创建和删除过程。创建时,用户提交PodSpec到APIServer,经过调度器选择节点,kubelet在选定节点上启动Pod。删除时,系统设置宽限期,发送TERM信号,之后是KILL信号,确保平滑终止。Pod的预停止钩子和宽限期管理着删除流程。
摘要由CSDN通过智能技术生成

文章目录


Pod是Kubernetes的基础单元,理解它的创建过程对于了解系统运作大有裨益

pod创建

在这里插入图片描述

1)用户通过kubectl或其他API客户端提交Pod Spec给API Server。
2)API Server尝试着将Pod对象的相关信息存入etcd中,待写入操作执行完成,API Server即会返回确认信息至客户端。
3)Scheduler(调度器)通过其watcher监测到API Server创建了新的Pod对象,于是为该Pod对象挑选一个工作节点并将结果信息更新至APIServer。
4)调度结果信息由API Server更新至etcd存储系统,并同步给Scheduler。
5)相应节点的kubelet监测到由调度器绑定于本节点的Pod后会读取其配置信息,并由本地容器运行时创建相应的容器启动Pod对象后将结果回存至API Server。
6)API Server将kubelet发来的Pod状态信息存入etcd系统,并将确认信息发送至相应的kubelet。

pod删除

另一方面,Pod可能曾用于处理生产数据或向用户提供服务等,Kubernetes可删除宽限期确保终止操作能够以平滑方式优雅完成,从而用户也可以在正常提交删除操作后获知何时开始终止并最终完成。删除时,用户提交请求后系统即会进行强制删除操作的宽限期倒计时,并将TERM信号发送给Pod对象中每个容器的主进程。宽限期倒计时结束后,这些进程将收到强制终止的KILL信号,Pod对象也随即由API Server删除。如果在等待进程终止的过程中kubelet或容器管理器发生了重启,则终止操作会重新获得一个满额的删除宽限期并重新执行删除操作。
在这里插入图片描述

1)用户发送删除Pod对象的命令。
2)API服务器中的Pod对象会随着时间的推移而更新,在宽限期内(默认为30秒),Pod被视为dead。
3)将Pod标记为Terminating状态。
4)(与第3步同时运行)kubelet在监控到Pod对象转为Terminating状态的同时启动Pod关闭过程。
5)(与第3步同时运行)端点控制器监控到Pod对象的关闭行为时将其从所有匹配到此端点的Service资源的端点列表中移除。
6)如果当前Pod对象定义了preStop钩子句柄,在其标记为terminating后即会以同步方式启动执行;如若宽限期结束后,preStop仍未执行完,则重新执行第2步并额外获取一个时长为2秒的小宽限期。
7)Pod对象中的容器进程收到TERM信号。
8)宽限期结束后,若存在任何一个仍在运行的进程,Pod对象即会收到SIGKILL信号。
9)Kubelet请求API Server将此Pod资源的宽限期设置为0从而完成删除操作,它变得对用户不再可见。默认情况下,所有删除操作的宽限期都是30秒,不过kubectl delete命令可以使用--grace-period=<seconds>选项自定义其时长,使用0值则表示直接强制删除指定的资源,不过此时需要同时为命令使用--force选项。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值