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. Cara ini memungkinkan Anda mengakses instance Managed Lustre yang ada sebagai volume untuk workload stateful Anda, dengan cara yang terkontrol dan dapat diprediksi.

Sebelum memulai

Sebelum memulai, pastikan Anda telah menjalankan 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 gcloud components update.
  • 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 LOCATION=ZONE

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster.
  • PROJECT_ID: Trusted Cloud by S3NS 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 Managed Lustre, jika diperlukan.

Mengaktifkan driver CSI Managed Lustre di cluster GKE baru

Untuk mengaktifkan driver CSI Managed Lustre saat membuat cluster GKE baru, ikuti langkah-langkah berikut:

Autopilot

gcloud container clusters create-auto "${CLUSTER_NAME}" \
    --location=${LOCATION} \
    --network="${NETWORK_NAME}" \
    --cluster-version=1.33.2-gke.1111000 \
    --enable-lustre-csi-driver \
    --enable-legacy-lustre-port

Standar

gcloud container clusters create "${CLUSTER_NAME}" \
    --location=${LOCATION} \
    --network="${NETWORK_NAME}" \
    --cluster-version=1.33.2-gke.1111000 \
    --addons=LustreCsiDriver \
    --enable-legacy-lustre-port

Mengaktifkan driver CSI Managed Lustre pada cluster GKE yang ada

Jika Anda ingin mengaktifkan driver CSI Lustre Terkelola di cluster GKE yang ada, gunakan perintah berikut:

gcloud container clusters update ${CLUSTER_NAME} \
    --location=${LOCATION} \
    --enable-legacy-lustre-port

Setelah driver CSI Lustre Terkelola diaktifkan di cluster Anda, Anda mungkin melihat bahwa node Anda dibuat ulang dan node CPU tampaknya menggunakan image GPU di outputTrusted Cloud konsol atau CLI. 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 dikenai biaya berlebih 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, node Anda akan dibuat ulang secara otomatis, dan modul kernel Managed Lustre akan di-uninstal dari node GKE Anda.

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 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 Anda mencatat kolom Managed Lustre instance name, filesystem, dan mountPoint.

    capacityGib: '18000'
    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: 18000Gi
      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: Trusted Cloud by S3NS 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, 18000Gi. 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 tidak menimbulkan biaya pada akun Trusted Cloud by S3NS Anda, 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   18000Gi      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   18000Gi      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