線上業務對網路品質敏感、對網路延遲指標要求高,而離線業務對網路頻寬佔用大,如果兩種業務在一起運行而不做任何控制,突發的流量很可能影響線上業務,從而影響整體網路品質。通過對Pod進行細粒度的QoS配置,可以顯著改善這種情況。本文介紹如何使用Kubernetes定義的Pod Annotations、涉及的頻寬節流設定資訊以及如何配置優先順序控制策略。
頻寬節流設定
Terway網路外掛程式支援對Pod網路頻寬進行控制,您可以使用以下Pod Annotations指定Pod出、入方向的頻寬:
Annotation | Mean |
kubernetes.io/ingress-bandwidth: 10M | Ingress bandwidth |
kubernetes.io/egress-bandwidth: 10M | Egress bandwidth |
頻寬節流設定能力和叢集網路類型相關,支援情況如下:
Terway Mode | Egress Shaping | Ingress Shaping |
VPC Mode (legacy) | ||
共用ENI多IP模式 | ||
共用ENI多IP模式+IPvlan eBPF(legacy) | ||
共用ENI多IP模式+DataPathv2 |
DataPathv2模式下,Egress 、Ingress頻寬節流設定只對出入節點流量生效,同節點流量不生效。
DataPathv2模式下,Ingress頻寬節流設定從Terway v1.13.0版本起提供支援。
使用Kubernetes定義的Pod Annotations
對於在Terway v1.3.0版本前建立的叢集,您需要修改Terway設定檔來啟用Kubernetes定義的Pod Annotations。
執行以下命令,開啟和修改Terway的ConfigMap。
kubectl edit cm -n kube-system eni-config
在
data.10-terway.conf
下,增加capabilities
配置。apiVersion: v1 data: 10-terway.conf: | { "cniVersion": "0.3.1", "name": "terway", "capabilities": {"bandwidth": true}, "type": "terway" }
修改完成後,按Esc鍵,輸入:wq!並按Enter鍵,儲存修改後的設定檔並退出編輯模式。
執行以下命令,重建Terway Pods使得配置生效。
kubectl delete -n kube-system pod -l app=terway-eniip
配置優先順序控制策略
預設情況下,網卡隊列在發送資料包時執行先入先出的規則,通過對資料包進行分類,可以優先發送延遲敏感業務的資料包,從而改善延遲。預設情況下,優先順序控制未啟用,您需要通過配置來啟用。
此功能不支援DatapathV2類型叢集。
Terway支援通過以下Pod Annotations指定Pod使用的優先順序。
Annotation | Mean |
k8s.aliyun.com/network-priority: "guaranteed" | 延遲敏感業務 |
k8s.aliyun.com/network-priority: "best-effort" | 普通業務 |
k8s.aliyun.com/network-priority: "burstable" | 大頻寬業務 |
通過以下配置啟用優先順序控制策略。
執行以下命令,開啟和修改Terway的ConfigMap。
kubectl edit cm -n kube-system eni-config
在
data.10-terway.conf
下,增加enable_network_priority
開啟優先順序控制。apiVersion: v1 data: 10-terway.conf: | { "cniVersion": "0.3.1", "name": "terway", "enable_network_priority": true, "type": "terway" }
修改完成後,按Esc鍵,輸入:wq!並按Enter鍵,儲存修改後的設定檔並退出編輯模式。
重建Terway Pods使得配置生效。
kubectl delete -n kube-system pod -l app=terway-eniip
重要啟用優先順序控制後,ENI網卡隊列將替換為mq+prio。