Tüm Ürünler
Search
Belge Merkezi

Elastic Compute Service:Configure eRDMA for Docker containers and Kubernetes pods

Son Güncelleme:Sep 30, 2026

eRDMA aygıtlarını Docker kapsayıcılarına eşleyin veya eRDMA Controller kullanarak bu aygıtları kendi yönettiğiniz bir Kubernetes kümesindeki pod'lara sunun.

Sınırlamalar

Docker'da eRDMA yalnızca aşağıdaki görüntüleri destekler.

  • Alibaba Cloud Linux 3, Ubuntu 22,04 ve Ubuntu 24,04 (ARM ve x86)

  • Alibaba Cloud Linux 2, CentOS 7, CentOS 8, Ubuntu 18,04, Ubuntu 20,04 ve Ubuntu 24,04 (yalnızca x86)

Not

Anolis OS görüntüleri desteklenmez.

Çalışma mantığı

Docker --device seçeneğini kullanarak /dev/infiniband/rdma_cm ve /dev/infiniband/uverbsX karakter aygıtlarını kapsayıcıya eşleyin. Kullanıcı alanı programları daha sonra çekirdeği atlayarak eRDMA aygıtına doğrudan erişebilir.

  • /dev/infiniband/rdma_cm: Bağlantı oluşturma ve yok etme ile bağlantı olaylarını işleme dahil olmak üzere eRDMA bağlantı yönetimi için kullanılan karakter aygıtı.

  • /dev/infiniband/uverbsX: Aygıtı açma, iletişim uç noktalarını yönetme ve bellek arabelleklerini kaydetme dahil olmak üzere kullanıcı alanı eRDMA işlemleri için kullanılan karakter aygıtı.

    Not

    /dev/infiniband/uverbsX: X aygıt dizin numarasıdır. Aygıt adını bulmak için ls /dev/infiniband | grep uverbs komutunu çalıştırın.

Docker kapsayıcısında eRDMA'yı yapılandırın

1. Adım: Örnek için eRDMA'yı yapılandırın

Örnek türünün eRDMA'yı desteklediğini, bir Elastic RDMA Interface'in bağlı olduğunu, eRDMA sürücüsünün dağıtıldığını ve eRDMA aygıtının doğru çalıştığını doğrulayın.

2. Adım: (İsteğe bağlı) Örnek üzerinde Docker'ı dağıtın

Örnek üzerinde Docker zaten yüklüyse bu adımı atlayın.

  1. Örneğe bağlanın. Bkz. Workbench kullanarak bir Linux örneğinde oturum açın.

  2. Docker'ın yüklü olup olmadığını kontrol edin.

    sudo docker -v

    Docker yüklüyse bir sürüm numarası döndürülür:

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

    Yükülü değilse Örnek üzerinde Docker'ı dağıtın bölümüne ilerleyin.

    [root@i-xxx                  /]# sudo docker -v
    sudo: docker: command not found
  3. Örnek üzerinde Docker'ı dağıtın.

3. Adım: (İsteğe bağlı) Docker için bir görüntü dağıtın

Docker ortamınızda zaten bir temel görüntü varsa bu adımı atlayın.

