All Products
Search
Document Center

Elastic Compute Service:Konfigurasikan eRDMA untuk kontainer Docker dan pod Kubernetes

Last Updated:Aug 21, 2026

Petakan perangkat eRDMA ke dalam kontainer Docker atau gunakan eRDMA Controller untuk mengeksposnya ke pod dalam kluster Kubernetes yang dikelola sendiri.

Batasan

eRDMA di Docker hanya mendukung citra berikut.

  • Alibaba Cloud Linux 3, Ubuntu 22.04, dan Ubuntu 24.04 (ARM dan x86)

  • Alibaba Cloud Linux 2, CentOS 7, CentOS 8, Ubuntu 18.04, Ubuntu 20.04, dan Ubuntu 24.04 (hanya x86)

Catatan

Citra Anolis OS tidak didukung.

Cara kerja

Gunakan opsi Docker --device untuk memetakan perangkat karakter /dev/infiniband/rdma_cm dan /dev/infiniband/uverbsX ke dalam kontainer. Program mode pengguna kemudian dapat melewati kernel dan mengakses perangkat eRDMA secara langsung.

  • /dev/infiniband/rdma_cm: Perangkat karakter untuk manajemen koneksi eRDMA, termasuk membuat dan menghapus koneksi serta menangani event koneksi.

  • /dev/infiniband/uverbsX: Perangkat karakter untuk operasi eRDMA di ruang pengguna, termasuk membuka perangkat, mengelola titik akhir komunikasi, dan mendaftarkan buffer memori.

    Catatan

    /dev/infiniband/uverbsX: X adalah nomor indeks perangkat. Jalankan ls /dev/infiniband | grep uverbs untuk menemukan nama perangkat.

Konfigurasikan eRDMA di kontainer Docker

Langkah 1: Konfigurasikan eRDMA untuk instans

Verifikasi bahwa tipe instans mendukung eRDMA, antarmuka Elastic RDMA telah disambungkan, driver eRDMA telah diterapkan, dan perangkat eRDMA berfungsi dengan benar.

Langkah 2: (Opsional) Terapkan Docker pada instans

Lewati langkah ini jika Docker sudah terinstal pada instans.

  1. Sambungkan ke instans. Lihat Masuk ke instans Linux menggunakan Workbench.

  2. Periksa apakah Docker sudah terinstal.

    sudo docker -v

    Jika Docker sudah terinstal, nomor versi akan dikembalikan:

    [root@i:xxx ~]# sudo docker -v
    Docker version 26.1.3, build b72abbb

    Jika belum terinstal, lanjutkan ke Terapkan Docker pada instans.

    [root@i-xxx                  /]# sudo docker -v
    sudo: docker: command not found
  3. Terapkan Docker pada instans.

Langkah 3: (Opsional) Terapkan citra untuk Docker

Lewati langkah ini jika lingkungan Docker Anda sudah memiliki citra dasar.

Contoh berikut menarik citra dasar Alibaba Cloud Linux. Akses Internet diperlukan.

  1. Instal dan gunakan Docker dan Docker Compose.

  2. Tarik citra Docker Alibaba Cloud Linux.

    sudo docker pull alibaba-cloud-linux-<image_version>-registry.<region_ID>.cr.aliyuncs.com/alinux<image_version>/alinux<image_version>:<TAG>
    • <image_version>: Versi Alibaba Cloud Linux, seperti 2 atau 3.

    • <region_ID>: ID wilayah citra, seperti cn-hangzhou.

    • (Opsional) <TAG>: Tag citra Docker. Secara default menggunakan versi terbaru jika dihilangkan.

    Cari informasi wilayah dan tag citra

    1. Buka Container Registry - Artifact Center.

    2. Klik alinux2/alinux2 atau alinux3/alinux3 untuk melihat informasi tag citra Docker untuk Alibaba Cloud Linux 2 dan Alibaba Cloud Linux 3.

      Misalnya, gambar berikut menunjukkan detail citra Docker Alibaba Cloud Linux 3. ① menunjukkan wilayah citra, dan ② menunjukkan tag citra.

      image.png

    Contoh perintah:

    • Tarik tag 220901.1 dari citra Docker Alibaba Cloud Linux 3 di wilayah cn-hangzhou.

      sudo docker pull alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/alinux3:220901.1
    • Tarik citra Docker Alibaba Cloud Linux 2 versi terbaru di wilayah cn-hangzhou.

      sudo docker pull alibaba-cloud-linux-2-registry.cn-hangzhou.cr.aliyuncs.com/alinux2/alinux2
  3. Verifikasi penarikan citra.

    sudo docker images

    Output mengonfirmasi bahwa citra Alibaba Cloud Linux 3 dengan tag 220901.1 dan citra Alibaba Cloud Linux 2 versi terbaru telah ditarik.

    image.png

