Dokumen ini menjelaskan cara menjalankan workload komputasi berperforma tinggi (HPC) di cluster Google Kubernetes Engine (GKE) yang menggunakan seri mesin H4D dan akses memori langsung jarak jauh (RDMA).
H4D adalah seri mesin dalam Kelompok mesin yang dioptimalkan untuk komputasi untuk Compute Engine. Seri mesin ini dioptimalkan untuk performa tinggi, biaya rendah, dan skalabilitas. H4D berfungsi dengan baik untuk aplikasi yang diskalakan di beberapa node. Instance H4D yang dikonfigurasi untuk menggunakan RDMA mendukung bandwidth jaringan hingga 200 Gbps antar-node.
Sebelum memulai
Sebelum memulai, pastikan Anda telah melakukan tugas berikut:
- Aktifkan Google Kubernetes Engine API. Aktifkan Google Kubernetes Engine API
- Jika ingin menggunakan Google Cloud CLI untuk tugas ini,
instal lalu
lakukan inisialisasi
gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan perintah
gcloud components update. gcloud CLI versi sebelumnya mungkin tidak mendukung menjalankan perintah dalam dokumen ini.
Dapatkan kapasitas untuk VM H4D setelah memilih opsi konsumsi. Alokasi resource padat direkomendasikan untuk VM H4D. Alokasi resource padat tersedia dengan beberapa model penyediaan untuk H4D, dan memberi Anda kemampuan pengelolaan cluster yang ditingkatkan untuk kapasitas H4D Anda. Untuk mendapatkan kapasitas, lakukan hal berikut:
Pastikan Anda mematuhi persyaratan versi GKE berikut:
- Gunakan GKE versi 1.32.6-gke.1060000 atau yang lebih baru untuk membuat node pool dengan VM H4D yang dicadangkan dalam mode Standar GKE.
Gunakan GKE versi 1.33.2-gke.4731000 atau yang lebih baru untuk membuat berikut ini:
- Node H4D dengan flex-start
- Node H4D dengan Autopilot
- Node H4D dengan penskalaan otomatis cluster di cluster Standard
- Node H4D dengan penyediaan otomatis node di cluster Standard
Gunakan hanya lokasi tempat jenis mesin H4D tersedia. Untuk mengetahui informasi selengkapnya, lihat tabel di Region dan zona yang tersedia, dengan memfilter
H4D.Gunakan hanya image node Container-Optimized OS.
Tinjau batasan H4D.
Tinjau cara menangani pemeliharaan host, karena jenis mesin H4D tidak mendukung migrasi langsung. Untuk mengetahui informasi selengkapnya, lihat Pengalaman pemeliharaan untuk instance H4D, dan Mengelola gangguan pada node GKE yang tidak melakukan migrasi langsung.
Mengonfigurasi cluster dan jaringan GKE
Anda dapat menggunakan Cluster Toolkit untuk membuat cluster GKE yang siap produksi dengan cepat yang menggunakan VM H4D yang terikat reservasi. Petunjuk Cluster Toolkit di bagian ini menggunakan Blueprint GKE H4D.
Atau, Anda dapat menggunakan Google Cloud CLI untuk fleksibilitas maksimum dalam mengonfigurasi lingkungan cluster dengan VM yang terikat reservasi atau VM Flex-start.
Cluster Toolkit
Siapkan Cluster Toolkit. Sebaiknya gunakan Cloud Shell untuk melakukannya karena dependensi sudah diinstal sebelumnya untuk Cluster Toolkit.
Dapatkan alamat IP untuk mesin host tempat Anda menginstal Cluster Toolkit:
curl ifconfig.meSimpan alamat IP ini untuk digunakan sebagai variabel
IP_ADDRESSpada langkah berikutnya.Buat bucket Cloud Storage untuk menyimpan status deployment Terraform:
gcloud storage buckets create gs://BUCKET_NAME \ --default-storage-class=STANDARD \ --project=PROJECT_ID \ --location=COMPUTE_REGION_TERRAFORM_STATE \ --uniform-bucket-level-access gcloud storage buckets update gs://BUCKET_NAME --versioningGanti variabel berikut:
BUCKET_NAME: nama bucket Cloud Storage baru.PROJECT_ID: Google Cloud Project ID Anda.COMPUTE_REGION_TERRAFORM_STATE: region komputasi tempat Anda ingin menyimpan status deployment Terraform.
Dalam cetak biru
examples/gke-h4d/gke-h4d-deployment.yamldari repo GitHub, isi setelan berikut di bagianterraform_backend_defaultsdanvarsagar sesuai dengan nilai spesifik untuk deployment Anda:DEPLOYMENT_NAME: nama unik untuk deployment, yang panjangnya harus antara 6 dan 30 karakter. Jika nama deployment tidak unik dalam project, pembuatan cluster akan gagal. Nilai defaultnya adalahgke-h4d.BUCKET_NAME: nama bucket Cloud Storage yang Anda buat di langkah sebelumnya.PROJECT_ID: Google Cloud Project ID Anda.COMPUTE_REGION: region komputasi untuk cluster, yang harus cocok dengan region tempat mesin tersedia untuk pemesanan Anda.COMPUTE_ZONE: zona komputasi untuk node pool mesin H4D. Perhatikan bahwa zona ini harus cocok dengan zona tempat mesin tersedia dalam reservasi Anda.NODE_COUNT: jumlah node H4D di cluster Anda.IP_ADDRESS/SUFFIX: Rentang alamat IP yang ingin Anda izinkan untuk terhubung dengan cluster. Blok CIDR ini harus mencakup alamat IP mesin yang ingin Anda gunakan untuk memanggil Terraform. Untuk mengetahui informasi selengkapnya, lihat Cara kerja jaringan yang diizinkan.Untuk kolom
reservation, gunakan salah satu opsi berikut, bergantung pada apakah Anda ingin menargetkan blok tertentu dalam reservasi saat menyediakan node pool:- Untuk menempatkan node pool di mana saja dalam reservasi, berikan
nama reservasi Anda
(
RESERVATION_NAME). Untuk menargetkan blok tertentu dalam reservasi, gunakan nama reservasi dan blok dalam format berikut:
RESERVATION_NAME/reservationBlocks/BLOCK_NAMEJika Anda tidak tahu blok mana yang tersedia dalam reservasi Anda, lihat Melihat topologi reservasi.
- Untuk menempatkan node pool di mana saja dalam reservasi, berikan
nama reservasi Anda
(
Buat Kredensial Default Aplikasi (ADC) untuk memberikan akses ke Terraform. Jika menggunakan Cloud Shell, Anda dapat menjalankan perintah berikut:
gcloud auth application-default loginDeploy blueprint untuk menyediakan infrastruktur GKE menggunakan jenis mesin H4D:
./gcluster deploy -d examples/gke-h4d/gke-h4d-deployment.yaml examples/gke-h4d/gke-h4d.yamlJika diminta, pilih (T)erapkan untuk men-deploy blueprint.
Selain itu, cetak biru ini menyediakan instance Filestore dan menghubungkannya ke cluster GKE dengan Volume Persisten (PV). Contoh template Job disertakan dalam cetak biru ini. Template ini menjalankan Tugas paralel yang membaca dan menulis data ke penyimpanan bersama ini.
kubectl createditampilkan di output deployment yang dapat digunakan untuk memicu Job contoh.
Google Cloud CLI
Ganti nilai berikut untuk perintah di bagian ini:
PROJECT_ID: Google Cloud Project ID Anda.CLUSTER_NAME: nama cluster Anda.CONTROL_PLANE_LOCATION: lokasi Compute Engine bidang kontrol cluster Anda. Berikan region untuk cluster regional, atau zona untuk cluster zona. Cluster regional direkomendasikan untuk beban kerja produksi. Untuk cluster regional, region harus menyertakan zona tempat H4D tersedia. Untuk cluster zona, zona harus memiliki ketersediaan H4D. Jika Anda menggunakan reservasi, region dan zona harus cocok dengan region dan zona reservasi.COMPUTE_ZONE: zona node pool Anda. Ini harus berupa zona tempat H4D tersedia. Jika Anda menggunakan reservasi, region dan zona harus cocok dengan region dan zona reservasi. Anda tidak dapat membuat node pool multi-zona jika ingin node H4D berfungsi dengan Cloud RDMA.RDMA_NETWORK_PREFIX: awalan jaringan RDMA (misalnya,h4d-rdma).RDMA_SUBNET_CIDR: rentang CIDR subnet RDMA. Pastikan rentang ini tidak tumpang-tindih dengan jaringan default cluster.NODE_POOL_NAME: nama node pool H4D Anda.NODE_COUNT: jumlah node H4D yang akan dibuat di node pool.H4D_MACHINE_TYPE: jenis mesin H4D yang akan digunakan (misalnya,h4d-highmem-192-lssd).
Buat cluster dengan gcloud CLI menggunakan langkah-langkah berikut:
Buat VPC dan subnet: Konfigurasi Virtual Private Cloud (VPC) dan subnet default untuk cluster. Untuk kartu antarmuka jaringan (NIC) IRDMA, buat VPC dan subnet khusus. VPC yang dibuat dengan petunjuk berikut menggunakan profil jaringan VPC Falcon sesuai kebutuhan.
Buat VPC untuk antarmuka jaringan IRDMA yang menggunakan protokol transportasi RDMA over Falcon:
gcloud compute --project=PROJECT_ID \ networks create RDMA_NETWORK_PREFIX-net \ --network-profile=COMPUTE_ZONE-vpc-falcon \ --subnet-mode=customBuat subnet untuk jaringan VPC Falcon:
gcloud compute --project=PROJECT_ID \ networks subnets create \ RDMA_NETWORK_PREFIX-sub-0 \ --network=RDMA_NETWORK_PREFIX-net \ --region=CONTROL_PLANE_LOCATION \ --range=RDMA_SUBNET_CIDR
Buat cluster GKE dengan multi-networking: Buat cluster. Secara opsional, dengan perintah ini, Anda dapat secara eksplisit memberikan rentang CIDR sekunder untuk layanan dan Pod.
Jalankan perintah berikut:
gcloud container clusters create CLUSTER_NAME --project PROJECT_ID \ --enable-dataplane-v2 --enable-ip-alias --location=CONTROL_PLANE_LOCATION \ --enable-multi-networking \ [--services-ipv4-cidr=SERVICE_CIDR \ --cluster-ipv4-cidr=POD_CIDR]Jika Anda menggunakan flag opsional ini, ganti nilai tambahan berikut:
SERVICE_CIDR: rentang CIDR sekunder untuk layanan.POD_CIDR: rentang CIDR sekunder untuk Pod.
Saat Anda menggunakan tanda ini, pastikan rentang CIDR tidak tumpang-tindih dengan rentang subnet untuk jaringan node tambahan. Misalnya,
SERVICE_CIDR=10.65.0.0/19danPOD_CIDR=10.64.0.0/19.Buat objek jaringan GKE: Konfigurasi jaringan VPC menggunakan set parameter jaringan GKE. Terapkan objek
GKENetworkParamSetdanNetwork:kubectl apply -f - <<EOF apiVersion: networking.gke.io/v1 kind: GKENetworkParamSet metadata: name: rdma-0 spec: vpc: RDMA_NETWORK_PREFIX-net vpcSubnet: RDMA_NETWORK_PREFIX-sub-0 deviceMode: RDMA --- apiVersion: networking.gke.io/v1 kind: Network metadata: name: rdma-0 spec: type: "Device" parametersRef: group: networking.gke.io kind: GKENetworkParamSet name: rdma-0 EOFBuat node pool H4D: Buat node pool yang menggunakan H4D dan terhubung ke jaringan VPC Falcon. Anda dapat menggunakan node H4D terikat pemesanan dan penempatan rapat. Atau, Anda dapat menggunakan node H4D yang disediakan dengan flex-start. Pilih tab yang sesuai dengan opsi konsumsi Anda:
Terikat dengan reservasi
Buat kebijakan resource untuk penempatan rapat. Penempatan rapat mengoptimalkan performa untuk workload HPC yang terkait erat—yang berjalan di beberapa node—dengan memastikan bahwa node ditempatkan secara fisik satu sama lain dalam suatu zona.
Jalankan perintah berikut:
gcloud compute resource-policies create group-placement POLICY_NAME \ --region REGION --collocation collocatedGanti nilai berikut:
POLICY_NAME: nama kebijakan resource (misalnya,h4d-compact).REGION: region cluster Anda.
Buat node pool yang menggunakan H4D dan terhubung ke jaringan RDMA:
gcloud container node-pools create NODE_POOL_NAME --project PROJECT_ID \ --location=CONTROL_PLANE_LOCATION --cluster CLUSTER_NAME --num-nodes=NODE_COUNT \ --node-locations=COMPUTE_ZONE \ --machine-type H4D_MACHINE_TYPE \ --additional-node-network network=RDMA_NETWORK_PREFIX-net,subnetwork=RDMA_NETWORK_PREFIX-sub-0 \ --placement-policy POLICY_NAME \ --max-surge-upgrade 0 \ --max-unavailable-upgrade MAX_UNAVAILABLEGanti
MAX_UNAVAILABLEdengan jumlah maksimum node yang dapat tidak tersedia secara bersamaan selama upgrade node pool. Untuk penempatan rapat, sebaiknya gunakan upgrade cepat tanpa lonjakan untuk mengoptimalkan kemungkinan penemuan node dengan lokasi yang sama selama upgrade.
Flex-start
Buat node pool yang menggunakan node H4D yang disediakan dengan flex-start, dan terhubung ke jaringan VPC Falcon:
gcloud container node-pools create NODE_POOL_NAME --project PROJECT_ID \ --location=CONTROL_PLANE_LOCATION --cluster CLUSTER_NAME \ --node-locations=COMPUTE_ZONE \ --machine-type H4D_MACHINE_TYPE \ --additional-node-network network=RDMA_NETWORK_PREFIX-net,subnetwork=RDMA_NETWORK_PREFIX-sub-0 \ --flex-start --enable-autoscaling --reservation-affinity=none \ --min-nodes=0 --max-nodes=MAX_NODES --num-nodes=0Ganti
MAX_NODESdengan jumlah maksimum node yang akan diskalakan secara otomatis untuk node pool yang ditentukan per zona.
Menyiapkan image Docker
Siapkan image Anda menggunakan contoh Dockerfile berikut:
FROM docker.io/rockylinux/rockylinux:8.10
RUN dnf -y install https://depot.ciq.com/public/download/ciq-sigcloud-next-8/ciq-sigcloud-next-8.x86_64/Packages/c/ciq-sigcloud-next-release-6-1.el8_10.cld_next.noarch.rpm
&& dnf -y update ciq-sigcloud-next-release
&& dnf clean all
RUN dnf install rdma-core libibverbs-utils librdmacm-utils infiniband-diags perftest -y
Untuk mengetahui informasi selengkapnya tentang image yang mendukung IRDMA, lihat tab Antarmuka dalam tabel di Detail sistem operasi.
Mengonfigurasi manifes untuk RDMA
Aktifkan Cloud RDMA dengan menambahkan anotasi berikut ke metadata Pod Anda:
metadata:
annotations:
networking.gke.io/default-interface: 'eth0'
networking.gke.io/interfaces: |
[
{"interfaceName":"eth0","network":"default"},
{"interfaceName":"eth1","network":"rdma-0"},
]
Menguji RDMA dengan rping
Verifikasi fungsi Cloud RDMA dengan menjalankan rping antara server dan Pod klien:
Di Pod server, jalankan perintah
rping:rping -sDi Pod klien, jalankan perintah
rping:rping -c -C 2 -d -a SERVER_IPGanti
SERVER_IPdengan alamat IP Pod server.Output yang berhasil akan terlihat seperti berikut:
created cm_id 0x5b597bf94800 cma_event type RDMA_CM_EVENT_ADDR_RESOLVED cma_id 0x5b597bf94800 (parent) cma_event type RDMA_CM_EVENT_ROUTE_RESOLVED cma_id 0x5b597bf94800 (parent) rdma_resolve_addr - rdma_resolve_route successful created pd 0x5b597bf94fa0 created channel 0x5b597bf96830 created cq 0x5b597bf94ff0 created qp 0x5b597bf96c00 rping_setup_buffers called on cb 0x5b597bf8c820 allocated & registered buffers... cq_thread started. cma_event type RDMA_CM_EVENT_ESTABLISHED cma_id 0x5b597bf94800 (parent) ESTABLISHED rdma_connect successful RDMA addr 5b597bf8cd80 rkey dadac8c4 len 64 send completion recv completion RDMA addr 5b597bf8cff0 rkey 86ef015f len 64 send completion recv completion RDMA addr 5b597bf8cd80 rkey dadac8c4 len 64 send completion recv completion RDMA addr 5b597bf8cff0 rkey 86ef015f len 64 send completion recv completion rping_free_buffers called on cb 0x5b597bf8c820 destroy cm_id 0x5b597bf94800
Langkah berikutnya
- Pelajari lebih lanjut komputasi berperforma tinggi.
- Beberapa workload HPC memerlukan Message Passing Interface (MPI) untuk menjalankan workload multi-node yang terkait erat dengan RDMA. Untuk mengetahui informasi selengkapnya tentang cara menyetel MPI di cluster untuk node H4D, lihat Menjalankan Workload MPI di GKE H4D.