本文作者:行癲
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的其他軟件,點擊下面的鏈接即可查看: