Mengakses instance Managed Lustre yang ada di GKE menggunakan driver CSI Managed Lustre

Panduan ini menjelaskan cara terhubung ke instance Managed Lustre yang ada menggunakan driver CSI Managed Lustre. Hal ini memungkinkan Anda mengakses instance Managed Lustre yang ada sebagai volume untuk workload stateful Anda, dengan cara yang terkontrol dan dapat diprediksi.

Dukungan multi-NIC untuk jaringan berperforma tinggi

Untuk cluster GKE yang menjalankan versi 1.35.2-gke.1842000 atau yang lebih baru, driver CSI Managed Lustre diaktifkan secara default untuk menggunakan semua Kartu Antarmuka Jaringan (NIC) yang tersedia untuk meningkatkan throughput. Dukungan ini menggabungkan bandwidth dengan menyebarkan traffic penyimpanan TCP di seluruh antarmuka jaringan Anda.

Untuk menggunakan dukungan multi-NIC, node Anda harus memenuhi persyaratan berikut:

  • NIC standar untuk TCP: node Anda harus menggunakan NIC standar, seperti Google Virtual NIC (gVNIC) atau VirtIO-Net, untuk menangani traffic penyimpanan TCP.
  • VPC yang sama: semua NIC standar harus berada di jaringan VPC yang sama.
  • Pertimbangan RDMA: node Anda juga dapat memiliki NIC RDMA yang terpasang; namun, driver CSI Managed Lustre hanya menggunakan NIC standar untuk traffic penyimpanan TCP.

Jika Anda ingin menonaktifkan dukungan multi-NIC, lihat Menonaktifkan multi-NIC untuk Lustre.

Port komunikasi Lustre

Driver CSI Managed Lustre GKE 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 port 988 untuk komunikasi Lustre secara default.

  • Port Lama: gunakan port 6988 dengan menambahkan tanda --enable-legacy-lustre-port ke perintah gcloud 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 dengan gke-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 perintah gcloud, terlepas dari versi cluster Anda. Tanpa tanda ini, cluster GKE Anda tidak akan dapat memasang instance Lustre yang ada. Untuk mengetahui informasi tentang flag gke-support-enabled, lihat deskripsi flag opsional di Membuat instance.

Anda dapat mengonfigurasi cluster baru dan yang sudah ada untuk menggunakan port default 988, atau port lama 6988.

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. gcloud CLI versi sebelumnya mungkin tidak mendukung menjalankan perintah dalam dokumen ini.

Menyiapkan variabel lingkungan

Siapkan variabel lingkungan berikut:

export CLUSTER_NAME=CLUSTER_NAME
export PROJECT_ID=PROJECT_ID
export NETWORK_NAME=LUSTRE_NETWORK
export LOCATION=ZONE

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster.
  • PROJECT_ID: Google Cloud Project ID Anda.
  • LUSTRE_NETWORK: jaringan Virtual Private Cloud bersama tempat cluster GKE dan instance Managed Lustre berada.
  • ZONE: zona geografis cluster GKE Anda; misalnya, us-central1-a.

Mengonfigurasi driver CSI Managed Lustre

Bagian ini membahas cara mengaktifkan dan menonaktifkan driver CSI Lustre Terkelola.

Mengaktifkan driver CSI Lustre Terkelola di cluster GKE baru

Bagian berikut menjelaskan cara mengaktifkan driver CSI Lustre Terkelola 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 sebelum 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 di 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 sudah ada dan 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 sudah 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 mengupdate 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 masa pemeliharaan Anda. Jika menggunakan versi GKE statis, Anda harus mengupgrade node pool secara manual.

Hingga upgrade node selesai sepenuhnya, Pod driver CSI mungkin mengalami crashloop pada node yang menunggu update. Jika Anda melihat error Operation not permitted di log Pod driver CSI, hal ini menunjukkan bahwa upgrade atau pembuatan ulang node diperlukan.

Setelah upgrade node pool, node CPU mungkin tampak menggunakan image GPU di output konsol Google Cloud atau CLI. 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.

(Opsional) Buat node pool multi-NIC

Untuk menggunakan jaringan berperforma tinggi, Anda harus membuat node pool dengan jenis instance yang mendukung beberapa antarmuka jaringan. Dukungan multi-NIC diaktifkan secara default di cluster GKE yang menjalankan versi 1.35.2-gke.1842000 atau yang lebih baru. Pastikan antarmuka jaringan sekunder Anda berada dalam jaringan VPC yang sama dengan antarmuka utama Anda.

Jalankan perintah berikut:

