All Products
Search
Document Center

Container Service for Kubernetes:Gunakan eRDMA untuk mempercepat jaringan kontainer di kluster ACK

Last Updated:Jun 16, 2026

Aktifkan jaringan RDMA di Pod untuk pelatihan terdistribusi NCCL atau akselerasi TCP transparan SMC-R.

Instal ACK eRDMA Controller dan aktifkan akselerasi eRDMA di Pod. Dua skenario dibahas: pelatihan terdistribusi GPU dengan NCCL dan akselerasi TCP transparan dengan SMC-R.

Prasyarat

Pastikan Anda memiliki:

Cara kerja

ACK eRDMA Controller mengelola elastic network interfaces (ENIs) yang mendukung eRDMA pada node kluster. Komponen ini mendaftarkan perangkat eRDMA sebagai resource extended aliyun/erdma, mengonfigurasi entri rute ENI, dan mengekspos perangkat ke Pod melalui permintaan resource Kubernetes.

Pod meminta akses eRDMA dengan mendeklarasikan aliyun/erdma dalam batas resource-nya. Untuk juga mempercepat koneksi TCP tanpa perubahan kode, aktifkan SMC-R melalui anotasi Pod.

Component Role
ACK eRDMA Controller Mendaftarkan perangkat eRDMA sebagai resource extended; mengelola entri rute ENI
driver eRDMA (default / compat / ofed) Driver tingkat kernel yang diinstal pada setiap node
aliyun/erdma Sumber daya Resource extended Kubernetes untuk akses perangkat oleh Pod
SMC-R Protokol Linux yang secara transparan menggantikan transport TCP dengan RDMA

Langkah 1: Instal ACK eRDMA Controller

Catatan

Jika kluster Anda menggunakan plugin jaringan Terway, konfigurasikan daftar putih untuk ENI agar Terway tidak memodifikasi ENI yang mendukung eRDMA.

  1. Pada halaman Clusters, klik nama kluster Anda, lalu klik Add-ons.

  2. Pada halaman Add-ons, klik tab Network. Temukan dan instal ACK eRDMA Controller dengan pengaturan berikut:

    Catatan

    Saat sebuah node memiliki beberapa NIC, controller memberikan prioritas lebih rendah pada entri rute ENI eRDMA dibandingkan entri rute NIC dengan CIDR yang sama. Prioritas default-nya adalah 200. Hindari bentrok dengan rentang ini saat mengonfigurasi entri rute NIC secara manual.

    Setting Description
    preferDriver (jenis driver) Mode driver eRDMA. default: akselerasi standar. compat: lingkungan kompatibel RoCE. ofed: instans yang dipercepat GPU yang menjalankan NCCL. Lihat Aktifkan eRDMA.
    Specifies whether to assign all eRDMA devices of nodes to pods True: mengalokasikan semua perangkat eRDMA pada node ke Pod. False: mengalokasikan satu perangkat berdasarkan topologi NUMA. False memerlukan kebijakan manajemen CPU statis. Lihat Buat dan kelola kelompok node.
  3. Verifikasi bahwa controller sedang berjalan. Buka Workloads > Pods, atur namespace ke ack-erdma-controller, dan pastikan semua Pod berstatus Berjalan.

Langkah 2: Aktifkan eRDMA di Pod

Tambahkan konfigurasi berikut ke spesifikasi Pod Anda untuk mengaktifkan akselerasi eRDMA.

Aktifkan akses perangkat eRDMA

Deklarasikan resource aliyun/erdma dalam batas resource kontainer:

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

Setelah Pod berjalan, verifikasi ketersediaan perangkat eRDMA:

/# ls /dev/infiniband/
rdma_cm  uverbs0

Aktifkan akselerasi TCP transparan dengan SMC-R

SMC-R secara transparan mempercepat koneksi TCP melalui RDMA tanpa perubahan kode. Setelah mengaktifkan akses perangkat eRDMA, tambahkan anotasi berikut:

metadata:
  annotations:
    network.alibabacloud.com/erdma-smcr: "true"
Catatan
  • Kedua ujung koneksi TCP harus mengaktifkan SMC-R.

  • Hanya didukung pada Alibaba Cloud Linux 3 dengan versi kernel 5.10.134-17 atau lebih baru. Lihat Catatan rilis gambar Alibaba Cloud Linux 3.

  • Tidak didukung jika preferDriver diatur ke ofed atau compat.

  • eRDMA dan SMC-R tidak mendukung IPv6. SMC-R akan kembali menggunakan TCP untuk koneksi IPv6.

Kasus penggunaan

Percepat komunikasi NCCL untuk pelatihan terdistribusi GPU

Gunakan skenario ini untuk instans yang dipercepat GPU yang menjalankan pelatihan terdistribusi. Pod menggunakan driver ofed dan meminta resource GPU serta eRDMA.

  1. Instal ACK eRDMA Controller dengan preferDriver diatur ke ofed.

  2. Tambahkan node GPU ke kelompok node. Lihat Buat dan kelola kelompok node.

  3. Instal paket eRDMA dalam gambar kontainer saat proses build. Untuk Debian atau Ubuntu (ganti {OS|ubuntu} dan {Version|focal} dengan nilai Anda):

    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

    Untuk Alibaba Cloud Linux atau RHEL:

    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. Sebarkan aplikasi GPU. StatefulSet berikut menjalankan nccl-test di dua replika, masing-masing dengan 8 GPU dan satu perangkat eRDMA:

    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. Verifikasi bahwa NCCL menggunakan eRDMA. Log harus menampilkan erdma_0 dan erdma_1 sebagai aktif, yang mengonfirmasi akselerasi eRDMA.

    image

Percepat jaringan aplikasi secara transparan dengan SMC-R

Gunakan skenario ini untuk beban kerja TCP standar yang memerlukan akselerasi eRDMA tanpa perubahan kode. Atur preferDriver ke default.

  1. Instal ACK eRDMA Controller dengan preferDriver diatur ke default.

  2. Sebarkan aplikasi dengan anotasi SMC-R. Penyebaran berikut mengaktifkan akses perangkat eRDMA dan akselerasi 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. Verifikasi akselerasi. Instal smc-tools di dalam kontainer dan jalankan 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

    SMCR pada kolom Mode mengonfirmasi bahwa akselerasi eRDMA aktif. Jika menampilkan TCP, pastikan kedua Pod (klien dan server) memiliki anotasi SMC-R yang diatur ke "true".

Langkah selanjutnya