No modo compartilhado de Remote Direct Memory Access (RDMA), vários pods compartilham a mesma NIC física de RDMA. Use este modo para cargas de trabalho que não exigem isolamento rigoroso de dispositivos.
Pré-requisitos
Um cluster ACK gerenciado Pro com nós Lingjun adicionados. Para mais informações, consulte Crie e gerencie um pool de nós Lingjun.
Um nó Lingjun equipado com uma NIC física de RDMA e com o driver da NIC funcionando corretamente. Para mais informações, consulte Instale o driver da NIC RDMA.
O add-on do plugin de dispositivo RDMA instalado. Para mais informações, consulte RDMA overview.
Verificar o recurso de RDMA no nó
O add-on do plugin de dispositivo RDMA registra cada NIC física de RDMA como 1.000 recursos virtuais rdma/hca e os aloca aos pods sob demanda. Após instalar o add-on, execute o comando abaixo para verificar se o nó fornece o recurso rdma/hca:
kubectl get node <node-name> -oyaml
Saída esperada:
...
allocatable:
cpu: 189280m
rdma/hca: 1k
capacity:
cpu: "192"
rdma/hca: 1k
...
Implantar uma carga de trabalho que usa RDMA
Selecione um modo com base nos seus requisitos de rede e isolamento.
Cenário 1: Usar RDMA no modo hostNetwork
No modo hostNetwork, o pod utiliza diretamente a rede do nó host. Este cenário é ideal quando se exige o máximo desempenho de rede.
Caso a opção de modo non-hostNetwork do add-on do plugin de dispositivo RDMA esteja desativada (item de configuração definido como False), defina hostNetwork: true para usar o RDMA.
apiVersion: batch/v1
kind: Job
metadata:
name: rdma-hostnetwork-test
spec:
parallelism: 1
template:
spec:
hostNetwork: true
tolerations:
- operator: Exists
containers:
- name: rdma-test
image: "<image>"
command:
- sh
- -c
- |
python /workspace/benchmark.py
resources:
limits:
nvidia.com/gpu: 8
rdma/hca: 1
workingDir: /root
volumeMounts:
- name: shm
mountPath: /dev/shm
securityContext:
capabilities:
add:
- SYS_RESOURCE
- IPC_LOCK
restartPolicy: Never
volumes:
- name: shm
emptyDir:
medium: Memory
sizeLimit: 8Gi
Configurações principais
|
Item de configuração |
Descrição |
|
|
O pod usa a rede do nó host e acessa diretamente o dispositivo RDMA. |
|
|
Solicita recursos de dispositivo RDMA. |
|
|
Solicita recursos de GPU. Ajuste o valor conforme necessário. |
|
|
Volume de memória compartilhada usado por múltiplos processos para troca de dados. |
|
|
Capacidades do Linux exigidas pelas aplicações RDMA. |
Cenário 2: Usar RDMA no modo non-hostNetwork
No modo non-hostNetwork, cada pod possui seu próprio endereço IP. Esta configuração requer o seguinte:
A rede de computação do cluster bare metal Lingjun deve estar configurada para IPv6. Selecione o modo IPv6 durante a criação do cluster. Caso contrário, a configuração de RDMA não terá efeito.
O item de configuração Enable RDMA network support (non-hostNetwork mode) do add-on do plugin de dispositivo RDMA deve estar definido como
True. Para mais informações, consulte RDMA overview.
apiVersion: batch/v1
kind: Job
metadata:
name: rdma-non-hostnetwork-test
spec:
parallelism: 1
template:
spec:
hostNetwork: false
tolerations:
- operator: Exists
containers:
- name: rdma-test
image: "<image>"
command:
- sh
- -c
- |
python /workspace/benchmark.py
resources:
limits:
nvidia.com/gpu: 8
rdma/hca: 1
workingDir: /root
volumeMounts:
- name: shm
mountPath: /dev/shm
securityContext:
capabilities:
add:
- SYS_RESOURCE
- IPC_LOCK
restartPolicy: Never
volumes:
- name: shm
emptyDir:
medium: Memory
sizeLimit: 8Gi
Em comparação ao Cenário 1, apenas hostNetwork: false e o nome do Job (rdma-non-hostnetwork-test) são diferentes. Para o significado dos demais itens de configuração, consulte as configurações principais no Cenário 1.
Após enviar o Job, visualize os logs do pod para conferir os resultados do teste de RDMA. Substitua <image> por uma imagem que forneça seu script de teste em /workspace/benchmark.py.
Alternar entre modos
Para alternar entre o modo compartilhado e o exclusivo, atualize a configuração no node pool. Não há suporte para alternância em tempo de execução.
Antes de trocar o modo, certifique-se de que nenhum pod no nó esteja utilizando recursos rdma/hca. Caso contrário, as alocações de dispositivos dos pods existentes serão revogadas.
Para permitir que um pod use exclusivamente uma NIC física de RDMA com afinidade NUMA, mude para o modo exclusivo. Para mais informações, consulte Use RDMA exclusive mode.