Dokumen ini menjelaskan cara mengonfigurasi dan menggunakan Remote Direct Memory Access (RDMA) pada Node Lingjun dalam ACK managed cluster Pro untuk komunikasi jaringan kontainer berkinerja tinggi. Teknologi RDMA secara signifikan mengurangi latensi jaringan dan meningkatkan throughput, sehingga cocok untuk skenario yang memerlukan kinerja jaringan tinggi, seperti komputasi kinerja tinggi (HPC), pelatihan AI, dan penyimpanan terdistribusi.
Pengenalan RDMA
Remote Direct Memory Access (RDMA) adalah teknologi komunikasi jaringan berkinerja tinggi yang dirancang untuk mengatasi latensi pemrosesan data di sisi server dalam transmisi jaringan tradisional. RDMA memungkinkan transfer data langsung dari memori satu komputer ke memori komputer lain tanpa melibatkan sistem operasi kedua pihak. Mekanisme ini mendukung komunikasi jaringan dengan throughput tinggi dan latensi rendah, sehingga sangat sesuai untuk kluster komputasi paralel berskala besar.
RDMA mentransfer data langsung ke memori komputer target melalui jaringan, melewati sistem operasi. Proses ini meminimalkan konsumsi daya pemrosesan serta mengurangi beban replikasi memori dan peralihan konteks, sehingga menghemat bandwidth memori dan siklus CPU, yang pada akhirnya meningkatkan kinerja aplikasi.
Prasyarat
Dalam Kubernetes, pod mendukung dua pola jaringan:
Pola IP independen: Pod memiliki alamat IP sendiri (mode non-hostNetwork).
Pola jaringan bersama: Pod langsung menggunakan jaringan node host (mode hostNetwork).
Untuk menggunakan fitur RDMA pada pod dalam mode non-hostNetwork, kondisi berikut harus dipenuhi:
Jaringan komputasi kluster bare metal Lingjun yang menampung Node Lingjun harus menggunakan IPv6.
Anda harus memilih mode IPv6 saat membuat kluster bare metal Lingjun.
Untuk informasi lebih lanjut tentang cara membuat kluster bare metal Lingjun dan dukungannya terhadap IPv6, hubungi tim Lingjun dengan membuat tiket.
Prosedur
Instal komponen RDMA Device Plugin.
Pada halaman Clusters, temukan kluster yang ingin Anda kelola dan klik namanya. Di panel navigasi kiri, klik Add-ons.
Pada halaman Component Management, klik tab Network. Temukan komponen RDMA Device Plugin dan instal sesuai petunjuk.
Item Konfigurasi
Deskripsi
Aktifkan RDMA untuk pod dalam mode non-hostNetwork
Pilih apakah akan mengaktifkan RDMA untuk pod dalam mode non-hostNetwork. Nilai yang valid:
False (tidak dicentang): Hanya pod dalam mode hostNetwork yang dapat menggunakan jaringan RDMA.True (dicentang): Memungkinkan pod dalam mode non-hostNetwork menggunakan jaringan RDMA. Sebelum mengaktifkan opsi ini, pastikan kluster bare metal Lingjun yang terkait dengan kluster ACK menggunakan IPv6. Jika tidak, konfigurasi RDMA tidak akan berlaku.
Verifikasi bahwa RDMA Device Plugin berjalan dengan benar pada setiap Node Lingjun yang diaktifkan RDMA.
kubectl get ds ack-rdma-dp-ds -n kube-systemKeluaran yang diharapkan:
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE ack-rdma-dp-ds 2 2 2 2 2 <none> xxhPeriksa apakah node memiliki sumber daya
rdma/hca.kubectl get node e01-cn-xxxx -oyamlKeluaran yang diharapkan:
... 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 ...Terapkan file YAML berikut untuk meminta sumber daya
rdma/hca, yang memungkinkan pod menggunakan fitur RDMA.Permintaan
rdma/hca: 1sudah cukup.Jika Anda tidak mengaktifkan RDMA untuk pod dalam mode non-hostNetwork di komponen RDMA Device Plugin, hanya pod dengan
hostNetwork: trueyang dapat menggunakan fitur 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 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 hostNetwork: true tolerations: - operator: Exists