Pod 的QoS服务质量

QoS(Quality of Service),可译为 "服务质量等级",或者译作 "服务质量保证",是作用在 Pod 上的一个配置,当 Kubernetes 创建一个 Pod 时,它就会给这个 Pod 分配一个 QoS 等级。 Kubernetes使用Qos类来决定Pod的调度和驱逐策略。

Guaranteed

  • Pod 中的每个容器,包含初始化容器,必须指定内存请求和内存限制,并且两者要相等。
  • Pod 中的每个容器,包含初始化容器,必须指定 CPU 请求和 CPU 限制,并且两者要相等。
# cat qos-pod.yaml 
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"

# kubectl apply -f qos-pod.yaml 
pod/qos-demo created

# kubectl describe pod qos-demo | grep QoS
QoS Class:       Guaranteed

以上可以看出 Kubernetes 为 Pod 配置的 QoS 类为 Guaranteed

如果容器指定了自己的内存限制,但没有指定内存请求,Kubernetes 会自动为它指定与内存限制匹配的内存请求。 同样,如果容器指定了自己的 CPU 限制,但没有指定 CPU 请求,Kubernetes 会自动为它指定与 CPU 限制匹配的 CPU 请求。

Burstable

  • Pod 不符合 Guaranteed QoS 类的标准。
  • Pod 中至少一个容器具有内存或 CPU 请求。
# cat qos-pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: qos-demo-2
spec:
  containers:
  - name: qos-demo-2-ctr
    image: nginx
    resources:
      limits:
        memory: "200Mi"
      requests:
        memory: "100Mi"

# kubectl apply -f qos-pod.yaml 
pod/qos-demo-2 created

# kubectl describe pod qos-demo | grep QoS
QoS Class:       Burstable

以上可以看出 Kubernetes 为 Pod 配置的 QoS 类为 Burstable

BestEffort

  • Pod 中的容器必须没有设置内存和 CPU 限制或请求
# cat qos-pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: qos-demo-2
spec:
  containers:
  - name: qos-demo-2-ctr
    image: nginx

# kubectl apply -f qos-pod.yaml 
pod/qos-demo-2 created

# kubectl describe pod qos-demo | grep QoS
QoS Class:       BestEffort

小结

QOS是K8S中的一种资源保护机制,其主要是针对不可压缩资源比如内存的一种控制技术。比如在内存中,其通过为不同的Pod和容器构造OOM评分,并且通过内核策略的辅助,从而实现当节点内存资源不足的时候,内核可以按照策略的优先级,优先kill掉那些优先级比较低(分值越高,优先级越低)的Pod。

优先级从高到低排序:

  • Guaranteed
  • Burstable
  • BestEffort

参考文章

https://kubernetes.io/zh/docs/tasks/configure-pod-container/quality-service-pod/

点击 "阅读原文" 获取更好的阅读体验!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云原生运维社区

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值