Volcano Scheduler组件

2023-12-19 12:59
文章标签 组件 scheduler volcano

本文主要是介绍Volcano Scheduler组件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

      • 简介
      • 工作流
      • Actions
        • enqueue
        • allocate
        • preempt
        • reclaim
        • backfill
      • Plugins
        • gang
        • conformance
        • DRF
        • nodeorder
        • predicates
        • priority
      • 配置
      • 如何查看Volcano scheduler的配置

简介

官网链接:https://volcano.sh/zh/docs/actions/

Volcano Scheduler是负责Pod调度的组件,它由一系列action和plugin组成。action定义了调度各环节中需要执行的动作;plugin根据不同场景提供了action 中算法的具体实现细节。Volcano scheduler具有高度的可扩展性,您可以根据需要实现自己的action和plugin。

工作流

在这里插入图片描述
Volcano scheduler的工作流程如下:

  1. 客户端提交的Job被scheduler观察到并缓存起来。
  2. 周期性的开启会话,一个调度周期开始。
  3. 将没有被调度的Job发送到会话的待调度队列中。
  4. 遍历所有的待调度Job,按照定义的次序依次执行enqueue、allocate、preempt、reclaim、backfill等动作,为每个Job找到一个最合适的节点。将该Job 绑定到这个节点。action中执行的具体算法逻辑取决于注册的plugin中各函数的实现。
  5. 关闭本次会话。

Actions

enqueue

Enqueue action负责通过一系列的过滤算法筛选出符合要求的待调度任务并将它们送入待调度队列。经过这个action,任务的状态将由pending变为inqueue。

allocate

Allocate action负责通过一系列的预选和优选算法筛选出最适合的节点。

preempt

Preempt action负责根据优先级规则为同一队列中高优先级任务执行抢占调度。

reclaim

Reclaim action负责当一个新的任务进入待调度队列,但集群资源已不能满足该任务所在队列的要求时,根据队列权重回收队列应得资源。

backfill

backfill action负责将处于pending状态的任务尽可能的调度下去以保证节点资源的最大化利用。

Plugins

gang

gang plugin认为未处于ready状态(包括Binding、Bound、Running、Allocated、Succeed、Pipelined)的任务具有更高的优先级。它会检查假如驱逐某 些任务回收队列部分应得资源后,该任务所属的Job中任务的运行数量是否满足minAvailable的要求,以决定是否执行驱逐动作。

conformance

conformance plugin认为命名空间kube-system下的任务具有更高的优先级。这些任务不能被抢占。

DRF

DRF plugin认为占用资源较少的任务具有更高的优先级。它会尝试计算已分配给抢占者和被抢占者的资源总量,并在抢占者资源资源份额更少时触发抢占行为。

nodeorder

nodeorder plugin通过一系列维度的打分算法,算出针对某个任务时所有的节点的得分情况。得分最高的节点被认为是针对该任务最合适的节点。

predicates

predictions plugin通过一系列维度的评估算法,决定某个任务是否适合被绑定到某个节点。

priority

priority plugin用于比较两个job或任务的优先级。它通过比较job.spec.priorityClassName来决定哪个job的优先级更高。对于两个任务,它会依次比较 task.priorityClassName、task.createTime、task.id in order来决定谁的优先级更高。

配置

由于Volcano scheduler采用了组合模式的设计,它具有高度的扩展性。用户可以根据个人需要决定使用哪些action和plugin,也可以根据action和plugin的 接口自定义实现。scheduler的配置位于名为volcano-scheduler-configmap的configmap内,该configmap被作为volume挂载在容器的/volcano.scheduler 路径下。

如何查看Volcano scheduler的配置

查看名为volcano-scheduler-configmap的configmap

[root@VM-0-16-centos ~]# kubectl get cm -nti-inf |grep volcano-scheduler
volcano-scheduler-configmap                          1      6d5h

查看configmap的data部分详情

以下配置为当前测试环境配置:生产环境配置建议先查阅资料了解action和plugin内容之后根据当前应用场景进行调配。
[root@VM-0-16-centos ~]# kubectl get cm -nti-inf volcano-scheduler-configmap -oyaml
apiVersion: v1
data:volcano-scheduler.conf: |actions: "enqueue, reserve, allocate, backfill, preempt"tiers:- plugins:- name: reserveresourcearguments:reserve.cpu: 2reserve.memory: 4Gi- plugins:- name: priority- name: gang- name: conformance- plugins:- name: predicates- name: nodeorderarguments:nodeaffinity.weight: 20podaffinity.weight: 20bizaffinity.weight: 20resourcefit.weight: 1leastrequested.weight: 0balancedresource.weight: 1imagelocality.weight: 1similaraffinity.weight: 1- name: preemptnodeorder
kind: ConfigMap
metadata:annotations:meta.helm.sh/release-name: volcanometa.helm.sh/release-namespace: ti-infcreationTimestamp: "2021-12-15T07:29:41Z"labels:app.kubernetes.io/managed-by: Helmname: volcano-scheduler-configmapnamespace: ti-infresourceVersion: "11213455"selfLink: /api/v1/namespaces/ti-inf/configmaps/volcano-scheduler-configmapuid: fb96b080-f946-45fe-8844-770c90c1790c

