Pod的创建过程原理
Pod的创建过程原理
- 首先,用户通过kubectl或web端向APIServer发送创建pod的请求;
- APIServer会做出认证/鉴权响应,然后检查信息并把数据存储到ETCD里,创建Deployment资源并初始化;
- controller-manager通过list-watch机制,检查发现新到Deployment,将资源加入到内部工作队列,然后检查发现资源没有关联的pod和replicaset,启用Deployment controller创建replicaset资源,再通过replicaset controller创建pod。
- controller-manager创建完成后将Deployment,replicaset,pod资源更新存储到etcd;
- scheduler也是通过list-watch机制,监测发现新的pod,并通过预选及优选策略算法,来计算出pod最终可调度的node节点,并通过APIServer将数据更新至etcd;
- kubectl 每隔20s(可以自定义)向APIServer通过NodeName获取自身Node上所要运行的pod清单;通过与自己内部缓存进行比较,如果有新的资源则触发钩子调用CNI接口给pod创建pod网络,调用CRI接口去启动容器,调用CSI进行存储卷的挂载,然后启动pod容器;
- kube-proxy为新创建的pod注册动态DNS到CoreOS。给pod的service添加iptables/ipvs规则,用于服务发现和负载均衡;
- Controller通过control loop(控制循环)将当前pod状态与用户所期望的状态做对比,如果当前状态与用户期望状态不同,则controller会将pod修改为用户期望状态,实在不行会将此pod删掉,然后重新创建pod。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器