k8s 进阶实战笔记 | Pod 创建过程详解

Pod 创建过程详解

​

初始状态0

controller-manager、scheduler、kubelet组件通过 list-watch 机制与 api-server 通信并检查资源变化

第一步

用户通过 CLI 或者 WEB 端等方式向 api-server 发送创建资源的请求(比如:我要创建一个replicaset资源),api-server 会对这个请求做出认证、鉴权响应

  • 成功则继续下一步
  • 失败则返回错误信息给源头

第二步

api-server 将这次部署信息存放在数据库 etcd 中

第三步

etcd 上报这次部署信息给 api-server

第四步和第五步

api-server 接受到上报的部署信息后,controller-manager 通过list-watch 机制检查到新的部署信息,将部署信息加入内部工作队列,然后检查发现资源没有关联的 pod 信息等资源,启动对应的控制器创建相关资源,然后将这些创建的部署资源信息上报给 api-server

第六步

api-server 接收到上报信息后,将部署信息存放在 etcd 中

第七步

etcd 接收到创建部署Pod的信息后,再次上报给 api-server

第八步和第九步

api-server 接受到上报的部署信息后,scheduler通过list-watch 机制检查到新的pod部署信息,并通过预选以及优选策略算法,计算这次pod部署最终可调度的node节点,并上报给 api-server

第十步

api-server 将部署调度信息存放在 etcd 中

第十一步

etcd 接收到新的pod调度信息,再次上报给api-server

第十二步

kubelet也是通过 list-watch 机制来获取自身node上所要运行的pod清单,通过与自己的内部缓存进行比较,如果有新的资源就会触发钩子调用 CNI 、CRI、CSI等接口去启动容器和卷的挂载,然后启动 pod 容器

后续

kube-proxy 组件会为新创建的pod注册动态DNS到CoreDNS,给pod的svc添加iptables规则,用于服务发现和负载均衡,controller 会通过控制循环将当前 pod 状态与用户所期望状态一直对比,如果状态不同,则会修改为用户期望状态,亦或者删除重新创建pod

若不对,请指正

相关推荐
云-缩影2 小时前
拆解函数计算 Serverless GPU 部署 AI 模型:Flux 生图和语音复刻怎么跑的
人工智能·云原生·serverless
箓维4 小时前
TCP Socket的进阶实现
网络·笔记·tcp/ip
二哈赛车手4 小时前
新人笔记---hermes定时功能设计,具体讲解以及可优化点
java·人工智能·笔记·spring·ai·typescript
是枚小菜鸡儿吖4 小时前
Home Assistant跨品牌智能家居教程:Docker部署、米家接入、vivo桥接与远程访问
docker·容器·智能家居
星恒随风5 小时前
Linux网络编程:应用层协议究竟是什么?从网络计算器到TCP Socket抽象基类完整实现
linux·网络·笔记·tcp/ip
智学AI6 小时前
AI博主写作素材管理方法分享:资料归集、笔记关联与文档归档
人工智能·笔记
螺蛳粉 螺蛳粉7 小时前
第 02 篇:镜像分层与 containerd 2.x 实战:SystemdCgroup 与 pause 镜像配置踩坑(底座认知 02)
docker·云原生·容器·kubernetes·etcd·containerd·kube-apiserver
叼烟扛炮7 小时前
[LangChain] 学习笔记(02):LCEL 链式调用与动态模型配置实战
服务器·开发语言·网络·笔记·学习·langchain
weixin_448119947 小时前
Datawhale Jev Cookbook 202610 笔记5
笔记
wefg17 小时前
【Docker】镜像相关指令
运维·docker·容器