pod生命周期、创建、终止状态

前言

环境:centos7.9 docker-ce-20.10.9 kubernetes-version v1.22.6

pod的生命周期

pod的生命周期,如图所示:
pod生命周期、创建、终止状态_第1张图片

pod创建过程

1、用户通过kubectl或其他api客户端工具提交需要创建的pod信息给apiserver
2、apiserver开始生成pod对象信息,并将信息存入etcd,然后返回确认信息给客户端
3、apiserver开始反馈etcd中pod对象的变化,其他组件使用watch机制跟踪apiserver上的变动
4、scheduler发现有新的pod对象要创建,开始调用内部算法机制为pod分配主机,并将结果信息更新至apiserver
5、node节点上的kubectl发现有pod调度过来,尝试调用docker启动容器,并将结果反馈apiserver
6、apiserver将收到的pod状态信息存入etcd中。

pod的终止过程

1、用户向apiserver发送删除pod对象的命令
2、apiserver中的pod对象信息会随着时间的推移而更新,在宽限期内(默认30s),pod被视为dead
3、将pod标记为terminating状态
4、kubectl在监控到pod对象为状态了就会启动pod关闭过程
5、endpoint控制器监控到pod对象的关闭行为时将其从所有匹配到此endpoint的server资源endpoint列表中删除
6、如果当前pod对象定义了preStop钩子处理器,则在其被标记为terminating后会意同步的方式启动执行
7、pod对象中的容器进程收到停止信息
8、宽限期结束后,若pod中还存在运行的进程,那么pod对象会收到立即终止的信息
9、kubelet请求apiserver将此pod资源的宽限期设置为0从而完成删除操作,此时pod对用户已不可见

pod生命周期的5中状态(也称5种相位)

Pending(挂起):API server已经创建pod,但是该pod还有一个或多个容器的镜像没有创建,包括正在下载镜像的过程;
Running(运行中):Pod内所有的容器已经创建,且至少有一个容器处于运行状态、正在启动括正在重启状态;
Succeed(成功):Pod内所有容器均已退出,且不会再重启;
Failed(失败):Pod内所有容器均已退出,且至少有一个容器为退出失败状态
Unknown(未知):某于某种原因apiserver无法获取该pod的状态,可能由于网络通行问题导致;

你可能感兴趣的:(kubernetes,kubernetes,docker,容器)