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
相关推荐
是枚小菜鸡儿吖19 小时前
把视频教程变成可复习的笔记:Docker 部署 BiliNote,自动转写与总结
笔记·docker·容器
浪兎兎1 天前
【Kubernetes 实战】(二)部署 Ruoyi-Cloud —— 部署服务
云原生·容器·kubernetes
淼澄研学1 天前
Proliferate开源框架技术解析与Docker部署实操
docker·容器·开源
浪兎兎1 天前
Docker 容器技术笔记
笔记·docker·容器
Zhu7581 天前
在Docker环境离线部署最新版Harbor
运维·docker·容器
众人皆醒我独醉1 天前
流量路由:Istio 与 Knative 的集成
面试·kubernetes·llm
众人皆醒我独醉1 天前
模型加载:storage-initializer 与节点级缓存
面试·kubernetes·gpu
SakitamaX1 天前
pod管理及其相关实验
运维·kubernetes
天蓝不会忘记021 天前
pod的控制器
容器·kubernetes
DevOps老兵1 天前
Kubernetes生产运维02:只会get pods还不够,kubectl排障工具箱怎么组合使用
运维·容器·kubernetes·kubectl·devops·故障排查·sre