基于scheduler framework的Kubernetes调度插件开发方法

基于scheduler framework的Kubernetes调度插件开发方法

kubernetes源码版本:1.18.3

两种调度插件

调度插件有两种,一种是内置插件,也就是intree,一种是外置插件,也就是outtree

二者的区别:

     内置的插件,都在kubernetes/pkg/scheduler/framework/plugins/目录下,并需要在NewInTreeRegistry()方法中注册;

      外置的插件而外置的插件是怎么传递进来的呢?是在kube-scheduler的main方法中传进来的。

内置插件

开发步骤:

1.在/pkg/scheduler/framework/plugins目录下建立自己的插件文件夹,参考源码自带插件编写chajian.go,实现扩展点对应的接口

 

2.修改/pkg/scheduler/framework/plugins/registry.go 在NewInTreeRegistry增加插件注册

 

3.修改/pkg/scheduler/framework/plugins/legacy_registry.go 增加有关枚举和registerPredicateConfigProducer

 

4.修改/pkg/scheduler/algorithmprovider/registry.go,在相应的pluginSet里增加你自己实现的扩展

 

5.编译  make all WHAT=cmd/kube-scheduler,在./_output/bin目录中可以看到编译完成的kube-scheduler可执行文件

 

6.构建kube-scheduler镜像,直接使用原来的镜像作为基础镜像,覆盖/usr/local/bin里的kube-scheduler文件即可,

 

7.替换kube-scheduler镜像并进行测试

 

外置插件

开发步骤:

1.实现插件扩展点接口以及插件生成器New方法;

2.修改main方法,在NewSchedulerCommand()中传入你的插件;

3.编译

4.构建镜像

DockerFile:

FROM alpine:3.12

COPY 可执行文件 /usr/local/bin

WORKDIR /usr/local/bin
CMD ["kube-scheduler"]

5.替换k8s scheduler镜像,并把把配置文件挂载,kube-scheduler需要传入参数:--config=/etc/kubernetes/manifests/scheduler-config.yaml

scheduler-config.yaml如下:

apiVersion: kubescheduler.confg.k8s.io/v1beta1
kind: KubeSchedulerConfiguration
leaderElection:
  leaderElect: true
clientConnecttion:
  kubeconfig: "你的kubeconfig文件位置"
profiles:
- schedulerName: default-scheduler
  plugins:
    filter:
      enabled:
      - name: 你的插件名称
#plugins部分按需修改

参考 https://github.com/kubernetes-sigs/scheduler-plugins

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值