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

如何决定K8S Pod的剔除优先级

在Kubernetes(k8s)中,当节点资源面临压力时,如何决定Pod的优先级是一个关键问题。在Kubernetes 1.8版本之后,引入了基于Pod优先级的调度策略,即Pod Priority Preemption。这种策略允许在资源不足的情况下,系统可以选择性释放一些优先级较低的Pod,以确保最重要的Pod能够获取足够的资源并稳定运行。

Pod的优先级是由用户设置的,并且可以通过权重来区分不同的优先级。权重是区分优先级的关键因素,Kubernetes将Pod分成了三个QoS(服务质量)等级,分别是:

  1. Guaranteed:优先级最高,通常用于数据库应用或一些重要的业务应用。这些Pod只有在资源超出其限制或节点内存压力非常大且没有其他更低QoS的Pod时,才会被杀死。
  2. Burstable:这种类型的Pod可以使用的资源超过其请求的资源(上限由limit指定),但优先级相对较低,通常用于一般性应用或批处理任务。
  3. Best Effort:优先级最低,集群不知道Pod的资源请求情况,调度时不考虑资源,通常用于一些临时性的不重要应用。

当节点资源不足时,Kubernetes的调度器会尝试驱逐一些优先级较低的Pod,以释放资源供新的或更重要的Pod使用。这种驱逐行为称为Eviction。而在调度新Pod时,如果资源不足,调度器会尝试抢占一些优先级较低的Pod来满足新Pod的需求,这称为Preemption。

需要注意的是,高优先级的Pod并不保证始终被调度到特定节点上。如果在驱逐低优先级Pod的过程中出现了更高优先级的Pod,调度器会重新调度这些Pod。此外,优先级抢占的调度方式可能会导致调度陷入“死循环”状态,这通常需要通过多个Scheduler协作来避免。

总之,在Kubernetes中,通过合理的设置Pod的优先级和QoS等级,可以在节点资源面临压力时实现更智能的资源管理和调度,从而确保关键业务的稳定运行。

真实案例: 

参考订单号:
 PT-20240115002:[EU PRD]节点Calico pod因内存压力会被优先重启

http://hds.ms-sit.xxxxxx.net/orderOperation/planTaskView/vendor/249

通过k8s原理来看,在节点出现资源紧张的情况下,会对该节点的pod做驱逐排名,而resources设置了1:1相比于设置了1:n的,排名会更后,所以就出现了calico-node等pod被优先驱逐的情况。

 

节点内存压力问题的出现,从之前的排查来看可能跟低版本的DCE有关,也有可能是节点产生了较多的cache占用了较多的内存,我们的建议是重启节点(之前同样问题的节点重启后暂时没出现过),如果不能重启节点,我们的建议是对节点进行扩容,暂时不建议将平台组件的资源用量也调整为1:1,因为这个过程需要滚动重启所有ds相关的pod 

调整方案初步确定为,将calico node的memory request从200M改为与limit一致的400M,并且滚动升级策略改为onDelete。 

onDelete 参数的含义:

在 Kubernetes(k8s)中,滚动升级(Rolling Update)是一种常见的部署策略,用于逐步替换集群中的旧版本 Pod,以新版本 Pod 替代它们。在滚动升级过程中,旧的 Pod 会被逐个删除,而新的 Pod 会被逐个创建,以确保应用程序始终有可用实例。

然而,在某些情况下,您可能希望更精细地控制滚动升级的过程。onDelete 升级策略允许您手动触发 Pod 的替换过程。当您设置滚动升级策略为 onDelete 时,新的 Replicaset(代表新版本 Pod 的集合)不会自动替换旧的 Replicaset(代表旧版本 Pod 的集合)。相反,您需要手动删除旧的 Replicaset,以便 Kubernetes 开始创建新版本 Pod。

