当前位置: 首页 > 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…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态&#xff08;编译时多态&#xff09; 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1&#xff09;.协变 2&#xff09;.析构函数的重写 5.override 和 final关键字 1&#…...