Kubernetes 1.18版本如何修改自定义调度器的启用策略及调度权重
Kubernetes 1.18 调度策略配置指南
查看默认调度策略(default policies)
两种常用方式:
- 参考官方1.18版本源码定义:默认调度策略的过滤(predicate)、打分(priority)规则及默认权重均硬编码在1.18版本的调度器源码中,可直接对照版本对应的源码文档确认默认值。
- 本地导出运行时默认配置:在已经部署kube-scheduler的节点上,执行命令
导出的kube-scheduler --write-config-to /tmp/kube-scheduler-default.yaml/tmp/kube-scheduler-default.yaml文件中会包含当前版本所有生效的默认调度策略。
修改/覆盖调度策略与权重
Kubernetes 1.18 未支持beta版KubeSchedulerConfiguration,需通过自定义策略配置文件的方式修改,操作步骤如下:
- 编写自定义调度策略文件,支持YAML或JSON格式,示例结构如下:
apiVersion: v1 kind: Policy # 过滤规则:不需要的默认规则可删除,新增调度器的过滤规则可在此添加 predicates: - name: PodFitsResources - name: PodFitsHostPorts - name: MatchNodeSelector - name: PodToleratesNodeTaints # 打分规则:直接修改weight字段调整权重,新增调度器的打分规则可在此添加 priorities: - name: LeastRequestedPriority weight: 1 - name: BalancedResourceAllocation weight: 1 - name: NodeAffinityPriority weight: 3 # 此处将默认权重1调整为3 - name: ImageLocalityPriority weight: 1
如果要启用another scheduler的专属策略,直接将对应策略的名称添加到predicates或priorities列表中即可。
2. 修改kube-scheduler的启动参数,新增配置项:
--policy-config-file=<你的自定义策略文件的绝对路径>
- 重启kube-scheduler进程,新的调度策略就会生效。
如果需要同时运行默认调度器和自定义的another scheduler,还需要给自定义调度器设置独立的scheduler-name,创建Pod时在spec.schedulerName字段指定对应调度器名称,即可指定调度实例处理该Pod的调度任务。
内容的提问来源于stack exchange,提问作者moluzhui
相关产品推荐
相关产品推荐

