すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:ポッドのQoSの設定

最終更新日:Oct 31, 2024

オンラインアプリケーションはネットワークの待ち時間に敏感ですが、オフラインアプリケーションは大量の帯域幅リソースを消費します。 両方のタイプのアプリケーションを制限なく実行すると、予期しないトラフィックの急増がオンラインアプリケーションを圧倒し、ネットワーク全体に悪影響を及ぼす可能性があります。 この問題を回避するには、ポッドのサービス品質 (QoS) を設定します。 このトピックでは、Kubernetesで定義されているポッドのアノテーションと関連する帯域幅制限について説明します。 このトピックでは、QoSクラスを設定する方法についても説明します。

帯域幅の制限

Terwayネットワークプラグインを使用して、ポッドのネットワーク帯域幅を制御できます。 次の表に、ポッドの受信帯域幅と送信帯域幅を指定するために使用できるポッドの注釈を示します。

注釈

平均

kubernetes.io/ingress-bandwidth: 10M

Ingress帯域幅

kubernetes.io/egress-bandwidth: 10M

出力帯域幅

次の表に、帯域幅を制限するためにさまざまなTerwayモードでサポートされる機能を示します。

Terwayモード

出口の形成

進入シェーピング

VPCモード (レガシー)

对

对

共有ENI

对

对

共有ENI + IPVLAN eBPF

对

错

共有ENI + DataPath V2

对

错

共有ENI + DataPath V2モードでは、カーネルバージョンより後のバージョンを使用するノードのポッドは、帯域幅を制限するためにEarliest Departure Time (EDT) を使用5.10ます。 他のモードでは、ポッドはTBF Qdiscを使用して帯域幅を制限します。

Kubernetesで定義されたポッドアノテーションの使用

  • Terway V1.3.0以降を使用するContainer Service for Kubernetes (ACK) クラスターでは、Kubernetesで定義されたポッドアノテーションを使用して、ポッドの受信帯域幅と送信帯域幅を指定できます。

  • V1.3.0より前のバージョンのTerwayを使用するACKクラスターでは、Alibaba Cloudで定義されたポッドのアノテーションのみを使用して、ポッドのインバウンドおよびアウトバウンド帯域幅を制限できます。 次の表に、ポッドの注釈を示します。

    注釈

    平均

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

    Ingress帯域幅

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

    出力帯域幅

    Alibaba Cloudによって定義されたポッドのアノテーションは廃止され、まもなくACKから削除されます。 帯域幅を制限する場合は、Kubernetesで定義されているポッドアノテーションを使用します。

    V1.3.0より前のバージョンのTerwayを使用するACKクラスターの場合、TerwayのConfigMapを変更して、Kubernetesで定義されたポッドアノテーションを有効にする必要があります。

    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キーを押してConfigMapを保存し、終了します。

    4. 次のコマンドを実行して、変更されたConfigMapを有効にするTerwayポッドを再作成します。

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

QoSクラスの設定

デフォルトでは、elastic network interface (ENI) キューは、パケットを処理するときに先入れ先出し (FIFO) の原則に従います。 これにより、遅延に敏感なアプリケーションのパケットに優先順位を付けることができます。 デフォルトでは、トラフィックの優先順位付けは無効です。 この機能を手動で有効にする必要があります。

次の表に、Terwayを使用する場合にポッドのQoSクラスを構成するために使用できるポッドの注釈を示します。

注釈

平均

k8s.aliyun.com/network-priority: 「保証」

遅延に敏感なアプリケーション

k8s.aliyun.com/network-priority: 「ベストエフォート」

通常のアプリケーション

k8s.aliyun.com/network-priority: 「バースト可能」

大量の帯域幅を消費するアプリケーション

トラフィックの優先順位付けを有効にするには、次の手順を実行します。

  1. 次のコマンドを実行して、TerwayのConfigMapを変更します。

    kubectl edit cm -n kube-system eni-config
  2. 追加enable_network_prioritydata.10-terway.confセクションでトラフィックの優先順位付けを有効にします。

    apiVersion: v1
    data:
      10-terway.conf: |
        {
          "cniVersion": "0.3.1",
          "name": "terway",
          "enable_network_priority": true,
          "type": "terway"
        }
  3. ConfigMapを変更した後、Escキーを押します。 次に、入力します。: wq! Enterキーを押して変更したファイルを保存し、編集モードを終了します。

  4. 変更されたConfigMapを有効にするためにTerwayポッドを再作成します。

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

    トラフィックの優先順位付けが有効になると、ENIキューはmq + prioに置き換えられます。