Langkah 4: Jalankan kontainer dan sambungkan perangkat eRDMA

Gunakan opsi Docker --device untuk memetakan perangkat karakter /dev/infiniband/rdma_cm dan /dev/infiniband/uverbsX ke dalam kontainer. Lihat Cara kerja.

  1. Sambungkan ke instance ECS. Lihat Masuk ke instans Linux menggunakan Workbench.

  2. Jalankan kontainer Docker dan petakan perangkat karakter eRDMA ke dalamnya.

    sudo docker run --net=host --device=/dev/infiniband/uverbsX --device=/dev/infiniband/rdma_cm --ulimit memlock=-1 -t -i <IMAGE ID> /bin/bash

    Parameter:

    • --net=host: Mengatur mode jaringan kontainer ke host. Aplikasi dalam kontainer berbagi antarmuka dan konfigurasi jaringan host.

    • --device=/dev/infiniband/uverbsX dan --device=/dev/infiniband/rdma_cm: Mengekspos perangkat karakter eRDMA mode pengguna ke kontainer.

      Lihat nama perangkat karakter (X dalam uverbsX ):

      ls /dev/infiniband | grep uverbs
      [root@ixxx ~]# ls /dev/infiniband | grep uverbs
      uverbs0
    • --ulimit memlock=-1: Mengatur maxlockedmemory menjadi unlimited, sehingga pengguna non-root dapat mengunci memori yang cukup untuk operasi eRDMA.

    • <IMAGE ID>: ID citra Docker. Jalankan sudo docker images untuk melihatnya.

      Lihat ID citra target:

      sudo docker images

      Contoh ini menggunakan citra Alibaba Cloud Linux dari Langkah 3. Contoh output:

      [root@i-xxx ~]# docker images
      REPOSITORY                                                            TAG       IMAGE ID       CREATED      SIZE
      alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/alinux3   latest    e8d9a60b6967   8 days ago   205MB

    Contoh perintah

    sudo docker run --net=host --device=/dev/infiniband/uverbs0 --device=/dev/infiniband/rdma_cm --ulimit memlock=-1 -t -i e8d9a60b6967 /bin/bash

Langkah 5: Terapkan paket driver eRDMA untuk kontainer Docker

