当前位置: 首页 > news >正文

Kubernetes资源调度策略及实现机制

目录

一、资源调度策略

1.默认调度器(Default Scheduler)

2.自定义调度器(Custom Scheduler)

3.亲和性与反亲和性(Affinity and Anti-Affinity)

4.污点与容忍(Taint and Tolerations)

5.资源配额和限制(Resource Quotas and Limits)

6.优先级和抢占(Priority and Preemption)

7.多调度器(Multiple Schedulers)

二、资源调度机制实现原理

1.调度器组件(Scheduler Component)

2.调度队列(Scheduling Queue)

3.调度循环(Scheduling Cycle)

4.过滤阶段(Filtering Phase)

5.打分阶段(Scoring Phase)

6.节点绑定(Node Binding)

7.Pod条件(Pod Conditions)

8.抢占(Preemption)

9.扩展性(Extensibility)

10.事件和日志(Events and Logging)

11.回退机制(Fallback Mechanism)


Kubernetes(K8s)的资源调度策略是高度可配置和可扩展的,以适应不同类型的工作负载和集群配置。以下是Kubernetes中的关键资源调度策略和它们的实现机制

一、资源调度策略

1.默认调度器(Default Scheduler)

  • 预选阶段(Predicates):这一阶段会过滤掉无法满足Pod需求的节点。例如,如果节点的CPU或内存资源不足,或者不满足Pod的节点选择器(Node Selector)要求,那么该节点会被排除。
  • 优选阶段(Priorities):在预选阶段后,调度器会对剩余的节点进行评分,评分标准可能包括节点的资源空闲程度、Pod与节点的亲和性、节点上的Pod密度等。
  • 绑定阶段(Binding):选择得分最高的节点,并将Pod绑定到该节点上。

2.自定义调度器(Custom Scheduler)

用户可以编写自己的调度器,以实现特定的调度策略。自定义调度器可以与默认调度器并行运行,或者通过配置替换默认调度器。

3.亲和性与反亲和性(Affinity and Anti-Affinity)

  • 节点亲和性(Node Affinity):允许Pod指定对节点的偏好,例如,可以指定Pod只调度到具有特定标签的节点上。
  • Pod亲和性与反亲和性(Pod Affinity and Anti-Affinity):这些规则允许Pod根据其他Pod的运行位置来选择调度位置,或者避免与某些Pod运行在同一个节点上。

4.污点与容忍(Taint and Tolerations)

  • 污点(Taints):节点可以设置污点,以防止Pod调度到该节点上。例如,如果一个节点需要维护,可以给它添加一个污点。
  • 容忍(Tolerations):Pod可以定义容忍,以允许它们被调度到有相应污点的节点上。

5.资源配额和限制(Resource Quotas and Limits)

  • 资源配额(Resource Quotas):用于管理计算资源在命名空间级别的使用,可以限制Pod可以使用的资源总量。
  • 资源限制(Resource Limits):Pod可以设置资源请求(requests)和限制(limits),以确保它们在运行时得到足够的资源,并且不会超过某个最大值。

6.优先级和抢占(Priority and Preemption)

  • 优先级(Priority):Pod可以设置优先级,用于在资源不足时决定哪个Pod可以被抢占。
  • 抢占(Preemption):当高优先级的Pod无法调度时,调度器可能会终止低优先级的Pod以释放资源。

7.多调度器(Multiple Schedulers)

在大型集群中,可能需要多个调度器来处理不同类型的工作负载。例如,一个调度器可能专门用于在线服务,而另一个可能用于批处理作业。

总之,Kubernetes的资源调度是集群管理中的关键组成部分,它们确保了Pod可以有效地利用集群资源,同时满足特定的业务需求和约束。通过提供丰富的调度选项,Kubernetes能够适应各种复杂的应用场景。

二、资源调度机制实现原理

Kubernetes的资源调度内部实现机制涉及到多个组件和步骤。以下是一些关键的内部实现机制:

1.调度器组件(Scheduler Component)

Kubernetes调度器是一个独立的组件,它负责将Pods分配到集群中的节点上。调度器不断 watch API server,一旦有新的Pod被创建并且尚未被调度,调度器就会尝试为它找到一个合适的节点。

2.调度队列(Scheduling Queue)

调度器维护了一个待调度Pod的队列。这个队列中的Pod按照一定的优先级排序,确保高优先级的Pod先被调度。

3.调度循环(Scheduling Cycle)

调度器为每个待调度的Pod执行一个调度循环,这个循环包括两个主要步骤:过滤(Filtering)和打分(Scoring)。

