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

K8s Pod的QoS类

文章目录

  • Overview
  • Pod的QoS分类
    • Guaranteed
      • 1.如何将 Pod 设置为保证Guaranteed
      • 2. Kubernetes 调度器如何管理Guaranteed类的Pod
    • Burstable
      • 1. 如何将 Pod 设置为Burstable
      • 2.b. Kubernetes 调度程序如何管理 Burstable Pod
    • BestEffort
      • 1. 如何将 Pod 设置为 BestEffort
      • 2. Kubernetes 调度程序如何管理 BestEffort Pod
  • 结论

Overview

服务质量(QoS)类是 Kubernetes 的一个概念,调度器用它来决定 pod 的调度和驱逐优先级。
QoS 类是由 Kubernetes 分配给 pod 的,如以下示例所示,可以通过更改资源request和limit定义来设置。

Pod的QoS分类

  • Guaranteed
  • Burstable
  • BestEffort
    大致如下图所示:
    在这里插入图片描述

要解释 QoS 类,必须了解 cpu 和内存的“Request”和“Limit”概念。request是容器請求获得的资源,limit是容器能够获得的最大资源。

Guaranteed

1.如何将 Pod 设置为保证Guaranteed

Guaranteed类意味着request和limit的资源值是相同的。因为在任何情况下,容器将拥有完全相同的 CPU 和内存。
当request和limit的资源相同时,qosClass 标记如下:

root@k8smaster:~# kubectl get pod calico-node-pqgmw -n kube-system -o yaml|grep limits  -A 5;kubectl get pod calico-node-pqgmw -n kube-system -o yaml|grep qoslimits:cpu: 250mmemory: 70Mirequests:cpu: 250mmemory: 70MiqosClass: Guaranteed

2. Kubernetes 调度器如何管理Guaranteed类的Pod

Kubernetes 调度器通过确保所有容器的内存和 CPU 请求总和低于节点的总 CPU 和内存来管理保证Guaranteed类的 Pod
这些 Pod 优先级最高,除非系统超过资源限制,否则不会被终止。

Burstable

1. 如何将 Pod 设置为Burstable

当容器的内存或 CPU 的limit大于request的值时,Pod 会被分配为Burstable类。
当 Pod 需要一定范围的 CPU 或内存使用时,应使用此类。值可以在定义的request和limit之间。
当limit的值大于request的值时,qosClass 为Burstable,如下所示:


root@k8smaster:~#  kubectl get pod  etcd-k8smaster.pci.co.id -n kube-system -o yaml|grep resources -A 5;kubectl get pod  etcd-k8smaster.pci.co.id -n kube-system -o yaml|grep qosresources:limits:cpu: 100mmemory: 100Mirequests:cpu: 100mmemory: 100MistartupProbe:failureThreshold: 24qosClass: Burstable

如果没有限制值,则 Pod 是“Burstable”,如下所示:

root@k8smaster:~#  kubectl get pod  etcd-k8smaster.pci.co.id -n kube-system -o yaml|grep resources -A 5;kubectl get pod  etcd-k8smaster.pci.co.id -n kube-system -o yaml|grep qosresources:requests:cpu: 100mmemory: 100MistartupProbe:failureThreshold: 24qosClass: Burstable

Kubernetes 调度程序如何管理Burstable Pod

2.b. Kubernetes 调度程序如何管理 Burstable Pod

Kubernetes 调度程序无法确保 Burstable Pod 部署到具有足够资源的节点。
如果没有 BestEffort 类 Pod,则这些 Pod 在达到限制时会先于 Guaranteed 类 Pod 被终止。

BestEffort

1. 如何将 Pod 设置为 BestEffort

当 pod 没有内存或 CPU request或limit的定义时,它会被标记为BestEffort类。
由于没有limits定义,标记为 BestEffort 的 pod 只能获取节点上剩余的内存或 CPU。
当没有limit或request值时,qosClass 如下所示为 BestEffort:

kubectl get pod kube-proxy-sndtg  -n kube-system -o yaml|grep -i resources -A 1 ;kubectl get pod kube-proxy-sndtg  -n kube-system -o yaml|grep -i qosresources: {}securityContext:qosClass: BestEffort

2. Kubernetes 调度程序如何管理 BestEffort Pod

BestEffort类的pod 不保证被管理到有足够资源的节点上。它们能够使用节点上的任何空闲资源。这有时可能会导致其他 pod 的资源问题。
这些类的 pod 优先级最低,如果系统没有内存,它们将首先被终止。

结论

Kubernetes 调度程序根据 Pod 的 QoS 类值来调度 Pod。Pod 的 QoS 类由容器的资源限制和请求定义指定。这些类会影响节点的资源利用率。为了有效利用可用资源,必须考虑它们。

相关文章:

  • 拼接sql字符串工具类
  • AB测试实战
  • Qt5学习笔记
  • HCL模拟器下做M-LAG测试(以及和华为配置对比)-二层架构
  • k8s更改master节点IP
  • Pycharm创建Conda虚拟环境时显示CondaHTTPErOT
  • SpringBoot高手之路-springboot原理篇
  • 【深度学习基础】模型文件介绍
  • Tomcat 配置:一文掌握所有要点
  • 【学习笔记】Redis-AOF日志重写的机制
  • 【AI论文与新生技术】Follow-Your-Emoji:精细可控且富有表现力的自由式人像动画技术
  • 【深度学习】目标检测,Faster-RCNN算法训练,使用mmdetection训练
  • Spring boot项目
  • 商城项目【尚品汇】07分布式锁-2 Redisson篇
  • npm发布自己的插件包
  • Google 是如何开发 Web 框架的
  • 2017 年终总结 —— 在路上
  • canvas 绘制双线技巧
  • js操作时间(持续更新)
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • Phpstorm怎样批量删除空行?
  • Puppeteer:浏览器控制器
  • select2 取值 遍历 设置默认值
  • SwizzleMethod 黑魔法
  • 从重复到重用
  • 对象引论
  • 仿天猫超市收藏抛物线动画工具库
  • 前端路由实现-history
  • 新书推荐|Windows黑客编程技术详解
  • 自定义函数
  • python最赚钱的4个方向,你最心动的是哪个?
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • # 数仓建模:如何构建主题宽表模型?
  • #pragma once与条件编译
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • $GOPATH/go.mod exists but should not goland
  • (2024)docker-compose实战 (9)部署多项目环境(LAMP+react+vue+redis+mysql+nginx)
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (Java数据结构)ArrayList
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • .gitignore文件_Git:.gitignore
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .net 发送邮件
  • .net6Api后台+uniapp导出Excel
  • .NET6实现破解Modbus poll点表配置文件
  • .NetCore发布到IIS
  • .Net的C#语言取月份数值对应的MonthName值
  • .NET简谈设计模式之(单件模式)
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)