k8s调度的过程,各组件之间的配合解析

Kubernetes的调度过程涉及多个组件的协作,确保Pod被分配到合适的节点上运行。整个过程,各个组件各司其职,通过API Server协作,共同完成Pod的调度和运行。其中调度器负责决策,kubelet负责执行,控制器确保状态一致,etcd作为存储中枢,API Server作为通信枢纽。

图片描述如下:

文字描述如下:

1. ​用户提交Pod请求
  • 组件:​ kubectlAPI Serveretcd
  • 流程:​
    • 用户通过kubectl提交Pod配置。
    • kubectl将请求发送至API Server
    • API Server验证请求后,将Pod信息写入etcd,此时Pod状态为Pending(未调度)。
2. ​调度器检测未调度的Pod
  • 组件:​ SchedulerAPI Server
  • 流程:​
    • Scheduler通过Watch机制监听API Server,筛选nodeName为空的Pod。
    • 发现待调度Pod后,开始调度决策。
3. ​调度决策​
  • 组件:​ Scheduler
  • 流程:​
    • 过滤(Predicates):​ 排除不满足条件的节点(如资源不足、污点不容忍、节点Selector不匹配)。
    • 打分(Priorities):​ 对剩余节点评分(如资源均衡、亲和性策略),选择最优节点。
4. ​绑定Pod到目标节点
  • 组件:​ SchedulerAPI Serveretcd
  • 流程:​
    • Scheduler将目标节点信息通过API Server更新Pod配置。
    • API Server将更新后的Pod信息写入etcd
5. ​节点执行Pod创建
  • 组件:​ kubelet容器运行时kube-proxy
  • 流程:​
    • 目标节点的kubelet通过Watch监听到新Pod,调用容器运行时(如Docker/containerd)创建容器。
    • kubelet持续监控Pod状态,并上报至API Server
    • kube-proxy根据Service配置更新网络规则(如iptables/IPVS),确保Pod网络通信。
6. ​状态维护与故障处理
  • 组件:​ Controller ManagerAPI Server
  • 流程:​
    • Controller Manager中的控制器监控Pod状态,确保实际状态与期望一致。
    • 若节点故障,控制器触发重新调度流程,由Scheduler重新分配Pod。
7. ​其他协作机制
  • 存储卷绑定:​ PersistentVolume控制器管理存储卷与Pod的绑定。
  • 镜像拉取:​ kubelet根据ImagePullSecrets从镜像仓库拉取镜像。

用户 -> kubectl -> API Server -> etcd (存储Pod)

Scheduler (监听Pod/Node状态) -> API Server -> etcd (更新nodeName)

kubelet (创建容器) -> 容器运行时

kube-proxy (配置网络)

Controller Manager (确保状态一致)

组件协作示意图

关键点总结

  • API Server :作为集群的中枢,所有组件通过它与etcd交互。
  • Scheduler:仅负责决策,不直接操作Pod或节点。
  • kubelet:负责Pod生命周期管理,与容器运行时协作。
  • 声明式设计:各组件通过监听和更新资源状态,实现最终一致性。
相关推荐
40kuai2 小时前
kubernetes中数据存储etcd
容器·kubernetes·etcd
Harvey_D3 小时前
【部署K8S集群】 1、安装前环境准备配置
云原生·容器·kubernetes
伊成4 小时前
Docker 部署 Nginx 完整指南
nginx·docker·容器
江湖有缘8 小时前
【Docker项目实战】使用Docker部署Notepad轻量级记事本
docker·容器·notepad++
Wezzer10 小时前
k8s单master部署
云原生·容器·kubernetes
Tadas-Gao11 小时前
Java设计模式全景解析:从演进历程到创新实践
java·开发语言·微服务·设计模式·云原生·架构·系统架构
Python私教11 小时前
Docker in Test:用一次性的真实环境,终结“测试永远跑不通”魔咒
运维·docker·容器
ModelWhale13 小时前
“大模型”技术专栏 | 浅谈基于 Kubernetes 的 LLM 分布式推理框架架构:概览
分布式·kubernetes·大模型
UPToZ14 小时前
【Docker】搭建一个高性能的分布式对象存储服务 - MinIO
分布式·docker·容器
我不要放纵1 天前
docker
运维·docker·容器