Pod的创建过程原理

Pod的创建过程原理

  1.  首先,用户通过kubectl或web端向APIServer发送创建pod的请求;
  2. APIServer会做出认证/鉴权响应,然后检查信息并把数据存储到ETCD里,创建Deployment资源并初始化;
  3. controller-manager通过list-watch机制,检查发现新到Deployment,将资源加入到内部工作队列,然后检查发现资源没有关联的pod和replicaset,启用Deployment controller创建replicaset资源,再通过replicaset controller创建pod。
  4. controller-manager创建完成后将Deployment,replicaset,pod资源更新存储到etcd;
  5. scheduler也是通过list-watch机制,监测发现新的pod,并通过预选及优选策略算法,来计算出pod最终可调度的node节点,并通过APIServer将数据更新至etcd;
  6. kubectl 每隔20s(可以自定义)向APIServer通过NodeName获取自身Node上所要运行的pod清单;通过与自己内部缓存进行比较,如果有新的资源则触发钩子调用CNI接口给pod创建pod网络,调用CRI接口去启动容器,调用CSI进行存储卷的挂载,然后启动pod容器;
  7. kube-proxy为新创建的pod注册动态DNS到CoreOS。给pod的service添加iptables/ipvs规则,用于服务发现和负载均衡;
  8. Controller通过control loop(控制循环)将当前pod状态与用户所期望的状态做对比,如果当前状态与用户期望状态不同,则controller会将pod修改为用户期望状态,实在不行会将此pod删掉,然后重新创建pod。

 

posted @   逆风飞翔的博客  阅读(116)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
点击右上角即可分享
微信分享提示