kubernetes服务质量之QoS类

一、QoS类

Kubernetes的QoS(Quality of Service)类别允许您指定可用于应用程序的可用资源数量,以便更好地控制应用程序的可用性。它还允许您限制特定应用程序的资源使用率,以帮助保护系统的稳定性和性能。

Kubernetes 创建 Pod 时就给它指定了下列三种 QoS 类:

  • Guaranteed
  • Burstable
  • BestEffort

1.1 QoS 类为 Guaranteed 的 Pod

对于 QoS 类为 Guaranteed 的 Pod:

  1. Pod 中的每个容器都必须指定内存限制和内存请求。
  1. 对于 Pod 中的每个容器,内存限制必须等于内存请求。
  1. Pod 中的每个容器都必须指定 CPU 限制和 CPU 请求。
  1. 对于 Pod 中的每个容器,CPU 限制必须等于 CPU 请求。

这些限制同样适用于初始化容器和应用程序容器。

下面是目录 qos-pod.yaml 容器的 Pod 配置文件。 容器设置了内存请求和内存限制,值都是 200 MiB。 容器设置了 CPU 请求和 CPU 限制,值都是 700 MiCPU:

yaml 复制代码
[root@k8s-master-node1 kubernetes]# cat qos-pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: qos-1
spec:
  containers:
  - name: qos-1
    image: nginx:latest
    resources:
      limits:
        cpu: "200m"
        memory: "700Mi"
      requests:
        cpu: "200m"
        memory: "700Mi"
  1. 创建Pod
yaml 复制代码
[root@k8s-master-node1 kubernetes]# kubectl create -f qos-pod.yaml 
pod/qos-1 created
  1. 查看Pod详情

输出结果表明 Kubernetes 为 Pod 配置的 QoS 类为 Guaranteed。 结果也确认了 Pod 容器设置了与内存限制匹配的内存请求,设置了与 CPU 限制匹配的 CPU 请求。

yaml 复制代码
[root@k8s-master-node1 kubernetes]# kubectl describe pod qos-1 
···
    Limits:
      cpu:     200m
      memory:  700Mi
    Requests:
      cpu:        200m
      memory:     700Mi
···
QoS Class:                   Guaranteed
···

1.2 QoS 类为 Burstable 的 Pod

指定 Pod 的 QoS 类为 Burstable需要满足下面的两个条件:

  1. Pod 不符合 Guaranteed QoS 类的标准。
  1. Pod 中至少一个容器具有内存或 CPU 的请求或限制。

下面是目录 qos-pod-2.yaml 容器的 Pod 配置文件。 容器设置了内存限制 200 MiB 和内存请求 100 MiB。

yaml 复制代码
apiVersion: v1
kind: Pod
metadata:
  name: qos-2
spec:
  containers:
  - name: qos-2
    image: nginx
    resources:
      limits:
        memory: "200Mi"
      requests:
        memory: "100Mi"
  1. 创建Pod
yaml 复制代码
[root@k8s-master-node1 kubernetes]# kubectl create -f qos-pod.yaml 
pod/qos-2 created
  1. 查看Pod详情

输出结果表明 Kubernetes 为 Pod 配置的 QoS 类为Burstable 。 结果也确认了 Pod 容器设置了与内存限制匹配的内存请求。

yaml 复制代码
[root@k8s-master-node1 kubernetes]# kubectl describe pod qos-2
···
    Limits:
      memory:  200Mi
    Requests:
      memory:     100Mi
···
QoS Class:                   Burstable
···

1.3 QoS 类为 BestEffort的Pod

对于 QoS 类为 BestEffort 的 Pod,Pod 中的容器必须没有设置内存和 CPU 限制或请求。

下面是目录 qos-pod-3.yaml 容器的 Pod 配置文件。 容器没有设置内存和 CPU 限制或请求。

yaml 复制代码
[root@k8s-master-node1 kubernetes]# cat qos-pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: qos-3
spec:
  containers:
  - name: qos-3
    image: nginx:latest
  1. 创建Pod
yaml 复制代码
[root@k8s-master-node1 kubernetes]# kubectl create -f qos-pod.yaml
pod/qos-3 created
  1. 查看Pod详情

输出结果表明 Kubernetes 为 Pod 配置的 QoS 类为BestEffort

yaml 复制代码
[root@k8s-master-node1 kubernetes]# kubectl describe pod qos-3 | grep QoS
QoS Class:                   BestEffort
相关推荐
darkdragonking11 小时前
OpenEuler 22.03 ,以docker ce 安装 Milvus 及可视化工具
docker·容器·milvus
真上帝的左手13 小时前
11. 容器化 vs 虚拟化-K8s-工作负载实战
云原生·容器·kubernetes
极客先躯14 小时前
高级java每日一道面试题-2026年01月18日-实战篇[Docker]-如何清理仓库中的旧镜像?
java·运维·docker·容器
张忠琳16 小时前
【kubernetes v1.21】(controller-manager part 1)kube-controller-manager 核心架构与启动流程
云原生·架构·kubernetes
qq_4523962316 小时前
第十五篇:《Docker 与 Kubernetes 集成:从 Swarm 到 K8s 的迁移》
docker·容器·kubernetes
HackTwoHub17 小时前
K8s综合渗透测试工具,集成信息搜集、权限逃逸、横向移动,一站式搞定全流程渗透测试工作
人工智能·安全·web安全·云原生·容器·kubernetes·系统安全
做个文艺程序员17 小时前
第05篇:K8s CI/CD 全流程:GitOps × ArgoCD × Harbor——Java SaaS 从代码提交到生产部署一键直达
ci/cd·kubernetes·argocd
人工智能培训17 小时前
数字孪生建模常用方式有哪些?
人工智能·深度学习·机器学习·容器·知识图谱
lpfasd12317 小时前
docker中默认网络的作用和注意事项
网络·docker·容器
IT策士17 小时前
第 37 篇 k8s之调度进阶:亲和性、污点与容忍
云原生·容器·kubernetes