Aşağıdaki örnekte bir Alibaba Cloud Linux temel görüntüsü çekilmektedir. İnternet erişimi gereklidir.

  1. Docker ve Docker Compose'u yükleyin ve kullanın.

  2. Bir Alibaba Cloud Linux Docker görüntüsü çekin.

    sudo docker pull alibaba-cloud-linux-<image_version>-registry.<region_ID>.cr.aliyuncs.com/alinux<image_version>/alinux<image_version>:<TAG>
    • <image_version>: Alibaba Cloud Linux sürümü, örneğin 2 veya 3.

    • <region_ID>: Görüntünün bulunduğu bölgenin kimliği, örneğin cn-hangzhou.

    • (İsteğe bağlı) <TAG>: Docker görüntü etiketi. Atlanırsa varsayılan olarak en son sürüm kullanılır.

    Görüntü bölgesi ve etiket bilgilerini bulun

    1. Container Registry - Artifact Center adresine gidin.

    2. Alibaba Cloud Linux 2 ve Alibaba Cloud Linux 3 için Docker görüntü etiketi bilgilerini görüntülemek üzere alinux2/alinux2 veya alinux3/alinux3 öğesine tıklayın.

      Örneğin, aşağıdaki şekilde Alibaba Cloud Linux 3 Docker görüntüsü ayrıntıları gösterilmektedir. ① görüntü bölgesini, ② ise görüntü etiketlerini gösterir.

      image.png

    Örnek komutlar:

    • cn-hangzhou bölgesindeki Alibaba Cloud Linux 3 Docker görüntüsünün 220901.1 etiketini çekin.

      sudo docker pull alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/alinux3:220901.1
    • cn-hangzhou bölgesindeki en son Alibaba Cloud Linux 2 Docker görüntüsünü çekin.

      sudo docker pull alibaba-cloud-linux-2-registry.cn-hangzhou.cr.aliyuncs.com/alinux2/alinux2
  3. Görüntü çekme işlemini doğrulayın.

    sudo docker images

    Çıktı, 220901.1 etiketli Alibaba Cloud Linux 3 görüntüsünün ve en son Alibaba Cloud Linux 2 görüntüsünün çekildiğini onaylar.

    image.png

4. Adım: Kapsayıcıyı başlatın ve eRDMA aygıtını ekleyin

