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
相关推荐
csdn_aspnet1 小时前
Docker Prune:完整指南与上手示例
运维·docker·容器·prune
谢白羽4 小时前
从传统运维到 AI Infra: K8s 上调度 100 张 GPU踩坑笔记
运维·人工智能·缓存·kubernetes·vllm·sglang·vllm-omni
xianyuCcCcCCCcc5 小时前
Kubernetes 资源调度与弹性伸缩:Schedule、Metric、HPA 与 Quota
云原生·kubernetes
我不会起名字3225 小时前
滚动更新时请求 502:Pod 终止与 endpoint 摘除的时间差
kubernetes·滚动更新·排查·优雅停机
方便面不加香菜6 小时前
Docker安装详解--基于Ubuntu环境
运维·docker·容器
L0208248 小时前
Kubernetes Service 与 kube‑proxy 深度详解
运维·算法·云原生·容器·贪心算法·kubernetes
SatanII8 小时前
Kubernetes Ingress
kubernetes·ingress
SatanII8 小时前
kubernetes service && proxy
云原生·容器·kubernetes
艾伦_耶格宇9 小时前
【kubernetes - 1.28版本】-1 kubernetes基础
云原生·容器·kubernetes
Initialize-le9 小时前
PVC 一直 Pending?五步排查存储绑定
云原生·容器·kubernetes