QOS

QOS的全称为Quality Of Service,意思为服务质量,我们可以通俗地理解为Pod的级别。QOS有三个值:

  • Guaranteed

  • Burstable

  • BestEffort

当主机资源不够时(比如CPU、内存),kubelet会对主机上的Pod进行驱逐,kubelet会最先驱逐 BestEffort 的Pod,如果资源还紧张则再驱逐Burstable的Pod,最后才驱逐Guaranteed的Pod。所以,在实际生产中,我们一般会把重要Pod的QOS设置为Guaranteed,比如k8s的网络插件、dns插件、负载均衡插件等等。

Guaranteed

当Pod满足以下两个条件,则该Pod的QOS为Guaranteed

  • Pod中每一个Container都有requests.cpu与limits.cpu,且它们的值一样

  • Pod中每一个Container都有requests.memory与limits.memory,且它们的值一样

比如,下面的这个Pod就是Guaranteed

apiVersion: v1
kind: Pod
metadata:
name: qos-demo
spec:
containers:
- name: qos-demo-ctr
image: nginx
resources:
limits:
memory: "200Mi"
cpu: "700m"
requests:
memory: "200Mi"
cpu: "700m"

当在集群中创建这个Pod后,可以通过命令查看它的QOS

$ kubectl get pod qos-demo -o yaml
...
spec:
containers:
...
resources:
limits:
cpu: 700m
memory: 200Mi
requests:
cpu: 700m
memory: 200Mi
...
qosClass: Guaranteed

Last updated

Was this helpful?