当前位置: 首页 > news >正文

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

若不对,请指正

http://www.lryc.cn/news/288747.html

相关文章:

  • 使用MMYOLO中yolov8训练自己VOC数据集实战
  • 解决方案 | 基于SFTP协议的文件传输断点续传Java实现方案
  • web前端项目-动画特效【附源码】
  • 蓝桥杯备战——6.串口通讯
  • Redis为什么速度快:数据结构、存储及IO网络原理总结
  • OSI七层模型 | TCP/IP模型 | 网络和操作系统的联系 | 网络通信的宏观流程
  • Java集合总览
  • C# 设置一个定时器函数
  • 第十四届蓝桥杯省赛pythonB组题。 管道
  • 淘宝扭蛋机小程序:新时代的互动营销与娱乐体验
  • 深度强化学习(王树森)笔记02
  • 【分布式技术专题】「分布式技术架构」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
  • 常用的gpt-4 prompt words收集8
  • 【GitHub项目推荐--开源2D 游戏引擎】【转载】
  • 鸿蒙APP的应用场景
  • goland课程管理(6)
  • 04.Elasticsearch应用(四)
  • Python之数据可视化(地图)
  • etcd技术解析:构建高可用分布式系统的利器
  • Pillow图像处理:从零开始的奇妙之旅
  • 设计一个LRU(最近最少使用)缓存
  • shell 循环语句
  • C++(1) 命名空间
  • 【机组】单元模块实验的综合调试与驻机键盘和液晶显示器的使用方式
  • React中实现虚拟加载滚动
  • vue中的Mutations
  • C#用 DateAndTime.DateAdd方法和DateTime.Add(TimeSpan) 方法分别添加一段时间间隔
  • 四、Kotlin 表达式
  • Web开发4:单元测试
  • Ubuntu 16 让ufw防火墙控制docker容器中所有端口