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生命周期管理,与容器运行时协作。
  • 声明式设计:各组件通过监听和更新资源状态,实现最终一致性。
相关推荐
阿里云云原生3 小时前
Agent 观测与优化三城巡演丨第二站深圳精彩回顾 & PPT 下载
云原生
Henry-SAP6 小时前
AI产业迎来标准化与商业化双突破
人工智能·云原生·sap·erp
IT大白鼠7 小时前
Docker 实战 ELKF 日志监控:容器日志全栈收集分析方案
运维·docker·容器
报错小能手17 小时前
Kubernetes入门实战课 3
云原生·容器·kubernetes
2601_9622190119 小时前
版本平滑升级架构:万象生鲜系统 V4.3.3 迭代无停机更新技术拆解
微服务·云原生·架构
小张同学a.19 小时前
Docker 容器实战 1—— docker 基础与镜像构建
linux·运维·docker·容器
NJCloud20 小时前
Docker 容器技术入门:部署、核心概念与基础命令
运维·docker·容器
2601_9620723320 小时前
docker自建rustdesk-server远程桌面
运维·docker·容器
阿里云云原生20 小时前
深入解析 STAROps 瑶池 Agent:如何实现从应用告警到数据库命令级的全栈 RCA?
云原生
阿里云云原生20 小时前
告别手工配置:利用 Migration Skill 实现 Nginx Ingress 注解的智能分析与自动转换
云原生