4.过滤阶段(Filtering Phase)

在这个阶段,调度器会运行一系列预选规则(Predicates)来过滤出不能运行该Pod的节点。这些规则包括但不限于:节点是否有足够的资源、节点是否满足Pod的亲和性要求、节点是否有Pod所容忍的污点等。

5.打分阶段(Scoring Phase)

过滤阶段完成后,调度器会对剩余的节点进行打分。打分基于一系列优先级函数(Priorities),这些函数考虑了各种因素,如节点的资源空闲程度、Pod与节点的亲和性、节点上的Pod密度等。

6.节点绑定(Node Binding)

一旦调度器选出了最佳节点,它就会将该Pod绑定到该节点上。这个过程是通过更新Pod的API对象来完成的,将Pod的`spec.nodeName`字段设置为选中的节点名。

7.Pod条件(Pod Conditions)

调度器会检查Pod的状态和条件,以确保Pod可以正常运行。例如,如果Pod依赖于一个ConfigMap或Secret,调度器会确保这些资源已经准备好。

8.抢占(Preemption)

如果一个高优先级的Pod无法调度,调度器可能会启动抢占逻辑,尝试删除一些低优先级的Pod来为高优先级的Pod腾出空间。

9.扩展性(Extensibility)

Kubernetes调度器允许通过插件(Plugins)来扩展其功能。这些插件可以在过滤阶段和打分阶段被调用,以实现自定义的调度逻辑。

10.事件和日志(Events and Logging)

调度器会生成事件和日志,这些信息对于调试和理解调度决策非常有用。

11.回退机制(Fallback Mechanism)

如果调度器在给定的时间内无法找到一个合适的节点,Pod可能会被放入一个待定状态,等待重新调度。

总之,上述Kubernetes调度器的内部实现机制是高度优化的,以确保能够快速、有效地将Pods调度到集群中的节点上。通过不断地迭代和改进,Kubernetes调度器能够适应不断变化的集群状态和复杂的用户需求。

相关文章:

Kubernetes资源调度策略及实现机制

