全部產品
Search
文件中心

Container Service for Kubernetes:為Pod配置QoS

更新時間:May 16, 2024

線上業務對網路品質敏感、對網路延遲指標要求高,而離線業務對網路頻寬佔用大,如果兩種業務在一起運行而不做任何控制,突發的流量很可能影響線上業務,從而影響整體網路品質。通過對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

對

錯

共用ENI多IP模式+DataPathv2

對

錯

在DataPathv2或IPvlan+eBPF模式下,節點核心5.10版本以上的Pod將使用EDT(Earliest Departure Time)對頻寬進行控制。其他模式下將使用TBF Qdisc對頻寬進行控制。

使用Kubernetes定義的Pod Annotations

  • 在Terway v1.3.0版本後建立的叢集支援使用Kubernetes的Pod Annotations指定Pod出、入方向的頻寬。

  • 在Terway v1.3.0版本之前建立的叢集只支援使用阿里雲的Pod Annotations指定Pod的出、入方向頻寬,Annotations定義如下:

    Annotation

    Mean

    k8s.aliyun.com/ingress-bandwidth: 10M

    Ingress bandwidth

    k8s.aliyun.com/egress-bandwidth: 10M

    Egress bandwidth

    阿里雲定義的Pod Annotations已經標記為廢棄,將來會移除,如果您需要使用頻寬控制,請使用Kubernetes定義的Pod Annotations。

    對於在Terway v1.3.0版本前建立的叢集,您需要修改Terway設定檔來啟用Kubernetes定義的Pod Annotations。

    1. 執行以下命令,開啟和修改Terway的ConfigMap。

      kubectl edit cm -n kube-system eni-config
    2. data.10-terway.conf下,增加capabilities配置。

      apiVersion: v1
      data:
        10-terway.conf: |
          {
            "cniVersion": "0.3.1",
            "name": "terway",
            "capabilities": {"bandwidth": true},
            "type": "terway"
          }
    3. 修改完成後,按Esc鍵,輸入:wq!並按Enter鍵,儲存修改後的設定檔並退出編輯模式。

    4. 執行以下命令,重建Terway Pods使得配置生效。

      kubectl delete -n kube-system pod -l app=terway-eniip

配置優先順序控制策略

預設情況下,網卡隊列在發送資料包時執行先入先出的規則,通過對資料包進行分類,可以優先發送延遲敏感業務的資料包,從而改善延遲。預設情況下,優先順序控制未啟用,您需要通過配置來啟用。

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"

大頻寬業務

通過以下配置啟用優先順序控制策略。

  1. 執行以下命令,開啟和修改Terway的ConfigMap。

    kubectl edit cm -n kube-system eni-config
  2. 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"
        }
  3. 修改完成後,按Esc鍵,輸入:wq!並按Enter鍵,儲存修改後的設定檔並退出編輯模式。

  4. 重建Terway Pods使得配置生效。

    kubectl delete -n kube-system pod -l app=terway-eniip
    重要

    啟用優先順序控制後,ENI網卡隊列將替換為mq+prio。