Panduan ini menjelaskan cara membuat volume Kubernetes baru yang didukung oleh driver CSI Managed Lustre di GKE dengan penyediaan dinamis. Driver CSI Managed Lustre memungkinkan Anda membuat penyimpanan yang didukung oleh instance Managed Lustre sesuai permintaan, dan mengaksesnya sebagai volume untuk workload stateful Anda.
Sebelum memulai
Sebelum memulai, pastikan Anda telah melakukan tugas berikut:
- Aktifkan Google Cloud Managed Lustre API dan Google Kubernetes Engine API. Aktifkan 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
. Versi gcloud CLI yang lebih lama mungkin tidak mendukung menjalankan perintah dalam dokumen ini.
- Untuk mengetahui batasan dan persyaratan, lihat Ringkasan driver CSI.
- Pastikan untuk mengaktifkan driver CSI Managed Lustre. Fitur ini dinonaktifkan secara default di cluster Standard dan Autopilot.
Menyiapkan variabel lingkungan
Siapkan variabel lingkungan berikut:
export CLUSTER_NAME=CLUSTER_NAME
export PROJECT_ID=PROJECT_ID
export NETWORK_NAME=LUSTRE_NETWORK
export IP_RANGE_NAME=LUSTRE_IP_RANGE
export FIREWALL_RULE_NAME=LUSTRE_FIREWALL_RULE
export LOCATION=ZONE
export CLUSTER_VERSION=CLUSTER_VERSION
Ganti kode berikut:
CLUSTER_NAME
: nama cluster.PROJECT_ID
: Google Cloud project ID Anda.LUSTRE_NETWORK
: jaringan Virtual Private Cloud (VPC) bersama tempat cluster GKE dan instance Managed Lustre berada.LUSTRE_IP_RANGE
: nama untuk rentang alamat IP yang dibuat untuk VPC Network Peering dengan Managed Lustre.LUSTRE_FIREWALL_RULE
: nama aturan firewall untuk mengizinkan traffic TCP dari rentang alamat IP.ZONE
: zona geografis cluster GKE Anda; misalnya,us-central1-a
.CLUSTER_VERSION
: versi cluster GKE.
Menyiapkan jaringan VPC
Anda harus menentukan jaringan VPC yang sama saat membuat instance Managed Lustre dan cluster GKE, atau terhubung melalui Network Connectivity Center jika menggunakan jaringan VPC yang di-peering.
Untuk mengaktifkan jaringan layanan, jalankan perintah berikut:
gcloud services enable servicenetworking.googleapis.com \ --project=${PROJECT_ID}
Buat jaringan VPC. Menyetel tanda
--mtu
ke8896
akan menghasilkan peningkatan performa sebesar 10%.gcloud compute networks create ${NETWORK_NAME} \ --subnet-mode=auto --project=${PROJECT_ID} \ --mtu=8896
Buat rentang alamat IP.
gcloud compute addresses create ${IP_RANGE_NAME} \ --global \ --purpose=VPC_PEERING \ --prefix-length=20 \ --description="Managed Lustre VPC Peering" \ --network=${NETWORK_NAME} \ --project=${PROJECT_ID}
Dapatkan rentang CIDR yang terkait dengan rentang yang Anda buat pada langkah sebelumnya.
CIDR_RANGE=$( gcloud compute addresses describe ${IP_RANGE_NAME} \ --global \ --format="value[separator=/](address, prefixLength)" \ --project=${PROJECT_ID} )
Buat aturan firewall untuk mengizinkan traffic TCP dari rentang alamat IP yang Anda buat.
gcloud compute firewall-rules create ${FIREWALL_RULE_NAME} \ --allow=tcp:988,tcp:6988 \ --network=${NETWORK_NAME} \ --source-ranges=${CIDR_RANGE} \ --project=${PROJECT_ID}
Untuk menyiapkan peering jaringan untuk project Anda, pastikan Anda memiliki izin IAM yang diperlukan, khususnya peran
compute.networkAdmin
atauservicenetworking.networksAdmin
.- Buka konsol Google Cloud > IAM & Admin, lalu telusuri pokok pemilik project Anda.
- Klik ikon pensil, lalu klik + TAMBAHKAN PERAN LAIN.
- Pilih Compute Network Admin atau Service Networking Admin.
- Klik Simpan.
Hubungkan peering.
gcloud services vpc-peerings connect \ --network=${NETWORK_NAME} \ --project=${PROJECT_ID} \ --ranges=${IP_RANGE_NAME} \ --service=servicenetworking.googleapis.com
Mengonfigurasi driver CSI Managed Lustre
Bagian ini membahas cara mengaktifkan dan menonaktifkan driver CSI Managed Lustre, jika diperlukan.
Port komunikasi Lustre
Driver CSI GKE Managed Lustre menggunakan port yang berbeda untuk berkomunikasi dengan instance Managed Lustre, bergantung pada versi cluster GKE dan konfigurasi Managed Lustre yang ada.
Port default (Direkomendasikan): untuk cluster GKE baru yang menjalankan versi
1.33.2-gke.4780000
atau yang lebih baru, driver menggunakan port988
untuk komunikasi Lustre secara default.Port Lama: gunakan port
6988
dengan menambahkan tanda--enable-legacy-lustre-port
ke perintahgcloud
Anda dalam skenario berikut:- Versi GKE sebelumnya: jika cluster GKE Anda menjalankan versi yang lebih lama dari
1.33.2-gke.4780000
, tanda--enable-legacy-lustre-port
akan mengatasi konflik port dengangke-metadata-server
di node GKE. - Instance Lustre yang ada: jika Anda terhubung ke instance Managed Lustre yang ada dan dibuat dengan flag
gke-support-enabled
, Anda harus tetap menyertakan--enable-legacy-lustre-port
dalam perintahgcloud
, terlepas dari versi cluster Anda. Tanpa tanda ini, cluster GKE Anda tidak akan dapat memasang instance Lustre yang ada. Untuk mengetahui informasi tentang flaggke-support-enabled
, lihat deskripsi flag opsional di Membuat instance.
- Versi GKE sebelumnya: jika cluster GKE Anda menjalankan versi yang lebih lama dari
Anda dapat mengonfigurasi cluster baru dan yang sudah ada untuk menggunakan port default 988
, atau port lama 6988
.
Mengaktifkan driver CSI Managed Lustre di cluster GKE baru
Bagian berikut menjelaskan cara mengaktifkan driver CSI Managed Lustre di cluster GKE baru.
Gunakan port default 988
Untuk mengaktifkan driver CSI Managed Lustre saat membuat cluster GKE baru yang menjalankan versi 1.33.2-gke.4780000
atau yang lebih baru, jalankan perintah berikut:
Autopilot
gcloud container clusters create-auto "${CLUSTER_NAME}" \
--location=${LOCATION} \
--network="${NETWORK_NAME}" \
--cluster-version=${CLUSTER_VERSION} \
--enable-lustre-csi-driver
Standar
gcloud container clusters create "${CLUSTER_NAME}" \
--location=${LOCATION} \
--network="${NETWORK_NAME}" \
--cluster-version=${CLUSTER_VERSION} \
--addons=LustreCsiDriver
Menggunakan port lama 6988
Untuk mengaktifkan driver CSI Managed Lustre saat membuat cluster GKE baru yang menjalankan versi lebih lama dari 1.33.2-gke.4780000
, jalankan perintah berikut:
Autopilot
gcloud container clusters create-auto "${CLUSTER_NAME}" \
--location=${LOCATION} \
--network="${NETWORK_NAME}" \
--cluster-version=${CLUSTER_VERSION} \
--enable-lustre-csi-driver \
--enable-legacy-lustre-port
Standar
gcloud container clusters create "${CLUSTER_NAME}" \
--location=${LOCATION} \
--network="${NETWORK_NAME}" \
--cluster-version=${CLUSTER_VERSION} \
--addons=LustreCsiDriver \
--enable-legacy-lustre-port
Mengaktifkan driver CSI Managed Lustre pada cluster GKE yang ada
Bagian berikut menjelaskan cara mengaktifkan driver CSI Managed Lustre di cluster GKE yang ada.
Gunakan port default 988
Untuk mengaktifkan driver CSI Managed Lustre di cluster GKE yang ada yang menjalankan versi 1.33.2-gke.4780000
atau yang lebih baru, jalankan perintah berikut:
gcloud container clusters update ${CLUSTER_NAME} \
--location=${LOCATION} \
--update-addons=LustreCsiDriver=ENABLED
Menggunakan port lama 6988
Untuk mengaktifkan driver CSI Managed Lustre di cluster GKE yang ada, Anda mungkin perlu menggunakan port lama 6988
dengan menambahkan tanda --enable-legacy-lustre-port
. Flag ini diperlukan dalam skenario berikut:
- Jika cluster GKE Anda berjalan pada versi sebelum
1.33.2-gke.4780000
. Jika Anda ingin menghubungkan cluster ini ke instance Managed Lustre yang ada dan dibuat dengan tanda
gke-support-enabled
.gcloud container clusters update ${CLUSTER_NAME} \ --location=${LOCATION} \ --enable-legacy-lustre-port
Upgrade node diperlukan pada cluster yang ada
Mengaktifkan driver CSI Managed Lustre pada cluster yang ada dapat memicu pembuatan ulang node untuk memperbarui modul kernel yang diperlukan untuk klien Managed Lustre. Untuk ketersediaan segera, sebaiknya upgrade node pool Anda secara manual.
Cluster GKE di saluran rilis diupgrade sesuai dengan peluncuran terjadwalnya, yang dapat memakan waktu beberapa minggu, bergantung pada periode pemeliharaan Anda. Jika menggunakan versi GKE statis, Anda harus mengupgrade node pool secara manual.
Setelah upgrade node pool, node CPU mungkin tampak menggunakan image GPU di output konsol atau CLI.Google Cloud Contoh:
config:
imageType: COS_CONTAINERD
nodeImageConfig:
image: gke-1330-gke1552000-cos-121-18867-90-4-c-nvda
Perilaku ini sudah diperkirakan. Image GPU digunakan kembali di node CPU untuk menginstal modul kernel Managed Lustre secara aman. Anda tidak akan ditagih untuk penggunaan GPU.
Menonaktifkan driver CSI Managed Lustre
Anda dapat menonaktifkan driver CSI Managed Lustre pada cluster GKE yang ada menggunakan Google Cloud CLI.
gcloud container clusters update ${CLUSTER_NAME} \
--location=${LOCATION} \
--update-addons=LustreCsiDriver=DISABLED
Setelah driver CSI dinonaktifkan, GKE akan otomatis membuat ulang node Anda dan meng-uninstal modul kernel Managed Lustre.
Membuat volume baru menggunakan driver CSI Managed Lustre
Bagian berikut menjelaskan proses umum untuk membuat volume Kubernetes yang didukung oleh instance Managed Lustre di GKE:
- Buat StorageClass.
- Menggunakan PersistentVolumeClaim untuk mengakses volume.
- Buat workload yang menggunakan volume.
Membuat StorageClass
Jika driver CSI Managed Lustre diaktifkan, GKE akan otomatis membuat StorageClass untuk penyediaan instance Managed Lustre. StorageClass bergantung pada tingkat performa Managed Lustre, dan merupakan salah satu dari berikut ini:
lustre-rwx-125mbps-per-tib
lustre-rwx-250mbps-per-tib
lustre-rwx-500mbps-per-tib
lustre-rwx-1000mbps-per-tib
GKE menyediakan StorageClass default untuk setiap tingkat performa Managed Lustre yang didukung. Hal ini menyederhanakan penyediaan dinamis instance Managed Lustre, karena Anda dapat menggunakan StorageClass bawaan tanpa harus menentukan StorageClass Anda sendiri.
Untuk cluster zonal, driver CSI menyediakan instance Managed Lustre di zona yang sama dengan cluster. Untuk cluster regional, instance ini disediakan di salah satu zona dalam region.
Contoh berikut menunjukkan cara membuat StorageClass kustom dengan persyaratan topologi tertentu:
Simpan manifes berikut dalam file bernama
lustre-class.yaml
:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: lustre-class provisioner: lustre.csi.storage.gke.io volumeBindingMode: Immediate reclaimPolicy: Delete parameters: perUnitStorageThroughput: "1000" network: LUSTRE_NETWORK allowedTopologies: - matchLabelExpressions: - key: topology.gke.io/zone values: - us-central1-a
Untuk mengetahui daftar lengkap kolom yang didukung di StorageClass, lihat dokumentasi referensi driver CSI Managed Lustre.
Buat StorageClass dengan menjalankan perintah ini:
kubectl apply -f lustre-class.yaml
Menggunakan PersistentVolumeClaim untuk mengakses Volume
Bagian ini menunjukkan cara membuat resource PersistentVolumeClaim yang mereferensikan StorageClass driver CSI Managed Lustre.
Simpan manifes berikut dalam file bernama
lustre-pvc.yaml
:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: lustre-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 9000Gi storageClassName: lustre-class
Untuk mengetahui daftar lengkap kolom yang didukung di PersistentVolumeClaim, lihat dokumentasi referensi driver CSI Managed Lustre.
Buat PersistentVolumeClaim dengan menjalankan perintah ini:
kubectl apply -f lustre-pvc.yaml
Membuat workload untuk menggunakan volume
Bagian ini menunjukkan contoh cara membuat Pod yang menggunakan resource PersistentVolumeClaim yang Anda buat sebelumnya.
Beberapa Pod dapat berbagi resource PersistentVolumeClaim yang sama.
Simpan manifes berikut dalam file bernama
my-pod.yaml
.apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: nginx image: nginx volumeMounts: - name: lustre-volume mountPath: /data volumes: - name: lustre-volume persistentVolumeClaim: claimName: lustre-pvc
Terapkan manifes ke cluster.
kubectl apply -f my-pod.yaml
Verifikasi bahwa Pod sedang berjalan. Pod berjalan setelah PersistentVolumeClaim disediakan. Penyelesaian operasi ini mungkin memerlukan waktu beberapa menit.
kubectl get pods
Outputnya mirip dengan hal berikut ini:
NAME READY STATUS RESTARTS AGE my-pod 1/1 Running 0 11s
Menggunakan fsGroup dengan volume Managed Lustre
Anda dapat mengubah kepemilikan grup direktori tingkat root dari sistem file yang di-mount agar sesuai dengan fsGroup yang diminta pengguna dan ditentukan dalam SecurityContext Pod. fsGroup tidak akan mengubah kepemilikan seluruh sistem file Managed Lustre yang di-mount secara rekursif; hanya direktori root dari titik mount yang terpengaruh.
Pemecahan masalah
Untuk panduan pemecahan masalah, lihat Halaman pemecahan masalah dalam dokumentasi Managed Lustre.
Pembersihan
Agar tidak menimbulkan biaya pada akun Google Cloud Anda, hapus resource penyimpanan yang Anda buat dalam panduan ini.
Hapus Pod dan PersistentVolumeClaim.
kubectl delete pod my-pod kubectl delete pvc lustre-pvc
Periksa status PersistentVolume.
kubectl get pv
Outputnya mirip dengan hal berikut ini:
No resources found
Mungkin perlu waktu beberapa menit hingga instance Managed Lustre yang mendasarinya dihapus sepenuhnya.