第4天:kube scheduler

发布: (2025年12月11日 GMT+8 11:12)
3 min read
原文: Dev.to

Source: Dev.to

概述

Kubernetes 调度器决定每个 Pod 应该运行在哪个节点上。它直接放置 Pod;相反,它为每个 Pod 记录目标节点。选定节点上的 Kubelet 负责实际创建 Pod。

调度器阶段

  1. 过滤(Fit 阶段)
    调度器会剔除无法容纳该 Pod 的节点,例如:

    • 被 Pod 规范显式排除的节点。
    • 缺少足够 CPU、内存或 Pod 所需其他资源的节点。
  2. 打分(Priority 阶段)
    对剩余节点使用一个或多个优先级函数进行打分(例如,1–10 的尺度)。Pod 将被调度到得分最高的节点上。

定制化

  • 可以自定义打分函数及其权重。
  • 通过编写自己的打分逻辑,可以实现自定义调度器。
  • 常见的决定因素包括:
    • 资源请求和限制
    • 污点(taints)和容忍(tolerations)
    • 节点选择器
    • 亲和性/反亲和性规则

安装

  1. Kubernetes 发布页面 下载 kube-scheduler 二进制文件。
  2. 解压二进制文件并放置在合适的目录(例如 /usr/local/bin)。
  3. 以服务方式运行它,指定调度器配置文件(例如 /etc/kubernetes/scheduler-config.yaml)。
# 示例:使用配置文件启动 kube-scheduler
kube-scheduler --config=/etc/kubernetes/scheduler-config.yaml

查看调度器

  • 作为静态 Pod:使用 kubeadm 部署时,调度器以 Pod 形式运行在 kube-system 命名空间。其清单位于 /etc/kubernetes/manifests/kube-scheduler.yaml
  • 作为进程:可以通过以下方式定位正在运行的调度器进程:
ps aux | grep kube-scheduler

总结

Kubernetes 调度器通过过滤和打分标准,将 Pod 匹配到最合适的节点。其行为可以通过内置策略或自定义扩展进行调优,并且可以以静态 Pod 或系统服务的形式进行安装和检查。

Back to Blog

相关文章

阅读更多 »

第5天:kubelet

概述:Kubelet 在 Kubernetes 类比中充当船长的角色。它请求加入集群所需的文档,充当节点与 control plane 之间唯一的联系点。

第3天:kube controller manager

概述 Kube Controller Manager 运行各种控制器,这些控制器持续监视 Kubernetes 集群中组件的状态,并努力将其恢复到期望的状态。