狂自私

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

scheduler调度流程

Kubernetes 中的调度器(Scheduler)负责将 Pod 分配到合适的节点上。调度流程可以分为几个关键步骤,以下是详细的调度流程:

调度流程

  1. 监听 Pod 事件

    • 调度器通过 Kubernetes API 监听未调度的 Pod 事件。当一个 Pod 被创建且没有指定节点时,调度器会触发调度过程。
  2. 获取待调度的 Pod

    • 调度器从 API Server 获取待调度的 Pod 信息,包括其需求和限制(如资源请求、节点亲和性等)。
  3. 筛选节点

    • 调度器会根据 Pod 的要求和节点的能力进行筛选。这个过程通常包括以下几个方面:
      • 资源可用性:检查节点是否有足够的 CPU 和内存来满足 Pod 的请求。
      • 亲和性和反亲和性:检查 Pod 是否有特定的节点亲和性或反亲和性规则。
      • 污点和容忍:判断节点是否有污点,Pod 是否具有相应的容忍设置。
      • 其他约束:如节点选择器、Pod 安全策略等。
  4. 打分候选节点

    • 对于通过筛选的候选节点,调度器会为每个节点打分,评估它们的优劣。打分的标准可能包括:
      • 节点的资源利用率。
      • 节点的拓扑位置(如地理位置)。
      • 网络延迟等。
  5. 选择最佳节点

    • 调度器会根据打分结果选择一个最合适的节点来调度 Pod。通常选择得分最高的节点。
  6. 更新 Pod 状态

    • 一旦选择了节点,调度器会更新 Pod 的状态,将其绑定到选定的节点。这一过程会通过 API Server 完成,更新 Pod 的 spec.nodeName 字段。
  7. 通知 Kubelet

    • 选定节点的 Kubelet 会被通知该 Pod 现在可以在其上运行。Kubelet 随后会拉取容器镜像并启动 Pod。
  8. 监控和管理

    • 调度器持续监控集群状态,处理任何新的 Pod 调度请求或节点状态变化,确保集群的整体健康和负载均衡。

总结

Kubernetes 调度器通过一系列步骤,从监听 Pod 事件到选择合适的节点,确保 Pod 能够有效地在集群中运行。它利用资源请求、节点特性、亲和性/反亲和性、污点/容忍等多种因素来做出决策,以实现高效的资源利用和负载均衡。

posted on   狂自私  阅读(65)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示