k8s Quality of Service

文章目录

      • QoS 分类规则
      • QoS 类别影响
      • 创建 QoS 分类的案例
      • 1. Guaranteed QoS 示例
        • 示例 YAML 文件:
      • 2. Burstable QoS 示例
        • 示例 YAML 文件:
      • 3. BestEffort QoS 示例
        • 示例 YAML 文件:
      • 4. 混合 QoS 示例(多个容器)
        • 示例 YAML 文件:
      • 5. Pod QoS 分配总结
      • 查看 QoS 类别
      • 总结

Kubernetes 提供了 Quality of Service (QoS) 的功能,以帮助管理和保障 Pod 的资源分配。QoS 分类机制根据 Pod 请求和限制的资源配置,将 Pod 分为三种类型,分别是:

  1. Guaranteed:资源请求和限制都已明确设置,并且一致。适用于最需要严格资源保证的场景。
  2. Burstable:只设置了资源请求,或者请求和限制不一致,适用于对资源有一定保证,但仍然能够利用节点余量的容器。
  3. BestEffort:没有设置资源请求和限制。适用于最不重要、能够被最优先终止的容器。

QoS 分类规则

  • Guaranteed:如果 Pod 中的所有容器都设置了 请求和限制 且请求和限制的值相同,那么该 Pod 会被分配到 Guaranteed 类别。
  • Burstable:如果 Pod 中的容器设置了 请求限制,但是请求和限制的值不相同,或者有些容器没有设置 limit,那么该 Pod 会被分配到 Burstable 类别。
  • BestEffort:如果 Pod 中的所有容器都没有设置任何 请求和限制,那么该 Pod 会被分配到 BestEffort 类别。

QoS 类别影响

  • Guaranteed:这种类型的 Pod 会得到最优的资源保障,它不会被调度到资源过载的节点上,也不会被 OOM(Out Of Memory)或系统压力杀死。
  • Burstable:这种类型的 Pod 可能会在资源紧张时被限制或终止,尤其是在其他 Pod 需要更多资源时。
  • BestEffort:这种类型的 Pod 是最容易被抢占和杀死的,尤其在节点资源不足时,Kubernetes 会优先选择终止它们。

创建 QoS 分类的案例

以下是几个示例,展示了不同类型的 QoS 分类如何在实际应用中使用。


1. Guaranteed QoS 示例

Guaranteed QoS 适用于那些希望获得最大资源保障的应用,容器的 请求和限制 设置为相同的值。

示例 YAML 文件:
apiVersion: v1
kind: Pod
metadata:name: guaranteed-pod
spec:containers:- name: app-containerimage: nginxresources:requests:memory: "512Mi"cpu: "500m"limits:memory: "512Mi"cpu: "500m"
  • requestslimits 都设置为相同的值 512Mi500m
  • 这种配置确保了该容器会被分配并保证获得 500m 的 CPU 和 512Mi 的内存,且不会超出这个限制,因此属于 Guaranteed QoS 类型。

2. Burstable QoS 示例

Burstable QoS 适用于那些希望获得一定资源保证,但同时允许在节点有剩余资源时 “突发” 使用更多资源的应用。

示例 YAML 文件:
apiVersion: v1
kind: Pod
metadata:name: burstable-pod
spec:containers:- name: app-containerimage: nginxresources:requests:memory: "256Mi"cpu: "200m"limits:memory: "1Gi"cpu: "2"
  • requests 设置了 256Mi 的内存和 200m 的 CPU,表示容器的最小资源需求。
  • limits 设置了 1Gi 的内存和 2 核 CPU,表示容器的最大资源使用限制。
  • 由于请求和限制的资源不同,因此该 Pod 会被分配到 Burstable QoS 类型。

3. BestEffort QoS 示例

BestEffort QoS 适用于那些不需要保证资源的应用,Kubernetes 会尽可能地为这些容器提供资源,但如果节点资源不足,它们会被优先驱逐。

示例 YAML 文件:
apiVersion: v1
kind: Pod
metadata:name: besteffort-pod
spec:containers:- name: app-containerimage: nginxresources: {}  # 没有设置 requests 和 limits
  • 该 Pod 没有设置 requestslimits,因此该 Pod 会被分配到 BestEffort QoS 类型。
  • 它会在集群资源紧张时被优先终止,适用于不需要严格资源保证的非关键任务。

4. 混合 QoS 示例(多个容器)

在一个 Pod 中,可以有多个容器。如果某些容器的请求和限制相同,而其他容器的请求和限制不同,Kubernetes 会根据不同容器的配置来为 Pod 分配 QoS 类别。

