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
相关推荐
名字还没想好☜24 分钟前
Docker 网络实战:bridge/host/none/自定义网络、容器互通与端口映射踩坑
运维·docker·kubernetes
探索云原生3 小时前
KubeClipper 1.7.0 发布:Operation 优化与 Kubernetes 1.37 支持
linux·docker·云原生·kubernetes·go
fengkai45454 小时前
八、Docker详解1-3
运维·docker·容器
MrSYJ7 小时前
Veth pair 细讲
docker·云原生·容器
秦jh_7 小时前
【Docker】容器
运维·docker·容器
天天喝旺仔9 小时前
Prometheus + Grafana 监控告警体系搭建实战:从 Exporter 指标采集、PromQL 查询到 Alertmanager 告警落地
容器·kubernetes·grafana·prometheus·时序数据库
大盛供应链·卢生19 小时前
哪些国产芯片可以替代进口芯片,哪些替代不了
fpga开发·容器
Mr小林1 天前
Docker 安装教程(在线 + 离线)
运维·docker·容器
wdfk_prog1 天前
VMware Ubuntu 虚拟机从 124 GB 压缩到 33 GB
运维·缓存·docker·容器
闲云野鹤在人间1 天前
Docker入门|第3章 镜像详解
linux·网络·docker·容器·centos·云计算·php