将滚动升级策略改为 onDelete 的目的可能包括:

  1. 精确控制升级过程onDelete 策略允许您精确地控制何时开始和结束升级过程。这对于需要精细调整升级时间窗口或避免在特定时间段内执行升级的场景非常有用。
  2. 避免意外的中断:在某些情况下,自动滚动升级可能会导致意外的中断或问题。通过将升级策略设置为 onDelete,您可以确保在升级过程中有更多的控制和可见性,从而避免这些问题。
  3. 与其他系统或流程集成:在某些场景中,您可能希望将 Kubernetes 的滚动升级与其他系统或流程集成。通过将升级策略设置为 onDelete,您可以更轻松地触发升级过程,并将其与其他自动化工具或流程相结合。

请注意,使用 onDelete 策略需要您手动管理升级过程,确保在删除旧的 Replicaset 之前备份重要数据,并在升级过程中密切监视应用程序的状态。否则,可能会导致应用程序中断或数据丢失。

相关文章:

如何决定K8S Pod的剔除优先级

在Kubernetes(k8s)中,当节点资源面临压力时,如何决定Pod的优先级是一个关键问题。在Kubernetes 1.8版本之后,引入了基于Pod优先级的调度策略,即Pod Priority Preemption。这种策略允许在资源不足的情况下&a…...

【JavaScript】数据类型

文章目录 1. 数字(Number)2. 字符串(String)3. 布尔(Boolean)4. 对象(Object)5. 数组(Array)6. Undefined 和 Null7. typeof 操作符总结 在 JavaScript 中&am…...

JAVA:单例模式提高性能和安全性的优化技巧

1、简述 单例模式是一种常用的设计模式,用于确保一个类只有一个实例,并提供全局访问点。在 Java 中,单例模式的优化不仅可以提高性能,还可以增强安全性和可维护性。本文将介绍一些关键的技巧和最佳实践,帮助你优化单例…...

如何在 Ubuntu 上安装 ONLYOFFICE 文档 8.0

通过使用社区版,您有能力在您自己的服务器上部署 ONLYOFFICE 文档,从而使在线编辑器与 ​​ONLYOFFICE 协作平台​​​或​​其他热门系统​​进行无缝集成。 ONLYOFFICE 文档是什么 ONLYOFFICE 文档是一款全面的在线办公工具,提供了文本文档…...

什么是大模型

目录 让你了解什么是大模型什么是大模型?大模型的应用场景常见的大模型技术实例分析:深度学习语言模型GPT-3 让你了解什么是大模型 大模型(Big Model)是指在机器学习和人工智能领域中处理大规模数据和复杂模型的一种方法或技术。…...

C#在既有数组中插入另一个数组:Array.Copy方法 vs 自定义插入方法

目录 一、使用的方法 1.使用Array.Copy方法 2.Copy(Array, Int32, Array, Int32, Int32) 3. 使用自定义的方法 二、实例 1.示例1:使用Array.Copy方法 2.示例2:使用自定义的方法 一、使用的方法 1.使用Array.Copy方法 首先定义了一个名为InsertAr…...

上位机图像处理和嵌入式模块部署(linux开发板的选择)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 很多图像算法是通过上位机来完成的,比如说工业视觉当中的halcon,一般都是要运行在windows平台上面,并且需要高性…...

2024情人节送女朋友什么礼物?精准送礼看这个就对啦!男生必看!

爱情是生活中最美好的情感之一,而情人节则是表达这份感情的最佳时刻。在2024年的情人节来临之际,作为男生的你是否已经为心爱的她准备了一份特别的礼物呢?如果你还在犹豫不决,那么这篇文章就是为你准备的!我们将会从女…...

查询每张表占用磁盘空间大小(达梦数据库)

查询每张表占用磁盘空间大小 环境介绍 环境介绍 在迁移准备工作中,为了更好评估迁移时间,可以统计大表数量与大表的实际大小,为迁移规划做准备 --查看用户下面每张表占用的磁盘空间SELECT T.OWNER,T.SEGMENT_NAME,T.SEGMENT_TYPE,T.TABLESPACE_NAME,T.BYTES,T.BYTES/1024 BYT…...

Vue3——创建一个应用

