基于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

相关文章

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略 1. 特权模式限制2. 宿主机资源隔离3. 用户和组管理4. 权限提升控制5. SELinux配置 💖The Begin💖点点关注,收藏不迷路💖 Kubernetes的PodSecurityPolicy(PSP)是一个关键的安全特性,它在Pod创建之前实施安全策略,确保P

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

什么是Kubernetes PodSecurityPolicy?

@TOC 💖The Begin💖点点关注,收藏不迷路💖 1、什么是PodSecurityPolicy? PodSecurityPolicy(PSP)是Kubernetes中的一个安全特性,用于在Pod创建前进行安全策略检查,限制Pod的资源使用、运行权限等,提升集群安全性。 2、为什么需要它? 默认情况下,Kubernetes允许用户自由创建Pod,可能带来安全风险。

容器编排平台Kubernetes简介

目录 什么是K8s 为什么需要K8s 什么是容器(Contianer) K8s能做什么? K8s的架构原理  控制平面(Control plane)         kube-apiserver         etcd         kube-scheduler         kube-controller-manager         cloud-controlle

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟

Spring Framework系统框架

序号表示的是学习顺序 IoC(控制反转)/DI(依赖注入): ioc:思想上是控制反转,spring提供了一个容器,称为IOC容器,用它来充当IOC思想中的外部。 我的理解就是spring把这些对象集中管理,放在容器中,这个容器就叫Ioc这些对象统称为Bean 用对象的时候不用new,直接外部提供(bean) 当外部的对象有关系的时候,IOC给它俩绑好(DI) DI和IO

Maven(插件配置和生命周期的绑定)

1.这篇文章很好,介绍的maven插件的。 2.maven的source插件为例,可以把源代码打成包。 Goals Overview就可以查看该插件下面所有的目标。 这里我们要使用的是source:jar-no-fork。 3.查看source插件的example,然后配置到riil-collect.xml中。  <build>   <plugins>    <pl

jenkins 插件执行shell命令时,提示“Command not found”处理方法

首先提示找不到“Command not found,可能我们第一反应是查看目标机器是否已支持该命令,不过如果相信能找到这里来的朋友估计遇到的跟我一样,其实目标机器是没有问题的通过一些远程工具执行shell命令是可以执行。奇怪的就是通过jenkinsSSH插件无法执行,经一番折腾各种搜索发现是jenkins没有加载/etc/profile导致。 【解决办法】: 需要在jenkins调用shell脚

Jenkins 插件 地址证书报错问题解决思路

问题提示摘要: SunCertPathBuilderException: unable to find valid certification path to requested target...... 网上很多的解决方式是更新站点的地址,我这里修改了一个日本的地址(清华镜像也好),其实发现是解决不了上述的报错问题的,其实,最终拉去插件的时候,会提示证书的问题,几经周折找到了其中一遍博文