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

Container Service for Kubernetes:ACK クラスターでの eRDMA を使用したコンテナネットワークの高速化

最終更新日:Mar 07, 2026

Elastic Remote Direct Memory Access (eRDMA) は、Alibaba Cloud が提供する、低レイテンシー、高スループット、高弾力性を備えたパフォーマンス専有型 RDMA ネットワークサービスです。eRDMA は、第 4 世代の X-Dragon システムアーキテクチャーと VPC ネットワーク上に構築された、ECS インスタンス向けの費用対効果の高い RDMA サービスです。eRDMA は RDMA エコシステムと完全に互換性があり、大規模なネットワークデプロイメントをサポートしています。このトピックでは、ACK クラスターで eRDMA を構成して使用する方法について説明します。

前提条件

ステップ 1: ACK eRDMA Controller コンポーネントのインストール

ACK eRDMA Controller コンポーネントをインストールします。

説明
  • ご利用のクラスターが Terway ネットワークプラグインを使用している場合、Terway コンポーネントが eRDMA 対応 ENI を変更するのを防ぐために、Terway のホワイトリストも構成する必要があります。詳細については、「ENI のホワイトリストの構成」をご参照ください。

  • ノードに複数のネットワークインターフェースコントローラー (NIC) がある場合、ACK eRDMA Controller は、アタッチされた eRDMA 対応 ENI のルートを、同じ CIDR ブロック内の NIC のルートよりも低い優先度で構成します。デフォルトのルート優先度は 200 です。ACK eRDMA Controller をインストールした後に NIC を手動で構成するには、ルートの競合を避けるようにしてください。

  1. クラスターリスト ページで、ご利用のクラスターの名前をクリックします。左側のナビゲーションウィンドウで、アドオン管理 をクリックします。

  2. アドオン管理 ページで、ネットワーク タブをクリックし、ACK eRDMA Controller コンポーネントを見つけて、プロンプトに従って構成およびインストールします。

    設定項目

    説明

    preferDriver ドライバータイプ

    クラスターノードで使用する eRDMA ドライバータイプを選択します。有効な値:

    • default: デフォルトのドライバーモード。

    • compat: RoCE 互換のドライバーモード。

    • ofed: OFED ベースのドライバーモード。このモードは、GPU インスタンスタイプに適しています。

    ドライバータイプの詳細については、「eRDMA の有効化」をご参照ください。

    ポッドにノードのすべての eRDMA デバイスを割り当てるかどうか

    有効な値:

    • True (選択済み): ノード上のすべての eRDMA デバイスを Pod に割り当てます。

    • False (クリア済み): NUMA トポロジーに基づいて、1 つの eRDMA デバイスを Pod に割り当てます。Pod とデバイスの固定 NUMA 割り当てを確実にするには、ノードで静的 CPU 管理ポリシーを有効にする必要があります。CPU ポリシーの構成方法については、「ノードプールの作成と管理」をご参照ください。

    インストールが完了したら、左側のナビゲーションウィンドウで、ワークロード > ポッド を選択します。次に、名前空間を ack-erdma-controller に設定し、Pod のステータスを表示して、コンポーネントが正常に実行されていることを確認します。

ステップ 2: eRDMA を使用したコンテナネットワークの高速化

ACK eRDMA Controller コンポーネントをインストールした後、Pod で以下の構成を使用して eRDMA 高速化を有効にできます。

構成

方法

説明

eRDMA の有効化

アプリケーションの Pod のコンテナリソースで aliyun/erdma リソースを宣言します。

spec:
  containers:
  - name: erdma-container
    resources:
      limits:
        aliyun/erdma: 1

アプリケーションの Pod で aliyun/erdma リソースを宣言して、eRDMA デバイスを Pod に割り当てます。

デバイスが割り当てられたら、Pod で表示します。

/# ls /dev/infiniband/
rdma_cm  uverbs0

SMC-R を使用した透過的な高速化の有効化

eRDMA を有効にした後、Pod の Annotationnetwork.alibabacloud.com/erdma-smcr: "true" を宣言して、Pod 内の TCP 接続の透過的な高速化を有効にします。

metadata:
  annotations:
    network.alibabacloud.com/erdma-smcr: "true"

SMC-R を使用した透過的な高速化を有効にした後、eRDMA 高速化は、TCP 接続の両端が SMC-R で構成されている場合にのみ使用できます。

Pod に smc-tools ツールをインストールし、smcss コマンドを実行して、接続の高速化ステータスを確認できます。

