k8s调度器如何自定义插件执行顺序

kube-scheduler Configuration (v1)官方文档

https://kubernetes.io/docs/reference/config-api/kube-scheduler-config.v1/

调度配置实例

apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
profiles:
  - schedulerName: default-scheduler
  - schedulerName: no-scoring-scheduler
    plugins:
      preScore:
        disabled:
        - name: '*'
      score:
        disabled:
        - name: '*'

调度器插件执行顺序

1、如果某个扩展点没有配置对应的扩展,调度框架将使用默认插件中的扩展

2、如果为某个扩展点配置且激活了扩展,则调度框架将先调用默认插件的扩展,再调用配置中的扩展

3、默认插件的扩展始终被最先调用,然后按照 KubeSchedulerConfiguration 中扩展的激活
   enabled 顺序逐个调用扩展点的扩展

4、可以先禁用默认插件的扩展,然后在 enabled 列表中的某个位置激活默认插件的扩展,
   这种做法可以改变默认插件的扩展被调用时的顺序

扩展自定义插件

下面的例子中的配置启用了一个实现了 reserve 和 preBind 扩展点的插件,并且禁用了另外一个插件,同时为插件 foo 提供了一些配置信息:

apiVersion: kubescheduler.config.k8s.io/v1alpha1
kind: KubeSchedulerConfiguration

...

plugins:
  reserve:
    enabled:
    - name: foo
    - name: bar
    disabled:
    - name: bar
  preBind:
    enabled:
    - name: foo
    disabled:
    - name: bar

pluginConfig:
- name: foo
  args: >
    foo插件可以解析的任意内容

如何自定义插件的执行顺序

假设默认插件 foo 实现了 reserve 扩展点,此时我们要添加一个插件 bar,想要在 foo 之前被调用,则应该先禁用 foo 再按照 bar foo 的顺序激活。示例配置如下所示:

apiVersion: kubescheduler.config.k8s.io/v1alpha1
kind: KubeSchedulerConfiguration

...

plugins:
  reserve:
    enabled:
    - name: bar
    - name: foo
    disabled:
    - name: foo
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