文章目录 创建应用实例挂载应用没有模板的组件的挂载 应用配置多个应用实例 其实使用脚手架创建的vue项目的main.js文件中已经为我们配置好 vue应用的创建。 import { createApp } from vue import App from ./App.vue const app createApp(App) app.mount(#app)创建应用实例…...

深度学习系列56:使用whisper进行语音转文字

1. openai-whisper 这应该是最快的使用方式了。安装pip install -U openai-whisper,接着安装ffmpeg,随后就可以使用了。模型清单如下: 第一种方式,使用命令行: whisper japanese.wav --language Japanese --model…...

【Web - 框架 - Vue】随笔 - 通过`CDN`的方式使用`VUE 2.0`和`Element UI`

通过CDN的方式使用VUE 2.0和Element UI VUE 网址 https://cdn.bootcdn.net/ajax/libs/vue/2.7.16/vue.js源码 https://download.csdn.net/download/HIGK_365/88815507测试 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset&quo…...

设计模式(行为型模式)备忘录模式

目录 一、简介二、备忘录模式2.1、备忘录2.2、原发器2.3、备忘录模式 三、优点与缺点 一、简介 备忘录模式&#xff08;Memento Pattern&#xff09;是一种行为设计模式&#xff0c;旨在捕获一个对象的内部状态&#xff0c;并在不破坏对象封装的前提下将其保存&#xff0c;以便…...

opencv案例实战:条码区域分割

前言 识别二维码是一个日常生活中常见的应用,而识别之前,需要先分割出条形码的区域来获取条形码。我们可以使用OpenCV便捷的获取条码的区域。 逐步分析 为了了解数据处理的过程,我们逐步分析并显示处理过程 查看图像 在读入时,传入参数cv2.IMREAD_GRAYSCALE可以直接按…...

《MySQL》超详细笔记

目录 基本知识 主流数据库 数据库基本概念 MySQL启动 数据库基本命令 数据库 启动数据库 显示数据库 创建数据库 删除数据库 使用数据库 查询当前数据库信息 显示数据库中的表 导入数据库脚本 表 查看表的结构 查看创建某个表的SQL语句 数据库的查询命令 查询…...

商用密码

商用密码&#xff08;Commercial Cryptography&#xff09;涉及到多个方面&#xff0c;包括但不限于数据加密、数字签名、身份验证和安全通信等。商用密码的目的是保护信息的机密性、完整性和可用性&#xff0c;确保数据在存储和传输过程中的安全。以下是一些Java商用密码方向的…...

css1文本属性

一.颜色&#xff08;color&#xff09;&#xff08;一般用16进制&#xff09; 二.对齐&#xff08;text-align) 三.装饰&#xff08;text-decoration&#xff09; 四.缩进&#xff08;text-indent&#xff09;&#xff08;一般用2em&#xff09;&#xff08;有单位&#xff09;…...

在容器中使用buildah构建镜像

简介 buildah是一个构建OCI标准镜像的工具&#xff0c;可以用来替代docker build 在常见的linux发行版中可直接通过包管理工具安装使用 # centos yum install buildah# ubuntu/debian apt install buildah# alpine apk add buildah其他发行版安装方法详见 github&#xff0c…...

GPT4_VS_ChatGPT(from_nytimes)

GPT4 VS ChatGPT&#xff08;from nytimes &#xff09; 正如文章官网博文&#xff1a;https://openai.com/research/gpt-4所述&#xff0c;GPT4仍有很多不足之处&#xff0c;还不及人类水平。纽约时报报道了一些人体验GPT4的效果和一些评价&#xff1a; Cade Metz 要求专家使…...

中兴R5300G4服务器查看服务器、主板序列号及硬盘RAID信息

本文在操作系统带内通过指令操作查看中兴R5300G4服务器、主板序列号及硬盘RAID信息。 一、中兴R5300G4服务器查看服务器、主板序列号 在Linux服务器上&#xff0c;可以使用dmidecode命令来查看服务器的硬件相关信息&#xff0c;由于该命令要读取系统的硬件信息&#xff0c;因…...

快速生成node.js环境配置原型:用快马一键创建安装验证工具

快速生成node.js环境配置原型&#xff1a;用快马一键创建安装验证工具 最近在带新人入门Node.js开发时&#xff0c;发现很多小伙伴卡在了最基础的环境配置环节。不同操作系统下的安装方式差异、版本兼容性问题、环境变量配置这些看似简单的步骤&#xff0c;往往会消耗初学者大…...

云端存储本地化革新:从0到1掌握s3fs-fuse文件系统映射技术

云端存储本地化革新&#xff1a;从0到1掌握s3fs-fuse文件系统映射技术 【免费下载链接】s3fs-fuse FUSE-based file system backed by Amazon S3 项目地址: https://gitcode.com/gh_mirrors/s3/s3fs-fuse 在云计算时代&#xff0c;如何让云端存储像本地硬盘一样便捷访问…...

Linux 系统调用实现原理

Linux 系统调用实现原理 系统调用的重要性 作为科技创业者&#xff0c;我深刻理解系统调用在操作系统中的核心地位。系统调用是用户空间与内核空间交互的桥梁&#xff0c;是应用程序访问操作系统服务的唯一途径。深入理解系统调用的实现原理&#xff0c;对于系统性能优化和安全…...

终极Mermaid在线编辑器指南:3分钟学会专业图表制作

终极Mermaid在线编辑器指南&#xff1a;3分钟学会专业图表制作 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-live-editor …...

Umi-OCR性能调优实战指南:老旧系统文字识别效率提升方案

Umi-OCR性能调优实战指南&#xff1a;老旧系统文字识别效率提升方案 【免费下载链接】Umi-OCR Umi-OCR: 这是一个免费、开源、可批量处理的离线OCR软件&#xff0c;适用于Windows系统&#xff0c;支持截图OCR、批量OCR、二维码识别等功能。 项目地址: https://gitcode.com/Gi…...

Z-Image-Turbo LoRA Web服务GPU优化:显存碎片整理与长期运行稳定性保障

Z-Image-Turbo LoRA Web服务GPU优化&#xff1a;显存碎片整理与长期运行稳定性保障 1. 项目概述与核心价值 今天要跟大家分享的是一个基于Z-Image-Turbo模型的图片生成Web服务&#xff0c;重点解决了GPU显存管理和长期稳定运行的关键问题。这个服务不仅支持高质量的图片生成&…...

别再重复造轮子了!手把手教你用Vue3 + v3layer组件库,5分钟搞定PC端复杂弹窗需求

Vue3弹窗开发实战&#xff1a;从零封装到v3layer高效解决方案 在PC端Web应用开发中&#xff0c;弹窗组件几乎是每个项目都无法绕开的基础功能。从简单的提示框到复杂的交互式面板&#xff0c;弹窗承载着信息展示、用户反馈、表单提交等多样化需求。传统开发模式下&#xff0c;前…...

Harmonyos应用实例225: 数学建模案例分析

7. 数学建模案例分析 功能简介:提供常见数学建模案例,如人口增长模型、传染病模型、经济增长模型等,通过参数调整观察模型变化,计算模型预测值。帮助学生理解数学建模的基本步骤和应用价值。 ArkTS代码: @Entry @Component struct MathematicalModeling {@State privat…...

UE5开发者必备:10个免费3D模型资源网站推荐(含避坑指南)

UE5开发者必备&#xff1a;10个免费3D模型资源网站深度评测与实战指南 当你深夜盯着UE5编辑器里那个孤零零的默认立方体发呆时&#xff0c;是否也经历过这种绝望&#xff1f;作为经历过上百个原型项目的老司机&#xff0c;我深刻理解优质3D资源对开发效率的致命影响。市面上90…...

旧设备重生:用OpenCore Legacy Patcher实现Mac系统升级的完整指南

旧设备重生&#xff1a;用OpenCore Legacy Patcher实现Mac系统升级的完整指南 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 您的Mac是否因硬件限制无法升级到最新macOS系…...