Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Use RDMA networks for pods on Node Lingjun

Última atualização: Jun 27, 2026

O Remote Direct Memory Access (RDMA) transfere dados diretamente entre a memória de duas máquinas, sem passar pelo sistema operacional em ambos os lados. Isso elimina a sobrecarga de replicação de memória e troca de contexto, reduzindo o uso da CPU e melhorando o throughput e a latência da rede para cargas de trabalho de treinamento de IA, computação de alto desempenho (HPC) e armazenamento distribuído.

Este guia explica como instale o plugin de dispositivo RDMA no Node Lingjun e implantar pods que utilizam RDMA.

Escolha o modo de rede

Antes de começar, decida qual modo de rede seus pods utilizarão. Essa escolha define se o IPv6 é necessário no cluster bare metal Lingjun subjacente.

Modo

Descrição

IPv6 obrigatório no cluster bare metal Lingjun

Modo hostNetwork

O pod compartilha a pilha de rede do nó host

Não

Modo non-hostNetwork

O pod possui seu próprio endereço IP

Sim

Se seus pods usarem o modo non-hostNetwork, configure o cluster bare metal Lingjun que hospeda o Node Lingjun com IPv6. Selecione o modo IPv6 ao criar esse cluster. Para ative essa configuração, enviando um ticket para entrar em contato com a equipe do Lingjun.

Como funciona

O plugin de dispositivo RDMA do ACK (ack-rdma-device-plugin) executa como um DaemonSet em cada Node Lingjun com RDMA habilitado. Ele registra o recurso estendido rdma/hca no Kubernetes para que os pods solicitem acesso ao RDMA pelos limites de recursos padrão.

Pré-requisitos

Antes de iniciar, verifique se você tem:

  • Um cluster gerenciado ACK Pro com pelo menos um Node Lingjun equipado com hardware RDMA

  • (Para o modo non-hostNetwork) Um cluster bare metal Lingjun configurado com IPv6

Instale o plugin de dispositivo RDMA

  1. Na página Clusters, clique em no nome do seu cluster. No painel de navegação à esquerda, clique em em Add-ons.

  2. Na página Add-ons, clique em na aba Others. Localize o ack-rdma-device-plugin e instale-o. Configure o seguinte parâmetro durante a instalação:

    Importante

    Se você ative o RDMA para o modo non-hostNetwork, mas o cluster bare metal Lingjun não usar IPv6, a configuração do RDMA não terá efeito.

    Parâmetro

    Descrição

    Enable RDMA for non-hostNetwork

    Controla quais pods podem usar o RDMA. Defina como False (cleared) para restringir o RDMA aos pods no modo hostNetwork. Defina como True (selected) para permitir também pods no modo non-hostNetwork — exige que o cluster bare metal Lingjun use IPv6.

Verifique a configuração

Após a instalação, execute as verificações abaixo para confirme a disponibilidade do RDMA em seus nós.

Confirme a execução do DaemonSet

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

Saída esperada:

NAME             DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
ack-rdma-dp-ds   2         2         2       2            2           <none>          xxh

Todos os nós com RDMA habilitado aparecem nas contagens DESIRED, CURRENT e READY. Se o valor de READY for inferior a DESIRED, verifique os logs do pod do DaemonSet em busca de erros.

Validar a exposição do recurso RDMA pelos nós

kubectl get node e01-cn-xxxx -oyaml

Procure por rdma/hca tanto em allocatable quanto em capacity. O valor 1k confirma o registro dos recursos RDMA e sua disponibilidade para solicitação pelos pods.

Saída esperada:

...
  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
...

Implantar um pod com RDMA

Para conceder acesso ao RDMA a um pod, solicite o recurso rdma/hca em seus limits. Uma solicitação de rdma/hca: 1 é suficiente.

Importante

O pod requer duas capacidades do Linux (IPC_LOCK e SYS_RESOURCE) e um volume de memória compartilhada em /dev/shm. A capacidade IPC_LOCK permite o bloqueio de memória para transferências zero-copy, enquanto SYS_RESOURCE autoriza o processo a defina limites de recursos. Sem essas permissões, as operações RDMA falharão ou apresentarão baixo desempenho.

O manifesto de Job a seguir apresenta uma configuração completa de 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        # Request one RDMA HCA device
        workingDir: /root
        volumeMounts:
          - name: shm
            mountPath: /dev/shm  # Shared memory required for RDMA operations
        securityContext:
          capabilities:
            add:
            - SYS_RESOURCE       # Allows the process to set resource limits (required for RDMA)
            - IPC_LOCK           # Allows memory locking (required for zero-copy RDMA transfers)
      restartPolicy: Never
      volumes:
        - name: shm
          emptyDir:
            medium: Memory
            sizeLimit: 8Gi
      hostNetwork: true          # Remove this line if using non-hostNetwork mode with IPv6
      tolerations:
        - operator: Exists

Caso tenha ativado o RDMA para o modo non-hostNetwork, remova a linha hostNetwork: true. Pods sem esse campo operam no modo non-hostNetwork e ainda acessam o RDMA pelo plugin.