本文作者:行癫
Qos在业内被叫做“服务质量等级”,但大多数人又称为“服务质量保证”,他是作用在pod上的一个配置,当我们使用kubernetes去创建pod时,默认会给我们的pod分配一个Qos等级。Qos的分类如下:
Guaranteed:Pod 里的每个容器都必须有内存/CPU 限制和请求,而且值必须相等。
Burstable:Pod 里至少有一个容器有内存或者 CPU 请求且不满足 Guarantee 等级的要求,即内存/CPU 的值设置的不同。
BestEffort:容器必须没有任何内存或者 CPU 的限制或请求。
这个配置不是通过一个配置项来配置的,而是通过配置 CPU/内存的 limits 与 requests 值的大小来确认服务质量等级的。
使用一下命令可以看到 pod 的配置输出中有 qosClass
kubectl get pod -o yaml
注意:该配置的作用是为了给资源调度提供策略支持,调度算法根据不同的服务质量等级可以确定将 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"
总结:(编者寄语)
关于kubernetes的Qos的配置很容易被kubernetes工程师忽略,但是这个配置关系的我们每个pod的质量。在我们写yaml文件时,这些我们一般情况会使用默认值,为了提高我们的资源利用率,为了提升每个pod的质量,建议大家在去使用yaml文件创建pod时,根据企业或者项目需求合理定义自己每个pod的质量。
关于kubernetes的其他软件,点击下面的链接即可查看: