72.服务质量等级(QoS)

服务质量等级(QoS)

QoS(Quality of Service,大部分译为“服务质量等级”,又译作“服务质量保证”,是作用在Pod上的一个配置,当Kubernetes创建一个Pod时,它就会给这个Pod分配一个QoS等级,可以是以下等级之一:

  • GuaranteedPod里的每个容器都必须有内存/CPU限制和请求,而且值必须相等。
  • BurstablePod里至少有一个容器有内存或者CPU请求且不满足Guarantee等级的要求,即内存/CPU的值设置的不同。
  • BestEffort:容器必须没有任何内存或者CPU的限制或请求。

该配置不是通过一个配置项来配置的,而是通过配置CPU/内存的 limitsrequests 值的大小来确认服务质量等级的。使用 kubectl get pod -o yaml 可以看到pod的配置输出中有 qosClass 一项。该配置的作用是为了给资源调度提供策略支持,调度算法根据不同的服务质量等级可以确定将pod调度到哪些节点上。

例如,下面这个YAML配置中的Pod资源配置部分设置的服务质量等级就是 Guarantee

spec:
  containers:
    ...
    resources:
      limits:
        cpu: 100m
        memory: 128Mi
      requests:
        cpu: 100m
        memory: 128Mi

下面的YAML配置的Pod的服务质量等级是 Burstable

spec:
  containers:
    ...
    resources:
      limits:
        memory: "180Mi"
      requests:
        memory: "100Mi"

参考

上一页