Docker --device seçeneğini kullanarak /dev/infiniband/rdma_cm ve /dev/infiniband/uverbsX karakter aygıtlarını kapsayıcıya eşleyin. Bkz. Çalışma mantığı.

  1. ECS örneğine bağlanın. Bkz. Workbench kullanarak bir Linux örneğinde oturum açın.

  2. Bir Docker kapsayıcısı başlatın ve eRDMA karakter aygıtlarını buna eşleyin.

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

    Parametreler:

    • --net=host: Kapsayıcı ağ modunu host olarak ayarlar. Kapsayıcıdaki uygulamalar ana bilgisayarın ağ arabirimlerini ve yapılandırmalarını paylaşır.

    • --device=/dev/infiniband/uverbsX ve --device=/dev/infiniband/rdma_cm: eRDMA kullanıcı modu karakter aygıtlarını kapsayıcıya sunar.

      Karakter aygıtı adını görüntüleyin ( uverbsX içindeki X):

      ls /dev/infiniband | grep uverbs
      [root@ixxx ~]# ls /dev/infiniband | grep uverbs
      uverbs0
    • --ulimit memlock=-1: maxlockedmemory değerini unlimited olarak ayarlar; böylece root olmayan kullanıcılar eRDMA işlemleri için yeterli belleği kilitleyebilir.

    • <IMAGE ID>: Docker görüntü kimliği. Görüntülemek için sudo docker images komutunu çalıştırın.

      Hedef görüntü kimliğini görüntüleyin:

      sudo docker images

      Bu örnekte 3. Adım bölümündeki Alibaba Cloud Linux görüntüsü kullanılmaktadır. Örnek çıktı:

      [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

    Örnek komut

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

5. Adım: Docker kapsayıcısı için eRDMA sürücü paketini dağıtın

eRDMA kullanıcı modu sürücü paketinin kapsayıcıda da dağıtılması gerekir. Aksi takdirde eRDMA aygıtları kapsayıcı içinden algılanamaz. Alibaba Cloud, kolay kurulum için yum ve apt kaynakları sağlar.

  1. Örneğe bağlanın. Bkz. Workbench kullanarak bir Linux örneğinde oturum açın.

  2. Hedef kapsayıcıya girin.

    4. Adım bölümündeki komutu çalıştırdıysanız zaten kapsayıcının içindesiniz. Kapsayıcıda kullanıcı modu sürücü paketini yükleyin bölümüne ilerleyin.

    1. Hedef kapsayıcı kimliğini görüntüleyin.

      sudo docker ps

      Bu örnekte 4. Adım bölümündeki kapsayıcı kullanılmaktadır. Örnek çıktı:

      Hedef kapsayıcı kimliği b4ec2fbaedf7 değeridir (4. Adımda başlatılan Alibaba Cloud Linux 3 kapsayıcısı).

      [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. Kapsayıcıya girin.

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

      CONTAINER ID ifadesini önceki adımdaki hedef kapsayıcı kimliğiyle değiştirin.

  3. Kullanıcı modu sürücü paketini kapsayıcıya yükleyin.

    Önemli

    Aşağıdaki örneklerde http://mirrors.cloud.aliyuncs.com dahili bir kaynak adresidir. Kaynağa İnternet üzerinden erişmek için http://mirrors.cloud.aliyuncs.com ifadesini https://mirrors.aliyun.com ile değiştirin. İnternet erişimi trafik ücretlerine neden olabilir. Bkz. Genel bant genişliği faturalandırması.

    CentOS 7/CentOS 8

    1. /etc/yum.repos.d dizininde bir erdma.repo kaynak dosyası oluşturun.

      sudo vim /etc/yum.repos.d/erdma.repo
    2. Aşağıdaki içeriği erdma.repo dosyasına ekleyin ve dosyayı kaydedin.

      [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. yum kaynak önbelleğini güncelleyin.

      sudo yum makecache
    4. Kullanıcı modu sürücü paketini yükleyin.

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

    Alibaba Cloud Linux

    1. Depoyu ekleyin.

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

      yum-config-manager yüklü değilse yüklemek için sudo yum install -y yum-utils komutunu çalıştırın. yum-config-manager yum-utils paketinin bir parçasıdır.

    2. yum kaynak önbelleğini güncelleyin.

      sudo yum makecache
    3. Kullanıcı modu sürücü paketini yükleyin.

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

    Ubuntu 18,04/20,04/22,04/24,04

    1. PGP imzasını ekleyin.

      • 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. apt kaynağını ekleyin.

      • 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. apt kaynağını güncelleyin.

      sudo apt update
    4. Kullanıcı modu sürücüsünü yükleyin.

      sudo apt install libibverbs1 ibverbs-providers ibverbs-utils librdmacm1 -y 
  4. eRDMA aygıtı bilgilerini kapsayıcı içinden görüntüleyin.

    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

    eRDMA aygıtı kapsayıcı içinden algılanır.

SMC-R veya NetACC kullanarak kapsayıcı içindeki TCP uygulamalarına eRDMA entegrasyonu sağlamak için bkz. Uygulama uyarlama genel bakışı.

Kendi yönettiğiniz bir Kubernetes kümesinde eRDMA pod'u dağıtmak için eRDMA Controller'ı kullanın

1. Adım: eRDMA Controller'ı yükleyin

  1. Ana düğümde Helm'i yükleyin.

    Helm, eRDMA Controller bileşenlerinin yüklenmesini ve kaldırılmasını yönetir. Yüklemeden sonra doğrulamak için helm version komutunu çalıştırın.
    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. Ana düğümde eRDMA Controller kaynak kodunu indirin.

    git clone https://github.com/AliyunContainerService/alibabacloud-erdma-controller.git
  3. Yapılandırma dosyası deployment/helm/values.yaml konumundadır. Bu dosyayı değiştirerek bir çalışma modu seçin ve parametreleri yapılandırın. İki mod desteklenir:

    • Normal Mod: eRDMA Controller, Elastic RDMA Interface'leri (ERI'ler) otomatik olarak yönetir ve eRDMA kaynaklarını dinamik olarak tahsis eder.

    • Yerel Mod: eRDMA ortamı Kubernetes düğümlerinde zaten hazırlanmıştır ve eRDMA aygıtları pod'lara sunulur. Dinamik kaynak yönetimi söz konusu değildir.

    Yapılandırma öğeleri:

    • localERIDiscovery: Denetleyici çalışma modu.

      • true: Yerel Mod.

      • false: Normal Mod (varsayılan).

    • credentials: Normal Modda denetleyici, ECS örneklerini ve ENI'leri sorgulamak ve yapılandırmak için Alibaba Cloud API'lerine erişir. Önce bir RAM rolü oluşturun ve gerekli izinleri verin.

      AccessKey kimlik doğrulaması desteklenir. type değerini access_key olarak ayarlayın ve AccessKey kimliğini ile gizli anahtarını girin.

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

      Yerel Modda gerekli değildir.

    • preferDriver: Düğüm için eRDMA sürücü türü.

      • default: Varsayılan sürücü modu.

      • compat: RoCE uyumlu sürücü modu.

      • ofed: OFED tabanlı sürücü modu, GPU hızlandırmalı örnek türleri için uygundur.

    • allocateAllDevices: Normal Modda aygıt tahsis ilkesi.

      • true: Düğümdeki tüm eRDMA aygıtlarını pod'a tahsis edin.

      • false: NUMA topolojisine göre bir eRDMA aygıtı tahsis edin.

    • exposedLocalERIs: Yerel Modda pod'lara sunulacak düğümdeki eRDMA aygıtları. Yapılandırma formatı için örneğe bakın.

      exposedLocalERIs:
        - i-XXX erdma_0/erdma_1 # specify instance ID and erdma devices(erdma_0/erdma_1) to expose
        - i-* erdma_0           # specify erdma devices(erdma_0) to expose for all unspecified nodes
        - i-* erdma_*           # expose all existing erdma devices for all unspecified nodes
    • Görüntü yapılandırması: Varsayılan erdma-agent görüntüsü (registry.aliyuncs.com/erdma/agent) Yerel Modu desteklemez. Bir agent görüntüsü oluşturun ve bunu özel bir görüntü deposuna gönderin.

      Görüntüyü oluşturun ve gönderin. Örnek Alibaba Cloud Container Registry (ACR) kullanır. Önceden bir ad alanı ve bir görüntü deposu oluşturun.

      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. erdma-controller bileşenini helm kullanarak yükleyin.

    helm install -f deploy/helm/values.yaml --namespace kube-system alibaba-erdma-controller deploy/helm/
  5. Yükleme işlemini doğrulayın.

    • Normal Modda hem erdma-agent hem de erdma-controller pod'larının oluşturulduğunu doğrulayın:

      kubectl get pods -n kube-system | grep erdma

      Düğümdeki eRDMA aygıtı kaynaklarını sorgulayın:

      kubectl get erdmadevices
    • Yerel Modda yalnızca erdma-agent pod'u oluşturulur. erdma-controller pod'u ve erdmadevices kaynakları kullanılamaz.

2. Adım: eRDMA ağ hızlandırmayı destekleyen bir pod oluşturun

  1. Kapsayıcı belirtiminin resources.limits bölümünde aliyun/erdma: 1 bildirimini yapın. <ERDMA_POD_IMAGE> ifadesini kapsayıcı görüntü adresinizle değiştirin:

    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
    SMC-R ile şeffaf hızlandırmayı etkinleştirmek için network.alibabacloud.com/erdma-smcr: "true" açıklamasını ekleyin. Çekirdek sürümü 5.10.134-17 veya üzeri olan Alibaba Cloud Linux 3 gereklidir.
  2. Dağıtımı yapılandırma dosyasına göre dağıtın. Dağıtım, belirtilen sayıda pod kopyasını başlatır.

    kubectl apply -f example.yaml

İlgili bilgiler

ACK kümesinde eRDMA'yı yapılandırmak için bkz. ACK kümelerinde konteyner ağlarını hızlandırmak için eRDMA kullanın.