Pod的优先级(priorityClass)和抢占策略(preemptionPolicy)
Pod优先级
Pod优先级是一个用于指示Pod相对重要程度的整数值。优先级高的Pod在调度时会优先被考虑,并且在资源不足时,优先级较低的Pod可能会被驱逐以释放资源给优先级较高的Pod。Pod优先级的值范围是从0到1000000000,其中0是默认优先级,而大于1000000000的优先级值预留给系统级的关键Pod。
在定义Pod时,可以通过在Pod规范中设置priorityClassName来指定Pod的优先级类。优先级类是一个资源对象,它包含了一个或多个Pod的优先级值。Pod将根据其所属的优先级类来获得相应的优先级。如果没有明确指定优先级类,Pod将使用默认优先级0。
抢占策略
抢占策略是指在资源不足时,调度器是否允许驱逐低优先级的Pod以释放资源给高优先级的Pod。抢占策略可以通过设置Pod的preemptionPolicy字段来指定。
Never:表示Pod不会被驱逐,即使资源不足也无法被调度。这意味着Pod将一直处于等待状态,直到有足够的资源可用。PreemptLowerPriority:表示如果资源不足,调度器会尝试驱逐优先级较低的Pod以释放资源给当前Pod。这样可以确保高优先级的Pod能够顺利运行。
需要注意的是,抢占策略只适用于具有不同优先级的Pod之间。如果两个Pod具有相同的优先级,那么它们之间不会发生抢占。
Pod优先级和抢占策略可以通过在Pod的配置文件(YAML)中设置相应的字段来实现。下面是一个示例YAML文件,展示了如何为Pod指定优先级和抢占策略:
apiVersion: v1
kind: Pod
metadata:
name: example-pod
spec:
containers:
- name: example-container
image: example-image
# 其他容器配置
priorityClassName: high-priority # 指定Pod优先级类
preemptionPolicy: PreemptLowerPriority # 指定抢占策略
# 其他Pod配置
在这个示例中,priorityClassName字段用于指定Pod的优先级类。high-priority是一个已经定义的PriorityClass的名称,它包含了Pod的优先级值。你需要确保已经创建了相应的PriorityClass资源对象,并且其名称与priorityClassName字段的值匹配。
preemptionPolicy字段用于指定Pod的抢占策略。在这个示例中,PreemptLowerPriority表示如果资源不足,Pod将尝试驱逐优先级较低的Pod以释放资源。
请注意,Pod优先级和抢占策略在Kubernetes 1.11版本之后默认启用。如果你使用的是较旧的版本,可能需要为kube-scheduler指定--feature-gates=PodPriority=true来启用这些功能。
另外,你还需要确保PriorityClass资源对象已经正确创建,并且其优先级值设置合理。PriorityClass可以通过以下YAML文件进行创建:
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
name: high-priority
value: 1000000 # 设置优先级值
globalDefault: false # 是否设置为默认优先级类
description: "This priority class should be used for high priority pods." # 描述信息
在这个示例中,high-priority是一个PriorityClass的名称,value字段设置了该优先级类的优先级值。globalDefault字段指示是否将该PriorityClass设置为默认优先级类,description字段提供了关于该优先级类的描述信息。
创建PriorityClass后,你可以在Pod的配置文件中通过priorityClassName字段引用它,从而为Pod指定优先级。
Pod的优先级(priorityClass)和抢占策略(preemptionPolicy)的更多相关文章
- kubernetes调度之pod优先级和资源抢占
系列目录 Pod可以拥有优先级.优先意味着相对于其它pod某个pod更为重要.如果重要的pod不能被调度,则kubernetes调度器会优先于(驱离)低优先级的pod来让处于pending状态的高优先 ...
- CPU被夺走的三种状态 执行时间久了 IO操作让cpu等待 被优先级高的抢占
CPU被夺走的三种状态 执行时间久了 IO操作让cpu等待 被优先级高的抢占
- OpenAI Kubernetes 相关博文读后笔记
一.概述 最近 ChatGPT 和其公司 OpenAI 特别火:ChatGPT 3, ChatGPT 3.5, New Bing, ChatGPT 4... 怀着学习的心态,这几天访问了 OpenAI ...
- 生产环境中的kubernetes 优先级与抢占
kubernetes 中的抢占功能是调度器比较重要的feature,但是真正使用起来还是比较危险,否则很容易把低优先级的pod给无辜kill.为了提高GPU集群的资源利用率,决定勇于尝试一番该feat ...
- 10.深入k8s:调度的优先级及抢占机制源码分析
转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com 源码版本是1.19 上一篇我们将了获取node成功的情况,如果是一个优先pod获取nod ...
- 关于STM32的抢占式优先级说明。——Arvin
关于STM32的中断设置.--Arvin 中断 STM32 很多人在配置STM32中断时对固件库中的这个函数NVIC_PriorityGroupConfig()配置优先级分组方式,会很不理解,尤其是看 ...
- 【转】STM32中的抢占优先级、响应优先级概念
STM32(Cortex-M3)中有两个优先级的概念--抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级. 具有高抢占式优先级的中断可以在具 ...
- stm32中断 抢占优先级 和 响应优先级 有什么区别
与51不同,stm32的中断分类更灵活.51只是按先后顺序大小排列互相打断. stm32中多了响应优先级这一概念. stm32的中断分为 1.抢占(占先)优先级. 2.响应优先级. 1.抢占优先级.抢 ...
- Kubernetes Pod驱逐策略
Kubelet 能够主动监测和防止计算资源的全面短缺. 在资源短缺的情况下,kubelet 可以主动地结束一个或多个 Pod 以回收短缺的资源. 当 kubelet 结束一个 Pod 时,它将终止 P ...
- kubernetes调度之 PriorityClass
系列目录 kubernetes支持多种资源调度模式,前面讲过简单的基于nodeName和nodeSelector的服务器资源调度,我们称之为用户绑定策略,下面简要描述基于PriorityClass的同 ...
随机推荐
- C/C++ 感染标志与空字节感染
C/C++ 通过搜索PE结构中的空隙部分,对指定文件写入感染标志,作用是,如果程序被感染过则不再继续感染,而搜索空字节,则是要将恶意代码动态的填充到可执行文件中,并劫持执行流,以下代码就是这两种代码的 ...
- C/C++ 静态编译SQLITE数据库API
C/C++ 编译并使用Sqlite数据库,实现增删改查. 首先下载数据库: https://sqlite.org/download.html 分别下载:sqlite-amalgamation-3350 ...
- 并发编程-JUC的三个常用工具类
1.CountDownLatch:减法计数器 代码实例 public class CountDownLatchTest { public static void main(String[] args) ...
- Docker从认识到实践再到底层原理(六-2)|Docker容器操作实例
前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助. 高质量博客汇总 然后就是博主最近最花时间的一 ...
- 自定义RecyclerView下拉刷新上拉加载更多
自定义ListView下拉刷新上拉加载更多 自定义RecyclerView下拉刷新上拉加载更多
- js转化文章发布于几天几小时几分钟前
alert(dateFormat('2020-07-08 11:32:44')); function dateFormat(d1) { var dateEnd = new Date();//获取当前时 ...
- AutoGPT是什么?超简单安装使用教程
1.AutoGPT 最近几天当红炸子鸡的是AutoGPT,不得不说AI发展真快啊,几天出来一个新东西,都跟不上时代的脚步了. AutoGPT是一个开源的应用程序,展示了GPT-4语言模型的能力.这个程 ...
- Kafka-生产者、broker、消费者的调优参数总结
生产环境下,为了尽可能提升Kafka的整体吞吐量,可以对Kafka的相关配置参数进行调整,以达到提升整体性能的目的. 本文主要从Kafka的不同组件出发,讲解各组件涉及的配置参数和参数含义. 一.生产 ...
- jvm的简介
什么是jvm? java虚拟机就是二进制字节码的运行环境.我们可以把jvm看做是运行在不同系统上的一个软件应用的计算机,就比如说我们要打开图片,就得用看图软件,或者我们要对文件进行解压,是不是得用解压 ...
- NC22600 Rinne Loves Dynamic Graph
题目链接 题目 题目描述 Rinne 学到了一个新的奇妙的东西叫做动态图,这里的动态图的定义是边权可以随着操作而变动的图. 当我们在这个图上经过一条边的时候,这个图上所有边的边权都会发生变动. 定义变 ...