示例 YAML 文件:
apiVersion: v1
kind: Pod
metadata:name: mixed-pod
spec:containers:- name: container-1image: nginxresources:requests:memory: "512Mi"cpu: "500m"limits:memory: "512Mi"cpu: "500m"- name: container-2image: nginxresources:requests:memory: "256Mi"cpu: "250m"limits:memory: "1Gi"cpu: "1"
  • container-1Guaranteed 类型,因为它的 requestslimits 相同。
  • container-2Burstable 类型,因为它的 requestslimits 不同。

在这种情况下,Pod 的 QoS 会根据容器中的最高级别来进行分配,因此这个 Pod 会被视为 Burstable

当 Pod 中有容器的 requests 和 limits 不一致时,整个 Pod 将被分类为 Burstable,即使某些容器满足 Guaranteed 的条件。


5. Pod QoS 分配总结

  • Guaranteed:请求和限制都设置,且请求和限制的值相同。
  • Burstable:请求和限制都设置,且请求和限制的值不同,或者只设置了其中之一。
  • BestEffort:没有设置任何请求和限制。

查看 QoS 类别

你可以使用以下命令查看一个 Pod 的 QoS 类别:

kubectl get pod <pod-name> -o=jsonpath='{.status.qosClass}'

例如:

kubectl get pod burstable-pod -o=jsonpath='{.status.qosClass}'

输出会是类似这样的内容:

Burstable

总结

Kubernetes 的 QoS 分类是通过 请求(requests)限制(limits) 来实现的,可以帮助管理员根据资源需求进行精细化控制。对于生产环境中的关键任务应用,可以使用 Guaranteed 类型来确保它们有稳定的资源;对于一些可适当突发的应用,可以使用 Burstable 类型;对于不需要严格资源控制的应用,可以使用 BestEffort 类型,降低它们的资源消耗。

通过合理设置资源请求和限制,你可以确保在节点资源有限的情况下,重要任务能够优先获得资源,而不重要的任务则能够适应资源的不足。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/62898.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面向对象(二)——类和对象(上)

1 类的定义 做了关于对象的很多介绍&#xff0c;终于进入代码编写阶段。 本节中重点介绍类和对象的基本定义&#xff0c;属性和方法的基本使用方式。 【示例】类的定义方式 // 每一个源文件必须有且只有一个public class&#xff0c;并且类名和文件名保持一致&#xff01; …

【HarmonyOS】鸿蒙应用地理位置获取,地理名称获取

【HarmonyOS】鸿蒙应用地理位置获取&#xff0c;地理名称获取 一、前言 首先要理解地理专有名词&#xff0c;当我们从系统获取地理位置&#xff0c;一般会拿到地理坐标&#xff0c;是一串数字&#xff0c;并不是地理位置名称。例如 116.2305&#xff0c;33.568。 这些数字坐…

关于数据库数据国际化方案

方案一&#xff1a;每个表设计一个翻译表 数据库国际化的应用场景用到的比较少&#xff0c;主要用于对数据库的具体数据进行翻译&#xff0c;在需要有大量数据翻译的场景下使用&#xff0c;举个例子来说&#xff0c;力扣题目的中英文切换。参考方案可见&#xff1a; https://b…

「Mac畅玩鸿蒙与硬件37」UI互动应用篇14 - 随机颜色变化器

本篇将带你实现一个随机颜色变化器应用。用户点击“随机颜色”按钮后&#xff0c;界面背景会随机变化为淡色系颜色&#xff0c;同时显示当前的颜色代码&#xff0c;页面还会展示一只猫咪图片作为装饰&#xff0c;提升趣味性。 关键词 UI互动应用随机颜色生成状态管理用户交互…

跟着官方文档快速入门RAGAS

官网: Ragas Ragas&#xff08;Retrieval-Augmented Generation, RAG&#xff09;是一个基于简单手写提示的评估框架&#xff0c;通过这些提示全自动地衡量答案的准确性、 相关性和上下文相关性。这种评估方法不需要访问人工注释的数据集或参考答案&#xff0c;使得评估过程更…

掌握 Spring Boot 中的缓存:技术和最佳实践

缓存是一种用于将经常访问的数据临时存储在更快的存储层&#xff08;通常在内存中&#xff09;中的技术&#xff0c;以便可以更快地满足未来对该数据的请求&#xff0c;从而提高应用程序的性能和效率。在 Spring Boot 中&#xff0c;缓存是一种简单而强大的方法&#xff0c;可以…

我谈冈萨雷斯对频域滤波的误解——快速卷积与频域滤波之间的关系

在Rafael Gonzalez和Richard Woods所著的《数字图像处理》中&#xff0c;Gonzalez对频域滤波是有误解的&#xff0c;在频域设计滤波器不是非得图像和滤波器的尺寸相同&#xff0c;不是非得在频域通过乘积实现。相反&#xff0c;FIR滤波器设计都是构造空域脉冲响应。一般的原则是…