gcloud container node-pools create NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=LOCATION \
    --machine-type=MACHINE_TYPE \
    --enable-gvnic \
    --additional-node-network network=NETWORK_NAME,subnetwork=SECONDARY_SUBNET

Ganti kode berikut:

  • NODE_POOL_NAME: nama node pool Anda.
  • CLUSTER_NAME: nama cluster Anda.
  • LOCATION: region atau zona cluster Anda.
  • MACHINE_TYPE: jenis mesin untuk node pool, seperti a3-megagpu-8g yang sering digunakan dengan multi-NIC untuk performa tinggi. Multi-NIC didukung di semua jenis mesin.
  • NETWORK_NAME: nama jaringan VPC.
  • SECONDARY_SUBNET: nama subnet sekunder.

Menonaktifkan multi-NIC di Lustre

Meskipun dukungan multi-NIC direkomendasikan untuk workload berperforma tinggi, Anda mungkin ingin menonaktifkannya dalam skenario tertentu. Misalnya, Anda mungkin tidak ingin menyebarkan traffic Lustre di semua antarmuka hardware yang tersedia, atau Anda mungkin perlu mengisolasi masalah konektivitas ke satu jalur jaringan untuk pemecahan masalah.

Catatan: Jika Anda menonaktifkan dukungan multi-NIC pada node yang sedang berjalan, Anda mungkin perlu membuat ulang atau mengupgrade node pool secara manual agar perubahan ini dapat diterapkan.

Untuk cluster

Untuk menonaktifkan jaringan berperforma tinggi untuk seluruh cluster, gunakan flag --disable-multi-nic-lustre saat membuat atau memperbarui cluster. Contoh:

gcloud container clusters update CLUSTER_NAME \
    --location=LOCATION \
    --disable-multi-nic-lustre

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster Anda.
  • LOCATION: region atau zona cluster Anda.

Untuk node pool

Untuk menonaktifkan jaringan berperforma tinggi bagi node pool tertentu, perbarui node pool untuk menyetel label lustre.csi.storage.gke.io/multi-nic ke false:

gcloud container node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--zone=LOCATION \
--node-labels=lustre.csi.storage.gke.io/multi-nic=false

Ganti kode berikut:

  • NODE_POOL_NAME: nama node pool Anda.
  • CLUSTER_NAME: nama cluster Anda.
  • LOCATION: zona cluster Anda.

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.

Mengakses instance Managed Lustre yang ada menggunakan driver CSI Managed Lustre

Jika sudah menyediakan instance Managed Lustre dalam jaringan yang sama dengan cluster GKE, Anda dapat mengikuti petunjuk ini untuk menyediakan PersistentVolume secara statis yang merujuk ke instance Anda.

Bagian berikut menjelaskan proses umum untuk mengakses instance Managed Lustre yang ada dengan menggunakan driver CSI Managed Lustre:

  1. Buat PersistentVolume yang merujuk ke instance Managed Lustre.
  2. Menggunakan PersistentVolumeClaim untuk mengakses volume.
  3. Buat workload yang menggunakan volume.

Membuat PersistentVolume

  1. Untuk menemukan instance Managed Lustre Anda, jalankan perintah berikut.

    gcloud lustre instances list \
        --project=${PROJECT_ID} \
        --location=${LOCATION}
    

    Output-nya akan terlihat seperti berikut. Sebelum melanjutkan ke langkah berikutnya, pastikan untuk mencatat kolom Managed Lustre instance name, filesystem, dan mountPoint.

    capacityGib: '9000'
    createTime: '2025-04-28T22:42:11.140825450Z'
    filesystem: testlfs
    gkeSupportEnabled: true
    mountPoint: 10.90.1.4@tcp:/testlfs
    name: projects/my-project/locations/us-central1-a/instances/my-lustre
    network: projects/my-project/global/networks/default
    perUnitStorageThroughput: '1000'
    state: ACTIVE
    updateTime: '2025-04-28T22:51:41.559098631Z'
    
  2. Simpan manifes berikut dalam file bernama lustre-pv.yaml:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: lustre-pv
    spec:
      storageClassName: "STORAGE_CLASS_NAME"
      capacity:
        storage: 9000Gi
      accessModes:
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain
      volumeMode: Filesystem
      claimRef:
        namespace: default
        name: lustre-pvc
      csi:
        driver: lustre.csi.storage.gke.io
        volumeHandle: "PROJECT_ID/LOCATION/INSTANCE_NAME"
        volumeAttributes:
          ip: IP_ADDRESS
          filesystem: FILESYSTEM
    

    Ganti kode berikut:

    • storageClassName: nama StorageClass. Nilainya dapat berupa string kosong, tetapi harus memenuhi spesifikasi PersistentVolumeClaim Anda.
    • volumeHandle: ID untuk volume ini.
      • PROJECT_ID: Google Cloud Project ID
      • LOCATION: lokasi zonal instance Lustre Anda. Anda harus menentukan zona yang didukung untuk driver CSI Managed Lustre.
      • INSTANCE_NAME: nama instance Lustre Anda.
    • ip: alamat IP instance Lustre Anda. Anda mendapatkannya dari kolom mountPoint di output perintah sebelumnya.
    • filesystem: nama sistem file instance Managed Lustre Anda.

    Untuk mengetahui daftar lengkap kolom yang didukung dalam objek PersistentVolume, lihat dokumentasi referensi driver CSI Managed Lustre.

  3. Buat PersistentVolume dengan menjalankan perintah ini:

    kubectl apply -f lustre-pv.yaml
    