在volcano-scheduler.conf中主要包括actions和tiers两部分。在actions中,使用逗号作为分隔符配置各需要执行的action。需要注意的是,action的配置 顺序就是scheduler的执行顺序。Volcano本身不会对action顺序的合理性进行检查。tiers中配置的plugin列表即为注册到scheduler中的plugin。plugin中 实现的算法将会被action调用。
在这里插入图片描述

这篇关于Volcano Scheduler组件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

公共筛选组件(二次封装antd)支持代码提示

如果项目是基于antd组件库为基础搭建,可使用此公共筛选组件 使用到的库 npm i antdnpm i lodash-esnpm i @types/lodash-es -D /components/CommonSearch index.tsx import React from 'react';import { Button, Card, Form } from 'antd'

React+TS前台项目实战(十七)-- 全局常用组件Dropdown封装

文章目录 前言Dropdown组件1. 功能分析2. 代码+详细注释3. 使用方式4. 效果展示 总结 前言 今天这篇主要讲全局Dropdown组件封装,可根据UI设计师要求自定义修改。 Dropdown组件 1. 功能分析 (1)通过position属性,可以控制下拉选项的位置 (2)通过传入width属性, 可以自定义下拉选项的宽度 (3)通过传入classN

Transformers和Langchain中几个组件的区别

1.对于Transformers框架的介绍 1.1 介绍: transformers 是由 Hugging Face 开发的一个开源库,它提供了大量预训练模型,主要用于自然语言处理(NLP)任务。这个库提供的模型可以用于文本分类、信息抽取、问答、文本生成等多种任务。 1.2 应用场景: 文本分类:使用 BERT、RoBERTa 等模型进行情感分析、意图识别等。命名实体识别(NER):使用序列

怎么优化ArcEngine组件开发mfc程序界面?

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!! 问题描述   这种VS2015 + ArcEngine10.2开发的mfc小程序怎么优化界面,使系统看上去更美观 如上问题有来自我自身项目开发,有的收集网站

Vue3的Teleport:Teleport是Vue3的一个新功能,它允许我们将子组件渲染到父组件以外的地方,这在处理模态框、弹出窗口等情况时非常有用

I. Teleport 的概述 Teleport 的定义:   在 Vue 3.0 中,Teleport 是一个新的内置组件,它允许我们将任何部分的渲染内容 Teleport(传送)到 Vue 应用范围之外的地方。 换句话说,你可以控制片段,让它们在 DOM 中的任何位置渲染,而不仅仅是在当前组件内部。   Teleport 的效用和应用场景:   Teleport 的主要用途是处理在 UI

Spring响应式编程之Reactor核心组件

Reactor核心组件 Flux和Mono组件(1)Flux组件(2)Mono组件 Flux和Mono组件 Reactor 框架提供了两个核心组件来发布数据,分别是 Flux 和 Mono 组件。两者都是实现Publisher接口的高级抽象,可以说是应用程序开发过程中最基本的编程对象。二者都可以被onComplete信号或者onError信号所终止。 (1)Flux组件 表

windows server 2012 R2 安装桌面体验,安装ActiveSync时提示缺少Windows组件

第一步:启动《服务器管理器》 右键桌面上的"计算机",管理,打开服务器管理器 第二步:选择所有服务器,右键显示出来的服务器,添加角色和功能 第三步,在弹出的弹窗,一直点下一步下一步,到功能位置。 注意安装类型:选择“基于角色或基于功能安装” 然后 点击一下步 服务器选择 :操作: 无需配置,选择下一步 服务器角色:操作: 无需配置,选择下一步 功能 操作 选择 “用户界面和基础结构

vue组件之间传值方式 vue父子组件传值传参方法

https://www.cnblogs.com/lingdu87/p/9147555.html vue组件之间传值方式解析一.父组件传到子组件 1.父组件parent代码如下: <template><div class="parent"><h2>{{ msg }}</h2><son psMsg="父传子的内容:叫爸爸"></son> <!-- 子组件绑定psMsg变量--></div></t

React AntDesign Layout组件布局刷新页面错乱闪动

大家最近在使用React AntDesign Layout组件布局后刷新页面时,页面布局错乱闪动 经过组件属性的研究才发现,设置 hasSider 为 true 就能解决上面的问题,耽搁了半天的时间,接着踩坑接着加油!!! import { Layout, theme } from 'antd';import { Outlet } from "react-router-dom"impo

【React】高阶组件

概述 高阶组件并非一个组件,而是增强组件功能的一个函数。 高阶组件的作用是对多个组件公共逻辑进行横向抽离。 高阶组件 – React (reactjs.org) 示例 ChildCom1.jsx import React from 'react';function ChildCom1(props) {return (<div>这是子组件1<div>姓名:{props.name}<