Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Use eRDMA to accelerate container networks in ACK clusters

Última atualização: Nov 03, 2026

O Elastic RDMA (eRDMA) é um service de rede RDMA de alto desempenho fornecido pela Alibaba Cloud, caracterizado por baixa latência, alto throughput e alta elasticidade. Utilize o eRDMA em clusters ACK para habilitar redes RDMA em pods, permitindo treinamento distribuído com NCCL (NVIDIA Collective Communications Library) ou aceleração TCP transparente via SMC-R (Shared Memory Communications over RDMA).

Instale o ACK eRDMA Controller e ative a aceleração eRDMA nos pods.

Pré-requisitos

Certifique-se de que você possui:

  • Um cluster ACK executando Kubernetes 1.20 ou posterior para nós CPU, ou 1.26 ou posterior para nós GPU. Upgrade a cluster se necessário.

  • Nós com suporte a Elastic RDMA Interface (ERI), provenientes de famílias de instâncias compatíveis com ERI, adicionados a um pool de nós.

  • Nós executando Alibaba Cloud Linux 3 (todas as versões), Alibaba Cloud Linux 4 (todas as versões) ou Ubuntu 24.04 para nós CPU; ou uma imagem com o driver eRDMA pré-instalado para nós GPU. Imagens personalizadas baseadas nessas opções também são suportadas.

Como funciona

O ACK eRDMA Controller gerencia interfaces de rede elástica (ENIs) compatíveis com eRDMA nos nós do cluster. Ele registra dispositivos eRDMA como o recurso estendido aliyun/erdma, configura rotas de ENI e expõe os dispositivos aos pods por meio de solicitações de recursos do Kubernetes.

Os pods solicitam acesso ao eRDMA declarando aliyun/erdma em seus limites de recursos. Para acelerar conexões TCP sem alterar o código, ative o SMC-R usando uma anotação no pod.

Componente

Função

ACK eRDMA Controller

Registra dispositivos eRDMA como recursos estendidos; gerencia rotas de ENI

Driver eRDMA (default / compat / ofed)

Driver de nível de kernel instalado em cada nó

Recurso aliyun/erdma

Recurso estendido do Kubernetes para acesso a dispositivos pelos pods

SMC-R

Protocolo Linux que substitui transparentemente o TCP pelo transporte RDMA

Etapa 1: Instalar o ACK eRDMA Controller

Nota

Caso seu cluster utilize o plugin de rede Terway, configure a whitelist for ENIs para impedir que o Terway modifique ENIs compatíveis com eRDMA.

  1. Na página Clusters, clique no nome do seu cluster e, em seguida, clique em Add-ons.

  2. Na página Add-ons, clique na aba Network. Localize e instale o ACK eRDMA Controller com as seguintes configurações:

    Nota

    Quando um nó possui múltiplas NICs, o controlador atribui às rotas de ENI eRDMA uma prioridade menor do que às rotas de NICs do mesmo CIDR. A prioridade padrão é 200. Evite conflitos de rota ao configurar manualmente as rotas de NIC.

    Configuração

    Descrição

    preferDriver (tipo de driver)

    Modo do driver eRDMA. default: aceleração padrão. compat: ambientes compatíveis com RoCE, incluindo estabelecimento de link out-of-band (OOB). ofed: instâncias GPU executando NCCL. Consulte Enable eRDMA.

    Specifies whether to assign all eRDMA devices of nodes to pods

    True: aloca todos os dispositivos eRDMA do nó para o pod. False: aloca um dispositivo conforme a topologia NUMA. O valor False exige a política de gerenciamento estático de CPU. Consulte Create and manage node pools.

  3. Acesse Workloads > Pods, defina o namespace como ack-erdma-controller e confirme se todos os pods estão em execução.

Etapa 2: Habilitar eRDMA nos pods

Adicione as configurações abaixo à especificação do seu pod para ativar a aceleração eRDMA.