Paket driver mode pengguna eRDMA juga harus diterapkan di dalam kontainer. Tanpa paket tersebut, perangkat eRDMA tidak dapat terdeteksi dari dalam kontainer. Alibaba Cloud menyediakan sumber yum dan apt untuk instalasi yang mudah.

  1. Sambungkan ke instans. Lihat Masuk ke instans Linux menggunakan Workbench.

  2. Masuk ke kontainer target.

    Jika Anda menjalankan perintah di Langkah 4, Anda sudah berada di dalam kontainer. Lanjutkan ke instal paket driver mode pengguna di dalam kontainer.

    1. Lihat ID kontainer target.

      sudo docker ps

      Contoh ini menggunakan kontainer dari Langkah 4. Contoh output:

      ID kontainer target adalah b4ec2fbaedf7 (kontainer Alibaba Cloud Linux 3 yang dijalankan di Langkah 4).

      [root@i          _[ ~]# docker ps
      CONTAINER ID   IMAGE                                                                    COMMAND
      c9fc089a3c5d   e8d9a60b6967                                                             "/bin/bash"
      b4ec2fbaedf7   alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/alinux3   "/bin/bash"
    2. Masuk ke kontainer.

      sudo docker exec -it <CONTAINER ID> /bin/bash

      Ganti CONTAINER ID dengan ID kontainer target dari langkah sebelumnya.

  3. Instal paket driver mode pengguna di dalam kontainer.

    Penting

    Pada contoh berikut, http://mirrors.cloud.aliyuncs.com adalah alamat sumber internal. Untuk mengakses sumber melalui Internet, ganti http://mirrors.cloud.aliyuncs.com dengan https://mirrors.aliyun.com. Akses Internet dapat menimbulkan biaya trafik. Lihat Penagihan bandwidth publik.

    CentOS 7/CentOS 8

    1. Buat file sumber erdma.repo di /etc/yum.repos.d.

      sudo vim /etc/yum.repos.d/erdma.repo
    2. Tambahkan konten berikut ke erdma.repo dan simpan file tersebut.

      [erdma]
      name = ERDMA Repository
      baseurl = http://mirrors.cloud.aliyuncs.com/erdma/yum/redhat/$releasever/erdma/$basearch/
      gpgcheck = 1
      enabled = 1
      gpgkey = http://mirrors.cloud.aliyuncs.com/erdma/GPGKEY
    3. Perbarui cache sumber yum.

      sudo yum makecache
    4. Instal paket driver mode pengguna.

      sudo yum install  libibverbs rdma-core librdmacm libibverbs-utils -y 

    Alibaba Cloud Linux

    1. Tambahkan repositori.

      sudo yum-config-manager \
       --add-repo \
       http://mirrors.cloud.aliyuncs.com/erdma/yum/alinux/erdma.repo
      Catatan

      Jika yum-config-manager belum terinstal, jalankan sudo yum install -y yum-utils untuk menginstalnya. yum-config-manager merupakan bagian dari paket yum-utils.

    2. Perbarui cache sumber yum.

      sudo yum makecache
    3. Instal paket driver mode pengguna.

      sudo yum install  libibverbs rdma-core librdmacm libibverbs-utils -y

    Ubuntu 18.04/20.04/22.04/24.04

    1. Tambahkan signature PGP.

      • Ubuntu 18.04/Ubuntu 20.04

        wget -qO - http://mirrors.cloud.aliyuncs.com/erdma/GPGKEY | sudo apt-key add -
      • Ubuntu 22.04/24.04

        wget -qO - http://mirrors.cloud.aliyuncs.com/erdma/GPGKEY | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/erdma.gpg
    2. Tambahkan sumber apt.

      • Ubuntu 18.04

        echo "deb [ arch=amd64 ] http://mirrors.cloud.aliyuncs.com/erdma/apt/ubuntu bionic/erdma main" | sudo tee /etc/apt/sources.list.d/erdma.list
      • Ubuntu 20.04

        echo "deb [ arch=amd64 ] http://mirrors.cloud.aliyuncs.com/erdma/apt/ubuntu focal/erdma main" | sudo tee /etc/apt/sources.list.d/erdma.list
      • Ubuntu 22.04

        echo "deb [ ] http://mirrors.cloud.aliyuncs.com/erdma/apt/ubuntu jammy/erdma main" | sudo tee /etc/apt/sources.list.d/erdma.list
      • Ubuntu 24.04

        echo "deb [ ] http://mirrors.cloud.aliyuncs.com/erdma/apt/ubuntu noble/erdma main" | sudo tee /etc/apt/sources.list.d/erdma.list
    3. Perbarui sumber apt.

      sudo apt update
    4. Instal driver mode pengguna.

      sudo apt install libibverbs1 ibverbs-providers ibverbs-utils librdmacm1 -y 
  4. Lihat informasi perangkat eRDMA dari dalam kontainer.

    ibv_devinfo
    [root@ixxxx  /]# ibv_devinfo
    hca_id: erdma_0
            transport:                      iWARP (1)
            fw_ver:                         0.2.0
            node_guid:                      0216:3eff:fe1d:fdc2
            sys_image_guid:                 0216:3eff:fe1d:fdc2
            vendor_id:                      0x1ded
            vendor_part_id:                 4223
            hw_ver:                         0x0
            phys_port_cnt:                  1
                    port:   1
                            state:                  PORT_ACTIVE (4)
                            max_mtu:                4096 (5)
                            active_mtu:             4096 (5)
                            sm_lid:                 0
                            port_lid:               0
                            port_lmc:               0x00
                            link_layer:             Ethernet

    Perangkat eRDMA terdeteksi dari dalam kontainer.

Untuk mengintegrasikan eRDMA ke dalam aplikasi TCP di dalam kontainer dengan SMC-R atau NetACC, lihat Ikhtisar adaptasi aplikasi.

Gunakan eRDMA Controller untuk menerapkan pod eRDMA pada kluster Kubernetes yang dikelola sendiri

Langkah 1: Instal eRDMA Controller

  1. Instal Helm pada node master.

    Helm mengelola instalasi dan penghapusan komponen eRDMA Controller. Setelah instalasi, jalankan helm version untuk verifikasi.
    curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
    chmod 700 get_helm.sh
    ./get_helm.s
  2. Unduh kode sumber eRDMA Controller pada node master.

    git clone https://github.com/AliyunContainerService/alibabacloud-erdma-controller.git
  3. File konfigurasi instalasi adalah deployment/helm/values.yaml. Ubah file ini untuk memilih mode kerja dan mengonfigurasi parameter. Dua mode didukung:

    • Mode Reguler: eRDMA Controller secara otomatis mengelola antarmuka Elastic RDMA (ERI) dan mengalokasikan sumber daya eRDMA secara dinamis.

    • Mode Lokal: Lingkungan eRDMA sudah dipersiapkan pada node Kubernetes dan perangkat eRDMA diekspos ke pod. Tidak ada manajemen sumber daya dinamis yang terlibat.

    Item konfigurasi:

    • localERIDiscovery: Mode kerja controller.

      • true: Mode Lokal.

      • false: Mode Reguler (default).

    • credentials: Dalam Mode Reguler, controller mengakses API Alibaba Cloud untuk mengkueri dan mengonfigurasi instans ECS dan ENI. Buat peran RAM dan berikan izin yang diperlukan terlebih dahulu.

      Otentikasi AccessKey didukung. Atur type ke access_key dan masukkan ID AccessKey serta secret-nya.

      credentials:
        type: "access_key"
        accessKeyID: "{access key}"
        accessKeySecret: "{access key secret}"

      Tidak diperlukan dalam Mode Lokal.

    • preferDriver: Jenis driver eRDMA untuk node.

      • default: Mode driver default.

      • compat: Mode driver kompatibel RoCE.

      • ofed: Mode driver berbasis OFED, cocok untuk tipe instans yang dipercepat GPU.

    • allocateAllDevices: Kebijakan alokasi perangkat dalam Mode Reguler.

      • true: Mengalokasikan semua perangkat eRDMA pada node ke pod.

      • false: Mengalokasikan satu perangkat eRDMA berdasarkan topologi NUMA.

    • exposedLocalERIs: Perangkat eRDMA pada node yang akan diekspos ke pod dalam Mode Lokal. Lihat contoh untuk format konfigurasi.

      exposedLocalERIs:
        - i-XXX erdma_0/erdma_1 # tentukan ID instans dan perangkat erdma(erdma_0/erdma_1) yang akan diekspos
        - i-* erdma_0           # tentukan perangkat erdma(erdma_0) yang akan diekspos untuk semua node yang tidak ditentukan
        - i-* erdma_*           # ekspos semua perangkat erdma yang ada untuk semua node yang tidak ditentukan
    • Konfigurasi citra: Citra erdma-agent default (registry.aliyuncs.com/erdma/agent) tidak mendukung Mode Lokal. Bangun citra agent dan dorong ke repositori citra kustom.

      Bangun dan dorong citra. Contoh ini menggunakan Container Registry Alibaba Cloud (ACR). Buat namespace dan repositori citra terlebih dahulu.

      docker build --tag <REGISTRY_NAME>-registry.<REGION_ID>.cr.aliyuncs.com/<NAMESPACE>/agent:<TAG> --target agent .
      
      docker push <REGISTRY_NAME>-registry.<REGION_ID>.cr.aliyuncs.com/<NAMESPACE>/agent:<TAG>
  4. Instal komponen erdma-controller dengan helm.

    helm install -f deploy/helm/values.yaml --namespace kube-system alibaba-erdma-controller deploy/helm/
  5. Verifikasi instalasi.

    • Dalam Mode Reguler, verifikasi bahwa pod erdma-agent dan erdma-controller keduanya dibuat:

      kubectl get pods -n kube-system | grep erdma

      Kueri sumber daya perangkat eRDMA pada node:

      kubectl get erdmadevices
    • Dalam Mode Lokal, hanya pod erdma-agent yang dibuat. Pod erdma-controller dan sumber daya erdmadevices tidak tersedia.

Langkah 2: Buat pod yang mendukung akselerasi jaringan eRDMA

  1. Deklarasikan aliyun/erdma: 1 di resources.limits spesifikasi kontainer. Ganti <ERDMA_POD_IMAGE> dengan alamat citra kontainer Anda:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: erdma
      name: erdma
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: erdma
      template:
        metadata:
          labels:
            app: erdma
          annotations:
        spec:
          containers:
          - command:
            - sleep
            - "360000"
            image: <ERDMA_POD_IMAGE>
            name: erdma
            resources:
              limits:
                aliyun/erdma: 1
    Untuk mengaktifkan akselerasi transparan dengan SMC-R, tambahkan anotasi network.alibabacloud.com/erdma-smcr: "true". Memerlukan Alibaba Cloud Linux 3 dengan kernel 5.10.134-17 atau lebih baru.
  2. Terapkan deployment berdasarkan file konfigurasi. Deployment akan menjalankan jumlah replika pod yang ditentukan.

    kubectl apply -f example.yaml

Referensi

Untuk mengonfigurasi eRDMA di kluster ACK, lihat Gunakan eRDMA untuk mempercepat jaringan kontainer di kluster ACK.