目录 一、资源调度策略 1.默认调度器(Default Scheduler) 2.自定义调度器(Custom Scheduler) 3.亲和性与反亲和性(Affinity and Anti-Affinity) 4.污点与容忍(Taint and Tolerations&#…...

finetuning大模型准备(基于Mac环境)

为finetuning进行的热身准备,涉及周边的软件工具,方法。 问题1:finetuning过程较长,采用系统自带命令行没有后台,前台被杀后,容易造成训练失败。 解决方法: tmux可以开启后台训练 问题2&…...

js检验一个字符串是否是正确时间格式的工具方法

js检验一个字符串是否是正确时间格式的工具方法 (()> {/*** 检验字符串是否为时间格式* param {String} date 需要检验的时间格式* returns true 为时间格式,false 为非时间格式*/const isTimaFormat (date) > {if(!date) return false;try{const tempTime …...

大型制造业集团IT信息化总体规划方案(65页PPT)

方案介绍: 本大型制造业集团IT信息化总体规划方案旨在通过构建先进、高效、稳定的IT信息化系统,支撑集团各业务领域的运营和管理需求,促进集团整体运营效率和竞争力的提升。通过实施本项目,集团将能够更好地应对市场变化和客户需…...

【LIN】STM32新能源汽车LIN通信实现过程

【LIN】STM32新能源汽车LIN通信实现过程 文章目录 前言一、软件二、接线图三、硬件原理图四、上位机五、PICO示波器串行解码1.软件中的LIN波特率设置-192002.PIC设置3.PIC串行解码 六.引用总结 前言 【电机控制】直流有刷电机、无刷电机汇总——持续更新 使用工具:…...

【LeetCode:575. 分糖果+ 哈希表】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…...

全文检索-ElasticSearch

1.基本概念 1.Index索引 动词:相当于MySQL中的insert; 名词:相当于MySQL中的DataBase; 2.Type(类型) 在Index(索引)中,可以定义一个或多个类型 类似于MySQL中的Tab…...

C编程惯用法:深入剖析与实战指南

C编程惯用法:深入剖析与实战指南 在C语言编程的浩瀚海洋中,掌握一些惯用法对于提升代码质量、增强可读性以及降低出错率至关重要。本文将从四个方面、五个方面、六个方面和七个方面,详细剖析C编程中的惯用法,帮助您更好地理解和应…...

MySQL数据表的设计

实际工程中, 对于数据表的设计和创建, 我们遵循以下步骤: 首先确定实体, 找到关键名词, 提取关键信息, 设计表有哪些列, 每一列是什么. (有几个实体, 一般就创建几个表, 一般一个表对应一个实体) 实体之间的关系: 1. 一对一关系 例如: 一个学生, 只能有一个账号; 一个账号只…...

Flutter开发效率提升1000%,Flutter Quick教程之对写好的Widget进行嵌套

通常写代码的时候,我们是先写好外面的Widget,再写里面的Widget。但是,也有的时候,我们写好了一个Widget,但是我们觉得有必要再在外面嵌套一个Widget,这时候应该怎么做呢?(还有其他方…...

2020编程语言排序:探索编程界的热门与趋势

2020编程语言排序:探索编程界的热门与趋势 在数字时代的浪潮中,编程语言作为构建数字世界的基石,其流行度和影响力不容忽视。2020年,各大编程语言在各自的领域里展现出独特的魅力和实力。本文将从四个方面、五个方面、六个方面和…...

提高工作效率的招数

自己的工作效率为啥比别人低,因为不会使用工具,这就是一个大冤种。 1.血泪教训,写代码调用第三方接口的时候已经要打印调用日志,不然扯皮真的难搞。 2.pg 上测试或的时候由于schema 错误mybatis会给你报空指针一样,还…...

css特殊效果和页面布局

特殊效果 圆角边框:div{border-radius: 20px 10px 50px 30px;} 四个属性值按顺时针排列,左上的1/4圆半径为20px,右上10,右下50,左下30。 div{border-radius: 20px;} 四角都为20px。 div{border-radius: 20px 10…...

JavaScript中对象的增删改查

1. 增(添加属性) let obj {}; // 添加一个属性 obj.name John Doe; // 或者使用方括号语法添加属性(这对于动态属性名很有用) let propName age; obj[propName] 30; console.log(obj); // 输出: { name: John Doe, …...

技术周总结 2024.05.27~06.02(java bean冲突 软件工程)

文章目录 一、05.28 周二1.1)问题01:java 引用的jar包中bean名称冲突了,怎么解决?1.2)问题02:使用SparkSession将json字符串转成 DataFrame 二、06.01 周六2.1)问题01:系统架构师考试…...

「前端+鸿蒙」核心技术HTML5+CSS3(八)

1、网站布局详解 网站布局是前端开发中的核心概念之一,它决定了网页的视觉结构和用户浏览的逻辑顺序。以下是几种常见的布局方式及其代码示例: 固定布局: 固定布局通常具有固定的宽度和高度,适用于传统的桌面视图。 <!DOCTYPE html> <html> <head><…...

15届蓝桥杯决赛,java b组,蒟蒻赛时所写的题思路

这次题的数量是10题&#xff0c;初赛是8题&#xff0c;还多了两题&#xff0c;个人感觉java b组的题意还是比较清晰的&#xff08;不存在读不懂题的情况&#xff09;&#xff0c;但是时间感觉还是不够用&#xff0c;第4题一开始不会写&#xff0c;后面记起来写到结束也没调出来…...

2024蓝桥杯国赛C++研究生组游记+个人题解

Day0 开始复习&#xff0c;过了一遍大部分板子 本来打算再学一遍SAM&#xff0c;但是想到去年考了字符串大题今年应该不会再考了吧。。 过了一遍数据结构和图论&#xff0c;就1点了 两点的时候还没睡着&#xff0c;舍友打游戏好像打到2点过。。 Day1 相当困 第一题&…...

C#WPF数字大屏项目实战07--当日产量

1、第2列布局 第2列分三行&#xff0c;第一行分6列 2、当日产量布局 3、产量数据布局 运行效果 4、计划产量和完成度 运行效果 5、良品率布局 1、添加用户控件 2、用户控件绘制圆 2、使用用户控件 3、运行效果 4、注意点 这三个数值目前是静态的&#xff0c;可以由后台程序项…...

MyBatis源码分析--02:SqlSession建立过程

我们再来看看MyBatis使用流程&#xff1a; InputStream inputStream Resources.getResourceAsStream("myBatis_config.xml"); SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(inputStream); SqlSession session sqlSessionFactory.op…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

协议转换利器,profinet转ethercat网关的两大派系,各有千秋

随着工业以太网的发展&#xff0c;其高效、便捷、协议开放、易于冗余等诸多优点&#xff0c;被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口&#xff0c;具有实时性、开放性&#xff0c;使用TCP/IP和IT标准&#xff0c;符合基于工业以太网的…...