説明
  • この機能は、カーネルバージョン 5.10.134-17 以降の Alibaba Cloud Linux 3 でのみサポートされています。詳細については、「Alibaba Cloud Linux 3 イメージリリースノート」をご参照ください。

  • このオプションは、ドライバータイプが ofed または compat に設定されている場合はサポートされていません。

  • Alibaba Cloud ERI eRDMA デバイスと SMC は現在、IPv6 アドレスをサポートしていません。アプリケーション層が IPv6 アドレスを使用する場合、SMC は TCP プロトコルスタックにフォールバックします。

シナリオ 1: GPU インスタンスタイプ向けの NCCL 通信を eRDMA で高速化する

  1. ステップ 1: ACK eRDMA Controller コンポーネントのインストール の手順に従ってコンポーネントをインストールします。NCCL 通信の場合は、preferDriverofed に設定します。

  2. GPU ノードをノードプールに追加します。詳細については、「ノードプールの作成と管理」をご参照ください。

  3. アプリケーションコンテナイメージを構築する際に、eRDMA 関連パッケージをインストールします。

    イメージ構築時の eRDMA 関連パッケージのインストール

    # Debian または Ubuntu の場合: sources.list の OS 名とバージョンが使用するバージョンと一致していることを確認してください。
    wget -qO - https://mirrors.aliyun.com/erdma/GPGKEY | apt-key add - && echo "deb [ arch=amd64 ] https://mirrors.aliyun.com/erdma/apt/{OS|ubuntu} {Version|focal}/erdma main" | tee /etc/apt/sources.list.d/erdma.list && apt update && apt install -y libibverbs1 ibverbs-providers ibverbs-utils librdmacm1
    
    # Alibaba Cloud Linux または RHEL の場合: ご利用の OS に対応するリポジトリディレクトリを見つけて、yum.repos.d ディレクトリに構成してください。
    cat > /etc/yum.repos.d/erdma.repo <<EOF
    [erdma]
    name = ERDMA Repository
    baseurl = http://mirrors.aliyun.com/erdma/yum/redhat/7/erdma/x86_64/
    gpgcheck = 0
    enabled = 1
    EOF
    yum install --disablerepo=*  --enablerepo erdma -y libibverbs ibverbs-providers ibverbs-utils librdmacm
  4. クラスターで eRDMA を使用する GPU アプリケーションを実行します。この例では nccl-test を使用します。

    eRDMA を使用する GPU アプリケーションのサンプルテンプレート

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: nccltest
    spec:
      selector:
        matchLabels:
          app: nccltest
      serviceName: "nccltest"
      replicas: 2
      template:
        metadata:
          labels:
            app: nccltest
        spec:
          hostNetwork: true 
          dnsPolicy: ClusterFirstWithHostNet
          containers:
          - env:
            - name: NCCL_SOCKET_IFNAME
              value: "eth0"
            - name: NCCL_DEBUG
              value: "INFO"
            - name: NCCL_IB_GID_INDEX
              value: "1"
            image: <nccl-test-image-with-erdma>
            imagePullPolicy: Always
            name: nccltest
            securityContext:
              privileged: true
            resources:
              limits:
                nvidia.com/gpu: "8"
                aliyun/erdma: "1"
              requests:
                nvidia.com/gpu: "8"
                aliyun/erdma: "1"
  5. NCCL が eRDMA を使用して高速化されていることを確認します。

    アプリケーションログをチェックして、NCCL が使用する通信タイプと NIC の数を確認できます。次の図に例を示します。

    image

    期待される出力は、erdma_0erdma_1 の eRDMA デバイスが高速化に使用されていることを示しています。

シナリオ 2: SMC-R を使用したアプリケーションネットワークの透過的な高速化

  1. ステップ 1: ACK eRDMA Controller コンポーネントのインストール の手順に従ってコンポーネントをインストールします。標準通信高速化の場合は、preferDriverdefault に設定します。

  2. 次のサンプルコードを使用して、クラスターで SMC-R によって高速化されるアプリケーションを作成します。

    SMC-R によって高速化されるアプリケーションのサンプルテンプレート

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: app-with-erdma
      name: app-with-erdma
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: app-with-erdma
      template:
        metadata:
          labels:
            app: app-with-erdma
          annotations:
            network.alibabacloud.com/erdma-smcr: "true"
        spec:
          containers:
          - image: <application image>
            imagePullPolicy: Always
            name: app-with-erdma
            resources:
              limits:
                aliyun/erdma: 1
  3. Pod 内のネットワーク接続の高速化ステータスを確認します。

    コンテナに smc-tools をインストールし、smcss コマンドを実行して、高速化効果を表示できます。

    /# smcss
    State          UID   Inode   Local Address           Peer Address            Intf Mode 
    ACTIVE         00000 0059964 172.17.192.73:47772     172.17.192.10:80        0000 SMCR

    期待される出力は、Mode 列に SMCR が表示されており、接続が eRDMA によって高速化されていることを示しています。