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

Container Service for Kubernetes:Lingjun ノード上の Pod で RDMA ネットワークを使用する

最終更新日:Nov 09, 2025

このドキュメントでは、高性能なコンテナーネットワーク通信を実現するために、ACK マネージドクラスター Pro の Lingjun ノード上で Remote Direct Memory Access (RDMA) を設定して使用する方法について説明します。RDMA テクノロジーは、ネットワーク遅延を大幅に削減し、スループットを向上させるため、高性能計算 (HPC)、AI トレーニング、分散ストレージなど、高いネットワークパフォーマンスを必要とするシナリオに適しています。

RDMA の概要

Remote Direct Memory Access (RDMA) は、従来のネットワーク伝送におけるサーバー側のデータ処理の遅延に対処するために設計された高性能なネットワーク通信テクノロジーです。RDMA を使用すると、どちらのコンピューターのオペレーティングシステムも介さずに、あるコンピューターのメモリから別のコンピューターのメモリにデータを直接転送できます。このメカニズムにより、高スループット、低遅延のネットワーク通信が可能になり、大規模な並列計算クラスターに特に適しています。

RDMA は、オペレーティングシステムをバイパスして、ネットワーク経由でターゲットコンピューターのメモリにデータを直接転送します。このプロセスは、最小限の処理能力しか消費せず、メモリレプリケーションとコンテキストスイッチングのオーバーヘッドを削減します。その結果、メモリ帯域幅と CPU サイクルが節約され、アプリケーションのパフォーマンスが向上します。

前提条件

Kubernetes では、Pod は 2 つのネットワークパターンをサポートしています:

  • 独立 IP パターン: Pod は独自の IP アドレスを持ちます (非 hostNetwork モード)。

  • 共有ネットワークパターン: Pod はホストノードのネットワークを直接使用します (hostNetwork モード)。

非 hostNetwork モードの Pod で RDMA 機能を使用するには、次の条件を満たす必要があります:

  • Lingjun ノードをホストする Lingjun ベアメタルクラスターのコンピューティングネットワークは IPv6 を使用する必要があります。

  • Lingjun ベアメタルクラスターを作成するときに IPv6 モードを選択する必要があります。

Lingjun ベアメタルクラスターの作成方法と IPv6 のサポートに関する詳細については、チケットを起票 して Lingjun チームにお問い合わせください。

手順

  1. RDMA Device Plugin コンポーネントをインストールします。

    1. クラスター ページで、管理するクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、[アドオン] をクリックします。

    2. [コンポーネント管理] ページで、[ネットワーク] タブをクリックします。RDMA Device Plugin コンポーネントを見つけ、プロンプトに従ってインストールします。

      設定項目

      説明

      非 hostNetwork モードの Pod の RDMA を有効にする

      非 hostNetwork モードの Pod の RDMA を有効にするかどうかを選択します。有効な値:

      • False (クリア): hostNetwork モードの Pod のみが RDMA ネットワークを使用できます。

      • True (選択済み): 非 hostNetwork モードの Pod が RDMA ネットワークを使用できるようにします。このオプションを有効にする前に、ACK クラスターに関連付けられている Lingjun ベアメタルクラスターが IPv6 を使用していることを確認してください。そうでない場合、RDMA 設定は有効になりません。

  2. RDMA が有効になっている各 Lingjun ノード で RDMA Device Plugin が正しく実行されていることを確認します。

    kubectl get ds ack-rdma-dp-ds -n kube-system

    期待される出力:

    NAME             DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    ack-rdma-dp-ds   2         2         2       2            2           <none>          xxh
  3. ノードに rdma/hca リソースがあるかどうかを確認します。

    kubectl get node e01-cn-xxxx -oyaml

    期待される出力:

    ...
      allocatable:
        cpu: 189280m
        ephemeral-storage: "3401372677838"
        hugepages-1Gi: "0"
        hugepages-2Mi: "0"
        memory: 2063229768Ki
        nvidia.com/gpu: "8"
        pods: "64"
        rdma/hca: 1k
      capacity:
        cpu: "192"
        ephemeral-storage: 3690725568Ki
        hugepages-1Gi: "0"
        hugepages-2Mi: "0"
        memory: 2112881480Ki
        nvidia.com/gpu: "8"
        pods: "64"
        rdma/hca: 1k
    ...
  4. 次の YAML ファイルを適用して rdma/hca リソースをリクエストします。これにより、Pod は RDMA 機能を使用できます。

    • rdma/hca: 1 のリクエストで十分です。

    • RDMA Device Plugin コンポーネントで非 hostNetwork モードの Pod の RDMA を有効にしなかった場合、hostNetwork: true を持つ Pod のみが RDMA 機能を使用できます。

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: hps-benchmark
    spec:
      parallelism: 1
      template:
        spec:
          containers:
          - name: hps-benchmark
            image: **
            command:
            - sh
            - -c
            - |
              python /workspace/wdl_8gpu_outbrain.py
            resources:
              limits:
                nvidia.com/gpu: 8
                rdma/hca: 1
            workingDir: /root
            volumeMounts:
              - name: shm
                mountPath: /dev/shm
            securityContext:
              capabilities:
                add:
                - SYS_RESOURCE
                - IPC_LOCK
          restartPolicy: Never
          volumes:
            - name: shm
              emptyDir:
                medium: Memory
                sizeLimit: 8Gi
          hostNetwork: true
          tolerations:
            - operator: Exists