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)的更多相关文章

  1. kubernetes调度之pod优先级和资源抢占

    系列目录 Pod可以拥有优先级.优先意味着相对于其它pod某个pod更为重要.如果重要的pod不能被调度,则kubernetes调度器会优先于(驱离)低优先级的pod来让处于pending状态的高优先 ...

  2. CPU被夺走的三种状态 执行时间久了 IO操作让cpu等待 被优先级高的抢占

    CPU被夺走的三种状态   执行时间久了    IO操作让cpu等待  被优先级高的抢占

  3. OpenAI Kubernetes 相关博文读后笔记

    一.概述 最近 ChatGPT 和其公司 OpenAI 特别火:ChatGPT 3, ChatGPT 3.5, New Bing, ChatGPT 4... 怀着学习的心态,这几天访问了 OpenAI ...

  4. 生产环境中的kubernetes 优先级与抢占

    kubernetes 中的抢占功能是调度器比较重要的feature,但是真正使用起来还是比较危险,否则很容易把低优先级的pod给无辜kill.为了提高GPU集群的资源利用率,决定勇于尝试一番该feat ...

  5. 10.深入k8s:调度的优先级及抢占机制源码分析

    转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com 源码版本是1.19 上一篇我们将了获取node成功的情况,如果是一个优先pod获取nod ...

  6. 关于STM32的抢占式优先级说明。——Arvin

    关于STM32的中断设置.--Arvin 中断 STM32 很多人在配置STM32中断时对固件库中的这个函数NVIC_PriorityGroupConfig()配置优先级分组方式,会很不理解,尤其是看 ...

  7. 【转】STM32中的抢占优先级、响应优先级概念

    STM32(Cortex-M3)中有两个优先级的概念--抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级. 具有高抢占式优先级的中断可以在具 ...

  8. stm32中断 抢占优先级 和 响应优先级 有什么区别

    与51不同,stm32的中断分类更灵活.51只是按先后顺序大小排列互相打断. stm32中多了响应优先级这一概念. stm32的中断分为 1.抢占(占先)优先级. 2.响应优先级. 1.抢占优先级.抢 ...

  9. Kubernetes Pod驱逐策略

    Kubelet 能够主动监测和防止计算资源的全面短缺. 在资源短缺的情况下,kubelet 可以主动地结束一个或多个 Pod 以回收短缺的资源. 当 kubelet 结束一个 Pod 时,它将终止 P ...

  10. kubernetes调度之 PriorityClass

    系列目录 kubernetes支持多种资源调度模式,前面讲过简单的基于nodeName和nodeSelector的服务器资源调度,我们称之为用户绑定策略,下面简要描述基于PriorityClass的同 ...

随机推荐

  1. BoostAsyncSocket 异步反弹通信案例

    Boost 利用ASIO框架实现一个跨平台的反向远控程序,该远控支持保存套接字,当有套接字连入时,自动存储到map容器,当客户下线时自动从map容器中移除,当我们需要与特定客户端通信时,只需要指定客户 ...

  2. Asp .Net Core 系列:Asp .Net Core 配置 System.Text.Json

    目录 简介 Asp .Net Core 如何配置 System.Text.Json 所有配置 全局配置 对比 Newtonsoft.Json 无实体类型下操作 Json 自定义转换器 处理 Dynam ...

  3. [XXL-JOB] 分布式调度XXL-JOB快速上手

    1.概述 1.1什么是任务调度 我们可以思考一下下面业务场景的解决方案: 某电商平台需要每天上午10点,下午3点,晚上8点发放一批优惠券 某银行系统需要在信用卡到期还款日的前三天进行短信提醒 某财务系 ...

  4. 外部文件使用django的models

    #外部文件使用django的models,需要配置django环境 import os if __name__ == '__main__': os.environ.setdefault("D ...

  5. Linux下开发基于.NET的三维绘图程序

    很多人可能知道使用.NET Core可以开发跨平台(包括Windows,Linux.MacOS)的App,但知道在Linux下使用.NET Core可以开发三维程序的恐怕就很少了.本文通过借助.NET ...

  6. 基于protobuf和httplib的在线通讯录项目框架|Protobuf应用小项目

    前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助. 高质量博客汇总https://blog.cs ...

  7. 零基础入门Vue之窥探大法——计算与侦听

    前言 在 上一小节 我介绍了我学习vue入门 插值语法 的过程. 在本篇,我将记录我对vue的 计算属性和侦听器 的学习记录 注:本篇对于"侦听"和"监听"是一 ...

  8. Oracle 数据库版本路线图

    经常会有客户困惑某个Oracle版本的支持周期,且希望得到确切的官方说明,其实这可以从MOS文档: Release Schedule of Current Database Releases (Doc ...

  9. Linux使用wget命令下载网络资源

    之前接触的Linux环境大多是内网,一般都是采用传统的FTP服务器统一存放常用资源,有人需要时从FTP直接下载,若公司FTP没有想要的资源,还需联系管理维护人员下载上传对应的介质. 而目前随着云ECS ...

  10. [转载自jayant97] 详解Zephyr设备树(DeviceTree)与驱动模型

    原文链接:详解Zephyr设备树(DeviceTree)与驱动模型 1. 前言 ​ Nordic最新的开发包NCS(nRF Connect SDK)相对于原来的nRF5 SDK来说,最大的更新莫过于采 ...