Todos los productos
Search
Centro de documentos

Container Service for Kubernetes:Uso de redes RDMA para pods en Node Lingjun

Última actualización: Sep 04, 2026

Remote Direct Memory Access (RDMA) transfiere datos directamente entre la memoria de dos máquinas y omite el sistema operativo en ambos extremos. Esto elimina la replicación de memoria y la sobrecarga por cambio de contexto, lo que reduce el uso de CPU y mejora el throughput y la latencia de la red en cargas de trabajo de entrenamiento de IA, cómputo de alto rendimiento (HPC) y almacenamiento distribuido.

Esta guía explica cómo instalar el plugin de dispositivo RDMA en Node Lingjun y desplegar pods que utilicen RDMA.

Elección del modo de red

Antes de empezar, decida qué modo de red utilizarán sus pods. Esta decisión determina si necesita IPv6 en el clúster subyacente de bare metal de Lingjun.

Modo

Descripción

IPv6 obligatorio en el clúster de bare metal de Lingjun

Modo hostNetwork

El pod comparte la pila de red del nodo host

No

Modo non-hostNetwork

El pod tiene su propia dirección IP

Sí

Si sus pods utilizan el modo non-hostNetwork, el clúster de bare metal de Lingjun que aloja a Node Lingjun debe estar configurado con IPv6. Seleccione el modo IPv6 al crear dicho clúster. Para habilitar esta opción, enviando un ticket para contactar al equipo de Lingjun.

Funcionamiento

El plugin de dispositivo RDMA de ACK (ack-rdma-device-plugin) se ejecuta como un DaemonSet en cada Node Lingjun con RDMA habilitado. Este registra el recurso extendido rdma/hca en Kubernetes para que los pods puedan solicitar acceso a RDMA mediante límites de recursos estándar.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

  • Un clúster administrado ACK Pro con al menos un Node Lingjun que disponga de hardware RDMA

  • (Para el modo non-hostNetwork) Un clúster de bare metal de Lingjun configurado con IPv6

Instalación del plugin de dispositivo RDMA

  1. En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en Add-ons.

  2. En la página Add-ons, haga clic en la pestaña Others. Busque ack-rdma-device-plugin e instálelo. Configure el siguiente parámetro durante la instalación:

    Importante

    Si habilita RDMA para el modo non-hostNetwork pero el clúster de bare metal de Lingjun no utiliza IPv6, la configuración de RDMA no surtirá efecto.

    Parámetro

    Descripción

    Enable RDMA for non-hostNetwork

    Controla qué pods pueden usar RDMA. Establezca este valor en False (cleared) para restringir RDMA a los pods en modo hostNetwork. Establézcalo en True (selected) para permitir también los pods en modo non-hostNetwork; esto requiere que el clúster de bare metal de Lingjun use IPv6.

Comprobación de la configuración

Después de la instalación, ejecute las siguientes comprobaciones para confirmar que RDMA está disponible en sus nodos.

Verificación de la ejecución del DaemonSet

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

Salida esperada:

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

Todos los nodos con RDMA habilitado aparecen en los conteos DESIRED, CURRENT y READY. Si READY es menor que DESIRED, revise los registros del pod del DaemonSet en busca de errores.

Verificación de la exposición del recurso RDMA en los nodos

kubectl get node e01-cn-xxxx -oyaml

Busque rdma/hca tanto en allocatable como en capacity. Un valor de 1k confirma que los recursos RDMA están registrados y disponibles para que los pods los soliciten.

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

Despliegue de un pod con RDMA

Para otorgar acceso a RDMA a un pod, solicite el recurso rdma/hca en sus limits. Una solicitud de rdma/hca: 1 es suficiente.

Importante

El pod requiere dos capacidades de Linux (IPC_LOCK y SYS_RESOURCE) y un volumen de memoria compartida en /dev/shm. IPC_LOCK permite el bloqueo de memoria para transferencias sin copia. SYS_RESOURCE permite que el proceso establezca límites de recursos. Sin estas capacidades, las operaciones de RDMA fallarán o tendrán un rendimiento deficiente.

El siguiente manifiesto de Job muestra una configuración 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

Si habilitó RDMA para el modo non-hostNetwork, elimine la línea hostNetwork: true. Los pods sin ese campo utilizan el modo non-hostNetwork y aun así pueden acceder a RDMA a través del plugin.