K8S QoS等级

在 Kubernetes (K8S) 中,QoS(Quality of Service,服务质量)等级用于定义 Pod 在资源调度和管理过程中的优先级,确保在资源紧张时能够更好地管理和分配资源。Kubernetes 根据 Pod 的资源请求和限制将 Pod 分为三种 QoS 等级:

1. Guaranteed (保证)

当一个 Pod 中的所有容器都同时满足以下条件时,该 Pod 被分配为 Guaranteed` 等级:

  • 所有容器都设置了 CPU 和内存的requests limits ,且requests 等于 limits

这意味着容器需要使用多少资源(requests),就限制在这个范围内(limits)。 Guaranteed 等级的 Pod 在集群中有最高优先级,在资源争夺时最不容易被驱逐(evict)。

适用场景:

适用于关键任务工作负载,这些工作负载必须得到稳定的资源分配,并且不能因为资源紧张而被驱逐。

qos类型是Guaranteed测试pod例子,requests 等于 limits

bash 复制代码
---
##pod yaml如下:
apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - name: nginx
    image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:stable
    imagePullPolicy: IfNotPresent
    ports:
    - containerPort: 80
    resources:
      limits:       #####requests与limit的值相等
        cpu: 300m
        memory: 400Mi
      requests:
        cpu: 300m
        memory: 400Mi

查看qos类型:

bash 复制代码
#查看qos
[root@node-1]# kubectl describe po nginx   | grep QoS
QoS Class:                   Guaranteed

2. Burstable (突发)

当一个 Pod 中至少有一个容器的 requests 小于 limits (即允许资源超额使用)时,该 Pod 被分配为 Burstable 等级:

  • 至少一个容器设置了requests和limits****,但**** requests 小于 limits
  • 其他容器可以只设置 requests 或只设置 limits 。

Burstable 等级的 Pod 允许在资源充足时使用超过 requests 的资源(但不超过 limits ),但在资源紧张时,优先级低于 Guaranteed`,可能会受到影响。

适用场景:

适用于需要灵活使用资源的场景,这些工作负载通常可以容忍一定的资源波动,但仍需要有基本的资源保障。

3. BestEffort (尽力而为)

当一个 Pod 中的所有容器都没有设置 requests 和 limits 时,该 Pod 被分配为 BestEffort` 等级:

  • 所有容器都未设置**requests ****和**** limits

BestEffort 等级的 Pod 没有任何资源保障,在资源争夺时最容易被驱逐,优先级最低。

适用场景:

适用于非关键任务、临时性任务或者对资源需求不确定的应用,如一些辅助性服务或非重要的测试任务。

qos类型是BestEffort测试pod例子,容器必须没有任何内存或者 CPU 的requests 和 limits限制。

bash 复制代码
---
##pod yaml如下:
apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - name: nginx
    image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:stable
    imagePullPolicy: IfNotPresent
    ports:
    - containerPort: 80

查看qos类型:

bash 复制代码
#查看qos
[root@node-1]# kubectl describe po nginx   | grep QoS
QoS Class:                   BestEffort

4. 总结

  • Guaranteed:资源保证度最高,最不容易被驱逐。适用于关键任务应用。
  • Burstable:资源请求小于资源限制,能够在有余量的情况下使用更多资源。适用于需要一定灵活性的应用。
  • BestEffort:没有资源保证,优先级最低,最容易被驱逐。适用于非关键任务应用。

Kubernetes 通过这些 QoS 等级,结合节点上的资源使用情况,智能地调度和管理 Pod 的运行,确保在资源紧张时优先保障关键应用的稳定运行。

相关推荐
IT策士3 小时前
第17篇 Docker Compose 进阶实战:多 Compose 文件与环境覆盖
docker·容器·eureka
Devin~Y3 小时前
大厂Java面试实录:Spring Boot/Cloud、Kafka、Redis、K8s 可观测性 + RAG/Agent(小Y翻车版)
java·spring boot·redis·spring cloud·kafka·kubernetes·mybatis
菜萝卜子4 小时前
【Docker】Harbor 代理缓存(Pull-Through Cache)配置与使用指南
spring cloud·云原生·eureka
IT策士4 小时前
Docker 从 0 到 1 再到 Kubernetes 实战:第13篇 Compose 环境变量与配置管理
docker·容器·kubernetes
Regentsoft丽晶软件4 小时前
传统单体架构拖垮分销效率:2026品牌分销系统微服务化升级的价值拆解
微服务·云原生·架构
逻极4 小时前
Go 从入门到精通:并发编程与云原生实践
微服务·云原生·go·并发
木雷坞4 小时前
Docker / K8s 镜像拉取失败排查:专属加速域名与白名单配置思路
docker·容器·kubernetes
lwx9148525 小时前
离线安装k8s 1.22.12版本
云原生·容器·kubernetes
涛声依旧-底层原理研究所5 小时前
Docker+K8s:云原生应用基石
docker·kubernetes
yn005 小时前
Docker 一键部署加密支付网关:从零开始完整教程
运维·docker·容器