第4天:kube scheduler
发布: (2025年12月11日 GMT+8 11:12)
3 min read
原文: Dev.to
Source: Dev.to
概述
Kubernetes 调度器决定每个 Pod 应该运行在哪个节点上。它不直接放置 Pod;相反,它为每个 Pod 记录目标节点。选定节点上的 Kubelet 负责实际创建 Pod。
调度器阶段
-
过滤(Fit 阶段)
调度器会剔除无法容纳该 Pod 的节点,例如:- 被 Pod 规范显式排除的节点。
- 缺少足够 CPU、内存或 Pod 所需其他资源的节点。
-
打分(Priority 阶段)
对剩余节点使用一个或多个优先级函数进行打分(例如,1–10 的尺度)。Pod 将被调度到得分最高的节点上。
定制化
- 可以自定义打分函数及其权重。
- 通过编写自己的打分逻辑,可以实现自定义调度器。
- 常见的决定因素包括:
- 资源请求和限制
- 污点(taints)和容忍(tolerations)
- 节点选择器
- 亲和性/反亲和性规则
安装
- 从 Kubernetes 发布页面 下载
kube-scheduler二进制文件。 - 解压二进制文件并放置在合适的目录(例如
/usr/local/bin)。 - 以服务方式运行它,指定调度器配置文件(例如
/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 或系统服务的形式进行安装和检查。