AI高中数学教学视频生成技术:利用通义千问、MathGPT、视频多模态大模型,语音大模型,将4个模型融合 ,生成高中数学教学视频,并给出实施方案。

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下AI高中数学教学视频生成技术&#xff1a;利用通义千问、MathGPT、视频多模态大模型&#xff0c;语音大模型&#xff0c;将4个模型融合 &#xff0c;生成高中数学教学视频&#xff0c;并给出实施方案。本文利用专家模…

Linux下,用ufw实现端口关闭、流量控制(二)

本文是 网安小白的端口关闭实践 的续篇。 海量报文&#xff0c;一手掌握&#xff0c;你值得拥有&#xff0c;让我们开始吧&#xff5e; ufw 与 iptables的关系 理论介绍&#xff1a; ufw&#xff08;Uncomplicated Firewall&#xff09;是一个基于iptables的前端工具&#xf…

MySQL之数据完整性

数据的完整性约束可以分为三类: 实体完整性、域完整性和引用完整性。 说来说去&#xff08;说主键&#xff0c;外键&#xff0c;以及⼀些约束&#xff09; 1、实体完整性 &#xff08;实体就是行&#xff09; 什么是关系型数据库&#xff1f; 一个表代表一类事务&#xff0…

echarts的双X轴,父级居中的相关配置

前言&#xff1a;折腾了一个星期&#xff0c;在最后一天中午&#xff0c;都快要放弃了&#xff0c;后来坚持下来&#xff0c;才有下面结果。 这个效果就相当是复合表头&#xff0c;第一行是子级&#xff0c;第二行是父级。 子级是奇数个时&#xff0c;父级label居中很简单&…

配置宝塔php curl 支持http/2 发送苹果apns消息推送

由于宝塔面板默认的php编译的curl未加入http2的支持&#xff0c;如果服务需要使用apns推送等需要http2.0的访问就会失败&#xff0c;所以重新编译php让其支持http2.0 编译方法&#xff1a; 一、安装nghttp2 git clone https://github.com/tatsuhiro-t/nghttp2.git cd nghttp…

记录一次网关异常

记一次网关异常 网关时不时就会出现下面的异常。关键是不知道什么时候就会报错&#xff0c;并且有时候就算什么都不操作&#xff0c;也会导致这个异常。 ERROR org.springframework.scheduling.support.TaskUtils$LoggingErrorHandler - Unexpected error occurred in schedul…

动态艺术:用Python将文字融入GIF动画

文章内容&#xff1a; 在数字媒体的多样化发展中&#xff0c;GIF动画作为一种流行的表达形式&#xff0c;常被用于广告、社交媒体和娱乐。本文通过一个具体的Python编程示例&#xff0c;展示了如何将文字以动态形式融入到GIF动画中&#xff0c;创造出具有视觉冲击力的动态艺术…

@antv/x6 再vue中 ,自定义图形,画流程图、数据建模、er图等图形

X6 是基于 HTML 和 SVG 的图编辑引擎&#xff0c;提供低成本的定制能力和开箱即用的内置扩展&#xff0c;方便我们快速搭建 DAG 图、ER 图、流程图、血缘图等应用。 最终效果图 1.安装 npm install antv/x6 --save //x6主要包 npm install antv/x6-vue-shape //使用vue组…

2.4特征预处理(机器学习)

2.4特征预处理 2.4.1 什么是特征预处理 通过 一些转换函数将特征数据转换成更加适合算法模型的特征数据过程。 1 包含内容 数值型数据的无量纲化&#xff1a; 归一化 标准化 2 特征预处理API sklearn.preprocessing 为什么要进行归一化/标准化&#xff1f; 特征的单…

前端、后端、测试?如何选择

目录 一、前端开发 &#xff08;一&#xff09;职业概述 &#xff08;二&#xff09;需学习的技术 二、后端开发 &#xff08;一&#xff09;职业概述 &#xff08;二&#xff09;需学习的技术 三、测试 &#xff08;一&#xff09;职业概述 &#xff08;二&#xff0…

AI - 谈谈RAG中的查询分析(2)

AI - 谈谈RAG中的查询分析&#xff08;2&#xff09; 大家好&#xff0c;RAG中的查询分析是比较有趣的一个点&#xff0c;内容丰富&#xff0c;并不是一句话能聊的清楚的。今天接着上一篇&#xff0c;继续探讨RAG中的查询分析&#xff0c;并在功能层面和代码层面持续改进。 功…

hadoop环境配置-创建hadoop用户+更新apt+安装SSH+配置Java环境

一、创建hadoop用户(在vm安装的ubantu上打开控制台) 1、sudo useradd -m hadoop -s /bin/bash &#xff08;创建hadoop用户&#xff09; 2、sudo passwd hadoop (设置密码) 3、sudo adduser hadoop sudo&#xff08;将新建的hadoop用户设置为管理员&#xff09; 执行如下图 将…

大数据新视界 -- Hive 数据湖架构中的角色与应用(上)(25 / 30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…