从零开始的Linux运维屌丝之路,资源免费分享平台   运维人员首选:简单、易用、高效、安全、稳定、社区活跃的开源软件

pod创建过程和删除过程

发布:蔺要红11-12分类: K8S


Kubernetes 通过watch的机制进行每个组件的协作,每个组件之间的设计实现了解耦

K8S 集群中Pod创建过程




1. 用户使用create yaml创建pod,请求给API Server,API Server将yaml中的属性信息(meta data)写入ETCD
2. API Server触发watch机制准备创建pod,信息转发给Scheduler,Scheduler使用调度算法选择node,Scheduler将node信息给API Server,API Server将绑定的node信息写入ETCD
3. API Server又通过watch机制,调用Kubelet,指定pod信息,触发docker run命 令创建容器
4. 创建完成之后反馈给Kubelet, Kubelet又将pod的状态信息给API Server,
5. API Server又将pod的状态信息写入ETCD

其中kubectl get pods命令调用的时etcd_的信息

注意:图中有三次write

  1. 元信息
  2. pod分配到哪个node
  3. 记录pod状态

K8S 集群中Pod的终止过程


1、用户发出删除 pod 命令
2、Pod 对象随着时间的推移更新,在宽限期(默认情况下30秒),pod 被视为“dead”状态
3、将 pod 标记为“Terminating”状态
4、第三步同时运行,监控到 pod 对象为“Terminating”状态的同时启动 pod 关闭过程
5、第三步同时进行,endpoints 控制器监控到 pod 对象关闭,将pod与service匹配的 endpoints 列表中删除
6、如果 pod 中定义了 preStop 钩子处理程序,则 pod 被标记为“Terminating”状态时以同步的方式启动执行;若宽限期结束后,preStop 仍未执行结束,第二步会重新执行并额外获得一个2秒的小宽限期
7、Pod 内对象的容器收到 TERM 信号
8、宽限期结束之后,若存在任何一个运行的进程,pod 会收到 SIGKILL 信号
9、Kubelet 请求 API Server 将此 Pod 资源宽限期设置为0从而完成删除操作

 
温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,如有侵权我会在24小时之内删除!

欢迎使用手机扫描访问本站