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生命周期管理,与容器运行时协作。
  • 声明式设计:各组件通过监听和更新资源状态,实现最终一致性。
相关推荐
勇哥的编程江湖4 小时前
starrocks官网docker部署mysql无法连接
运维·docker·容器
zoulingzhi_yjs6 小时前
haproxy配置详解
linux·云原生
qq_529835356 小时前
Zookeeper的简单了解
分布式·zookeeper·云原生
程序员小羊!9 小时前
Zookeeper 3.6.3【详细技术讲解】整
分布式·zookeeper·云原生
终端行者12 小时前
k8s之Ingress服务接入控制器
云原生·容器·kubernetes
不会敲代码的XW14 小时前
高可用集群KEEPALIVED的详细部署
运维·云原生
小裕哥略帅14 小时前
架构师--基于常见组件的微服务场景实战
微服务·云原生·架构
longxibo15 小时前
飞牛系统安装DataEase自定义Docker包
运维·docker·容器
Reggie_L15 小时前
Eureka-服务注册,服务发现
云原生·eureka·服务发现
学Linux的语莫17 小时前
k8s的nodeport和ingress
网络·rpc·kubernetes