Habilitar acesso a dispositivos eRDMA

Declare o recurso aliyun/erdma nos limites de recursos do contêiner:

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

Após o início do pod, verifique se os dispositivos eRDMA estão disponíveis:

/# ls /dev/infiniband/
rdma_cm  uverbs0
Quando preferDriver está definido como ofed (para instâncias GPU), o diretório /dev/infiniband/ do pod pode não conter o dispositivo rdma_cm e exibir apenas dispositivos como uverbs0. Esse comportamento é esperado, pois frameworks de comunicação como NCCL em cenários de GPU não dependem de rdma_cm, e a aceleração eRDMA não é afetada.

Habilitar aceleração TCP transparente com SMC-R

O SMC-R acelera transparentemente conexões TCP sobre RDMA sem exigir alterações no código. Após habilitar o acesso ao dispositivo eRDMA, adicione a seguinte anotação:

metadata:
  annotations:
    network.alibabacloud.com/erdma-smcr: "true"
Nota
  • Ambas as extremidades da conexão TCP devem ter o SMC-R habilitado.

  • O SMC-R é suportado apenas no Alibaba Cloud Linux 3 com versão de kernel 5.10.134-17 ou posterior. Consulte Alibaba Cloud Linux 3 image release notes.

  • Não há suporte para SMC-R quando preferDriver está definido como ofed ou compat.

  • O eRDMA e o SMC-R não suportam IPv6. O SMC-R reverte para TCP em conexões IPv6.

Casos de uso

Acelerar comunicação NCCL para treinamento distribuído com GPU

Este cenário destina-se a instâncias aceleradas por GPU que executam treinamento distribuído. Os pods utilizam o driver ofed e solicitam recursos de GPU e eRDMA.

  1. Instale o ACK eRDMA Controller com preferDriver definido como ofed.

  2. Adicione nós GPU ao pool de nós. Os nós GPU precisam ter o driver eRDMA instalado antes de ingressar no cluster: utilize uma imagem com a pilha de software eRDMA pré-instalada (recomendado) ou instale o driver manualmente conforme descrito em Enable eRDMA on GPU instances e, em seguida, confirme a configuração do driver eRDMA e da NIC após o ingresso do nó. Consulte Create and manage node pools.

  3. Instale os pacotes eRDMA na imagem do contêiner durante a compilação. Para Debian ou Ubuntu (substitua {OS|ubuntu} e {Version|focal} pelos seus valores):

    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

    Para Alibaba Cloud Linux ou RHEL, utilize o diretório de repositório correspondente ao seu sistema operacional:

    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. Implante a aplicação GPU. Este StatefulSet executa nccl-test em duas réplicas, cada uma com 8 GPUs e um dispositivo 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:
              capabilities:
                add:
                - SYS_RESOURCE
                - IPC_LOCK
            resources:
              limits:
                nvidia.com/gpu: "8"
                aliyun/erdma: "1"
              requests:
                nvidia.com/gpu: "8"
                aliyun/erdma: "1"
  5. Verifique se o NCCL está utilizando eRDMA. Os logs devem mostrar erdma_0 e erdma_1 como ativos, confirmando a aceleração eRDMA.

    image

Acelerar redes de aplicações transparentemente com SMC-R

Indicado para cargas de trabalho TCP padrão que necessitam de aceleração eRDMA sem modificações no código. Defina preferDriver como default.

  1. Instale o ACK eRDMA Controller com preferDriver definido como default.

  2. Implante a aplicação com a anotação SMC-R. Este Deployment habilita o acesso ao dispositivo eRDMA e a aceleração 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. Valide a aceleração. Instale smc-tools no contêiner e execute 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

    O valor SMCR na coluna Mode confirma que a aceleração eRDMA está ativa. Se for exibido TCP, verifique se tanto os pods cliente quanto servidor possuem a anotação SMC-R definida como "true".

Próximos passos