K8s的Qos
作者:互联网
QoS(Quality of Service) 简介 QoS(Quality of Service),大部分译为 “服务质量等级”,又译作 “服务质量保证”,是作用在 Pod 上的一个配置,当 Kubernetes 创建一个 Pod 时,它就会给这个 Pod 分配一个 QoS 等级,可以是以下等级之一:
Guaranteed:Pod 里的每个容器都必须有内存/CPU 限制和请求,而且值必须相等。如果一个容器只指明limit而未设定request,则request的值等于limit值。
Burstable:Pod 里至少有一个容器有内存或者 CPU 请求且不满足 Guarantee 等级的要求,即内存/CPU 的值设置的不同。
BestEffort:容器必须没有任何内存或者 CPU 的限制或请求。
设置资源很烦,但是十分必要。如果不设,Pod虽然很容易被调度,可以使用整个node资源,但是当资源紧俏时,会被第一个kill。
该配置不是通过一个配置项来配置的,而是通过配置 CPU/MEM的 limits
与 requests
值的大小来确认服务质量等级
。
可压缩资源:CPU 在压缩资源部分已经提到CPU属于可压缩资源,当pod使用超过设置的limits值,pod中进程使用cpu会被限制,但不会被kill。
不可压缩资源:内存 Kubernetes通过cgroup给pod设置QoS级别,当资源不足时先kill优先级低的pod,当container因为OOM被kill掉时,系统倾向于在其原所在的机器上重启该container或其他重新创建一个pod。在实际使用过程中,通过OOM分数值来实现,OOM分数值从0-1000。
OOM分数
三种 QoS 优先级,从高到低(从左往右)
Guaranteed --> Burstable --> BestEffort
OOM 的优先级如下:
BestEffort Pod > Burstable Pod > 其它进程 > Guaranteed Pod > kubelet/docker 等 > sshd 等进程
使用建议 如果资源充足,可以将 pod QoS 设置为 Guaranteed 不是很关键的服务 pod QoS 设置为 Burstable 或者 BestEffort。
参考连接:
1.https://blog.csdn.net/yujia_666/article/details/108806068
2.https://blog.csdn.net/weixin_45141866/article/details/120100728
标签:QoS,OOM,内存,Qos,Pod,K8s,CPU,pod 来源: https://www.cnblogs.com/xiaoxiaomuyuyu/p/16427583.html