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
相关推荐
雨辰AI6 小时前
K8s 国产数据库慢 SQL 自动监控|Prometheus+Grafana 可视化全落地
数据库·sql·安全·容器·kubernetes·grafana·prometheus
GGG7666 小时前
k8s的 Node and Cluster实战
容器·kubernetes
半支烟隐 pzishuo7 小时前
Kubernetes Gateway API 完全指南
容器·kubernetes·gateway
兵bing7 小时前
Docker Compose 配置文件归纳总结-千问
运维·docker·容器
蓝田~8 小时前
Java镜像1.2GB→200MB的瘦身之路:Docker多阶段构建+K8s Pod OOMKilled(137)排查,后端部署避坑指南
java·docker·kubernetes
运维大师9 小时前
【K8S 运维实战】37-金融企业多集群落地
运维·金融·kubernetes
凌虚(失业了求个工作)10 小时前
Kubernetes 编年史:从 Borg 到云原生操作系统
云原生·容器·kubernetes
SLD_Allen10 小时前
从Cloud Native到AI Native:K8s DRA与Agent协议栈
人工智能·云原生·kubernetes·cloud native·ai native
冰封之寂10 小时前
Kubernetes Pod 管理完全指南:从基础命令到高级调度
云原生·容器·kubernetes
ZzzZZzzzZZZzzzz…11 小时前
K8s实战: 用OpenELB破解Service外部访问难题
云原生·容器·kubernetes