K8S之QoS详解

devtools/2025/3/19 20:08:49/

Pod QoS 类

服务质量(Quality of Service,QoS)类, 阐述 Kubernetes 如何根据为 Pod 中的容器指定的资源约束为每个 Pod 设置 QoS 类。Kubernetes 依赖这种分类来决定当 Node 上没有足够可用资源时要驱逐哪些 Pod。

QoS 类(Quality of Service classes)

Kubernetes 对你运行的 Pod 进行分类,并将每个 Pod 分配到特定的 QoS 类中。 Kubernetes 使用这种分类来影响不同 Pod 被处理的方式。Kubernetes 基于 Pod 中容器的资源请求进行分类, 同时确定这些请求如何与资源限制相关。 这称为服务质量 (QoS) 类。 Kubernetes 基于每个 Pod 中容器的资源请求和限制为 Pod 设置 QoS 类。Kubernetes 使用 QoS 类来决定从遇到节点压力的 Node 中驱逐哪些 Pod。可选的 QoS 类有 Guaranteed、Burstable 和 BestEffort。 当一个 Node 耗尽资源时,Kubernetes 将首先驱逐在该 Node 上运行的 BestEffort Pod, 然后是 Burstable Pod,最后是 Guaranteed Pod。当这种驱逐是由于资源压力时, 只有超出资源请求的 Pod 才是被驱逐的候选对象。

Guaranteed

Guaranteed Pod 具有最严格的资源限制,并且最不可能面临驱逐。 在这些 Pod 超过其自身的限制或者没有可以从 Node 抢占的低优先级 Pod 之前, 这些 Pod 保证不会被杀死。这些 Pod 不可以获得超出其指定 limit 的资源。这些 Pod 也可以使用 static CPU 管理策略来使用独占的 CPU。

判据
pod的每个容器都必须设置CPU和Memory,并且request和limit必须相等。

Burstable

Burstable Pod 有一些基于 request 的资源下限保证,但不需要特定的 limit。
如果未指定 limit,则默认为其 limit 等于 Node 容量,这允许 Pod 在资源可用时灵活地增加其资源。
在由于 Node 资源压力导致 Pod 被驱逐的情况下,只有在所有 BestEffort Pod 被驱逐后 这些 Pod 才会被驱逐。
因为 Burstable Pod 可以包括没有资源 limit 或资源 request 的容器, 所以 Burstable Pod 可以尝试使用任意数量的节点资源。

判据
不满足针对Guaranteed的判据。并且pod中至少有一个container有cpu或memory的request和limit.

BestEffort

BestEffort QoS 类中的 Pod 可以使用未专门分配给其他 QoS 类中的 Pod 的节点资源。 例如若你有一个节点有 16 核 CPU 可供 kubelet 使用,并且你将 4 核 CPU 分配给一个 Guaranteed Pod, 那么 BestEffort QoS 类中的 Pod 可以尝试任意使用剩余的 12 核 CPU。

如果节点遇到资源压力,kubelet 将优先驱逐 BestEffort Pod。

判据
不满足 Guaranteed 或 Burstable 的判据。
换言之,只有当 Pod 中的所有容器没有cpu memory的request和limit.,也没有 CPU limit 或 CPU request 时,Pod 才是 BestEffort。Pod 中的容器可以请求(除 CPU 或内存之外的) 其他资源并且仍然被归类为 BestEffort。


http://www.ppmy.cn/devtools/168429.html

相关文章

【css酷炫效果】纯CSS实现黑白电视故障雪花

【css酷炫效果】纯CSS实现黑白电视故障雪花 缘创作背景html结构css样式完整代码效果图 想直接拿走的老板,链接放在这里:https://download.csdn.net/download/u011561335/90492002 缘 创作随缘,不定时更新。 创作背景 刚看到csdn出活动了&…

独立部署DeepSeek 大语言模型(如 DeepSeek Coder、DeepSeek LLM)可以采用什么框架?

DeepSeek 大语言模型(如 DeepSeek Coder、DeepSeek LLM),独立部署这些模型可以采用以下几种框架: 1. Hugging Face Transformers 特点 易用性高:提供了丰富的预训练模型接口,对于 DeepSeek 模型&#xff…

SpringBoot 和vue前后端配合开发网页拼图10关游戏源码技术分享

今天分享一个 前后端结合 的网页游戏 开发项目源码技术。 这也是我第一次写游戏类的程序,虽然不是特别复杂的游戏,但是是第一次写,肯定要记录一下了,哈哈。 游戏的内容 就是 我们显示中玩的那个 拼图碎片的 游戏,类似下…

Ubuntu 软件仓库管理概述与基本原理

Ubuntu 软件仓库管理概述与基本原理 在 Ubuntu 系统中,软件仓库(Repository)充当着软件包的集中存储地,就好比一个庞大的在线应用市场,里面包含了各种经过测试的软件包。利用软件仓库,用户无需手动下载和安装软件,只需要通过简单的命令,系统就会自动处理依赖关系,完成…

BERT系列模型

BERT系列模型 1 BERT模型介绍 1.1 BERT简洁 BERT是2018年10月由Google AI研究院提出的一种预训练模型. BERT的全称是Bidirectional Encoder Representation from Transformers.BERT在机器阅读理解顶级水平测试SQuAD1.1中表现出惊人的成绩: 全部两个衡量指标上全面超越人类, …

Leetcode 刷题笔记1 单调栈part01

leetcode 739 每日温度 对于单调栈问题,我觉得是在循环外部增加一些辅助项减少时间复杂度,但增加内存空间的利用 class Solution:def dailyTemperatures(self, temperatures: List[int]) -> List[int]:ans [0] * len(temperatures)stack []for i …

Redis常用数据类型和使用常见以及基本操作举例(适合初学者,以医药连锁管理系统为背景)

Redis的常见数据类型,包括String、Hash、List、Set、Zset等,这些数据类型都有各自的特点和适用场景。接下来,将这些数据类型与医药连锁管理系统的业务场景进行匹配。 String类型,适合存储单个值。在医药连锁管理系统中&#xff0…

C#语言的响应式设计

C#语言的响应式设计 引言 随着信息技术的不断发展,响应式设计已经成为现代软件开发中一个重要的设计理念。它不仅应用于前端开发,还逐渐扩展到后端开发以及各种编程语言中。C#语言作为一种强类型、面向对象的编程语言,逐渐在响应式设计的过…