Menggunakan PersistentVolumeClaim untuk mengakses volume

Anda dapat membuat resource PersistentVolumeClaim yang mereferensikan StorageClass driver CSI Managed Lustre.

File manifes berikut menunjukkan contoh cara membuat PersistentVolumeClaim dalam ReadWriteMany mode akses , yang mereferensikan StorageClass yang Anda buat sebelumnya.

  1. Simpan manifes berikut dalam file bernama lustre-pvc.yaml:

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: lustre-pvc
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: "STORAGE_CLASS_NAME"
      volumeName: lustre-pv
      resources:
        requests:
          storage: STORAGE_SIZE
    

    Ganti STORAGE_SIZE dengan ukuran penyimpanan; misalnya, 9000Gi. Nilai ini harus cocok dengan spesifikasi di PersistentVolume Anda.

  2. Buat PersistentVolumeClaim dengan menjalankan perintah ini:

    kubectl create -f lustre-pvc.yaml
    

Membuat workload yang menggunakan volume

Bagian ini menunjukkan cara membuat Pod yang menggunakan resource PersistentVolumeClaim yang Anda buat sebelumnya.

Beberapa Pod dapat berbagi resource PersistentVolumeClaim yang sama.

  1. 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
    
  2. Jalankan perintah berikut untuk menerapkan manifes ke cluster:

    kubectl apply -f my-pod.yaml
    

    Pod menunggu hingga GKE menyediakan PersistentVolumeClaim sebelum mulai berjalan. Penyelesaian operasi ini mungkin memerlukan waktu beberapa menit.

  3. Verifikasi bahwa Pod sedang berjalan:

    kubectl get pods
    

    Mungkin perlu waktu beberapa menit agar Pod mencapai status Running.

    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 sistem file yang di-mount agar sesuai dengan fsGroup yang diminta pengguna dan ditentukan dalam SecurityContext Pod.

Pemecahan masalah

Untuk panduan pemecahan masalah, lihat Halaman pemecahan masalah dalam dokumentasi Managed Lustre.

Pembersihan

Agar akun Google Cloud Anda tidak dikenai biaya, hapus resource penyimpanan yang Anda buat dalam panduan ini.

  1. Hapus Pod dan PersistentVolumeClaim.

    kubectl delete pod my-pod
    kubectl delete pvc lustre-pvc
    
  2. Periksa status PersistentVolume. Setelah menghapus Pod dan PersistentVolumeClaim, PersistentVolume akan melaporkan status "Released":

    kubectl get pv
    

    Outputnya mirip dengan hal berikut ini:

    NAME        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS     CLAIM                 STORAGECLASS   REASON   AGE
    lustre-pv   9000Gi      RWX            Retain        Released   default/preprov-pvc                           2m28s
    
  3. Gunakan kembali PersistentVolume. Untuk menggunakan kembali PersistentVolume, hapus referensi klaim (claimRef):

    kubectl patch pv lustre-pv --type json -p '[{"op": "remove", "path": "/spec/claimRef"}]'
    

    PersistentVolume sekarang akan melaporkan status "Tersedia", yang menunjukkan kesiapannya untuk diikat ke PersistentVolumeClaim baru. Periksa status PersistentVolume:

    kubectl get pv
    

    Outputnya mirip dengan hal berikut ini:

    NAME        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
    lustre-pv   9000Gi      RWX           Retain         Available                                   19m
    
  4. Hapus PersistentVolume jika tidak diperlukan lagi. Jika PersistentVolume tidak lagi diperlukan, hapus:

    kubectl delete pv lustre-pv
    

    Menghapus PersistentVolume tidak akan menghapus instance Managed Lustre yang mendasarinya.

Langkah berikutnya