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

2024-05-15 02:32

本文主要是介绍基于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.12COPY 可执行文件 /usr/local/binWORKDIR /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-schedulerplugins:filter:enabled:- name: 你的插件名称
#plugins部分按需修改

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

 

 

 

 

 

 

 

 

 

这篇关于基于scheduler framework的Kubernetes调度插件开发方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/990553

相关文章

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

解决Entity Framework中自增主键的问题

《解决EntityFramework中自增主键的问题》:本文主要介绍解决EntityFramework中自增主键的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录Entity Framework中自增主键问题解决办法1解决办法2解决办法3总结Entity Fram

CnPlugin是PL/SQL Developer工具插件使用教程

《CnPlugin是PL/SQLDeveloper工具插件使用教程》:本文主要介绍CnPlugin是PL/SQLDeveloper工具插件使用教程,具有很好的参考价值,希望对大家有所帮助,如有错... 目录PL/SQL Developer工具插件使用安装拷贝文件配置总结PL/SQL Developer工具插

maven中的maven-antrun-plugin插件示例详解

《maven中的maven-antrun-plugin插件示例详解》maven-antrun-plugin是Maven生态中一个强大的工具,尤其适合需要复用Ant脚本或实现复杂构建逻辑的场景... 目录1. 核心功能2. 典型使用场景3. 配置示例4. 关键配置项5. 优缺点分析6. 最佳实践7. 常见问题

MyBatis分页插件PageHelper深度解析与实践指南

《MyBatis分页插件PageHelper深度解析与实践指南》在数据库操作中,分页查询是最常见的需求之一,传统的分页方式通常有两种内存分页和SQL分页,MyBatis作为优秀的ORM框架,本身并未提... 目录1. 为什么需要分页插件?2. PageHelper简介3. PageHelper集成与配置3.

Maven 插件配置分层架构深度解析

《Maven插件配置分层架构深度解析》:本文主要介绍Maven插件配置分层架构深度解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Maven 插件配置分层架构深度解析引言:当构建逻辑遇上复杂配置第一章 Maven插件配置的三重境界1.1 插件配置的拓扑

Idea插件MybatisX失效的问题解决

《Idea插件MybatisX失效的问题解决》:本文主要介绍Idea插件MybatisX失效的问题解决,详细的介绍了4种问题的解决方法,具有一定的参考价值,感兴趣的可以了解一下... 目录一、重启idea或者卸载重装MyBATis插件(无需多言)二、检查.XML文件与.Java(该文件后缀Idea可能会隐藏

Android 12解决push framework.jar无法开机的方法小结

《Android12解决pushframework.jar无法开机的方法小结》:本文主要介绍在Android12中解决pushframework.jar无法开机的方法,包括编译指令、框架层和s... 目录1. android 编译指令1.1 framework层的编译指令1.2 替换framework.ja

Linux之计划任务和调度命令at/cron详解

《Linux之计划任务和调度命令at/cron详解》:本文主要介绍Linux之计划任务和调度命令at/cron的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux计划任务和调度命令at/cron一、计划任务二、命令{at}介绍三、命令语法及功能 :at

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时