Dokumen ini menjelaskan cara meningkatkan kapasitas penyimpanan volume Managed Lustre secara dinamis untuk workload stateful Anda di Google Kubernetes Engine (GKE) tanpa mengganggu aplikasi Anda.
Misalnya, jika tugas pelatihan AI/ML yang berjalan lama memiliki persyaratan penyimpanan yang dinamis dan tidak dapat diprediksi, aktifkan perluasan volume Managed Lustre untuk meningkatkan kapasitas penyimpanan Managed Lustre PersistentVolume (PV) yang ada.
Dokumen ini ditujukan untuk admin dan operator Platform, DevOps, administrator Penyimpanan, dan engineer machine learning (ML) yang mengelola penyimpanan untuk workload stateful di GKE.
Saat Anda memperluas volume, biaya Anda akan meningkat berdasarkan kapasitas baru yang lebih besar, sesuai dengan harga Managed Lustre standarGoogle Cloud .
Sebelum memulai
Persyaratan
Pastikan Anda memenuhi persyaratan berikut:
- Anda harus memiliki cluster GKE versi 1.35.0-gke.2331000 atau yang lebih baru.
- Anda harus mengaktifkan driver CSI Managed Lustre pada cluster yang ada. Driver dinonaktifkan secara default di cluster Standard dan Autopilot.
Batasan
- Anda hanya dapat meningkatkan ukuran volume yang ada, dan Anda tidak dapat mengurangi ukurannya.
- Anda tidak dapat menggunakan perluasan volume dengan mode akses
ReadOnlyMany. - Saat mengubah ukuran volume Lustre, ikuti batas kapasitas minimum dan maksimum serta ukuran langkah yang ditetapkan oleh tingkat performa volume Anda. Untuk mengetahui informasi selengkapnya, lihat Pertimbangan performa.
- Tentukan ukuran volume Lustre dalam GiB sebagai kelipatan 1000. Kubernetes menerjemahkan unit seperti Ti menjadi nilai biner (misalnya, 18 Ti ditafsirkan sebagai 18.432 GiB), yang menyebabkan Lustre API menolak permintaan.
Mengaktifkan perluasan volume untuk StorageClass
Verifikasi apakah StorageClass Anda mendukung ekspansi volume:
kubectl get sc STORAGECLASS_NAME -o jsonpath='{.allowVolumeExpansion}{"\n"}'Ganti
STORAGECLASS_NAMEdengan nama StorageClass Anda.Jika perintah tidak menghasilkan apa pun atau menampilkan
false, Anda harus memperbarui konfigurasi StorageClass secara eksplisit untuk mengizinkan ekspansi.Buka konfigurasi StorageClass untuk mengedit:
kubectl edit storageclass STORAGECLASS_NAMEDi editor, tambahkan kolom
allowVolumeExpansion: trueke konfigurasi StorageClass Anda:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: lustre-sc provisioner: lustre.csi.storage.gke.io ... allowVolumeExpansion: true
Memperluas PersistentVolumeClaim
Untuk memulai ekspansi volume, edit PersistentVolumeClaim (PVC) Anda untuk meminta peningkatan ukuran volume.
- Identifikasi ukuran baru yang valid untuk perluasan seperti yang dijelaskan dalam Menentukan ukuran perluasan yang valid.
Buka konfigurasi PVC untuk mengedit:
kubectl edit pvc PVC_NAMEGanti
PVC_NAMEdengan nama PVC Anda.Di editor, perbarui kolom
spec.resources.requests.storagedengan ukuran perluasan yang valid. Misalnya, untuk memperluas volume dari9000Gimenjadi18000Gi, ubah kolomstoragesebagai berikut:spec: accessModes: - ReadWriteOnce resources: requests: storage: 18000Gi # Changed from 9000Gi
Memverifikasi ekspansi volume
Pantau progres perluasan dengan meninjau peristiwa PVC:
kubectl describe pvc PVC_NAMEPeristiwa berikut dalam output PVC menunjukkan progres atau hasil saat ini dari permintaan perluasan volume:
ExternalExpanding: menunjukkan bahwa Kubernetes sedang menungguexternal-resizeruntuk memperluas PVC.Resizing: menunjukkan bahwa operasi pengubahan ukuran sedang berlangsung. Operasi ini dapat memerlukan waktu hingga 90 menit untuk peningkatan kapasitas yang lebih besar.VolumeResizeSuccessful: mengonfirmasi bahwa volume telah berhasil diperluas.VolumeResizeFailed: menunjukkan bahwa terjadi error. Pesan peristiwa berisi detail dari Google Cloud Managed Lustre API. Status ini mungkin bersifat sementara dan dapat teratasi dengan sendirinya.
Setelah ekspansi selesai, verifikasi konfigurasi PVC yang diperbarui:
kubectl get pvc PVC_NAME -o yamlPastikan kolom
status.capacitymencerminkan ukuran baru yang telah di-increment.
Jika Anda mengalami masalah selama proses perluasan, lihat Pemecahan masalah.
Menentukan ukuran perluasan yang valid
Untuk menentukan ukuran volume baru, pertama-tama identifikasi tingkat performa volume dan ukuran langkah yang sesuai.
Mengidentifikasi tingkat performa volume
Anda dapat menemukan tingkat performa volume menggunakan salah satu opsi berikut:
StorageClass
Jalankan perintah berikut dan cari nilai perUnitStorageThroughput (misalnya, 1000). Nilai ini menunjukkan tingkat performa dalam MBps per TiB.
kubectl get sc STORAGECLASS_NAME -o yaml
Ganti STORAGECLASS_NAME dengan nama StorageClass Anda.
Instance Lustre
Identifikasi tingkat performa volume Anda dengan memeriksa properti instance Managed Lustre yang mendasarinya secara langsung:
Temukan nama PV yang terikat ke PVC Anda:
kubectl get pvc PVC_NAMEGanti
PVC_NAMEdengan nama PVC Anda.Outputnya mirip dengan yang berikut ini. Catat nama PV di kolom
VOLUME, misalnya,pv-lustre.NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE pvc-lustre Bound pv-lustre 9000Gi RWX lustre-rwx <unset> 26mTemukan lokasi volume dan nama instance di kolom
volumeHandle:kubectl get pv PV_NAME -o yamlGanti
PV_NAMEdengan nama PV dari langkah sebelumnya.Nilai
volumeHandlediformat sebagaiPROJECT_ID/LOCATION/INSTANCE_NAME. CatatINSTANCE_NAMEdanLOCATIONuntuk langkah berikutnya.Periksa properti tingkat performa dengan mendeskripsikan instance Managed Lustre:
gcloud lustre instances describe INSTANCE_NAME --location=LOCATIONGanti
INSTANCE_NAMEdanLOCATIONdengan nilai dari langkah sebelumnya.Pada output, cari kolom
perUnitStorageThroughput. Nilai ini menunjukkan tingkat performa dalam MBps per TiB.
Batas kapasitas dan ukuran langkah
Setelah mengidentifikasi tingkat performa, lihat tabel berikut untuk menemukan batas kapasitas terkait dan ukuran langkah yang diperlukan.
Tingkat (perUnitStorageThroughput) |
Kapasitas minimum | Kapasitas maks. | Ukuran langkah |
|---|---|---|---|
| 1.000 MBps per TiB | 9.000 GiB | 954.000 GiB (~1 PiB) | 9.000 GiB |
| 500 MBps per TiB | 18.000 GiB | 1.908.000 GiB (~2 PiB) | 18.000 GiB |
| 250 MBps per TiB | 36.000 GiB | 3.816.000 GiB (~4 PiB) | 36.000 GiB |
| 125 MBps per TiB | 72.000 GiB | 7.632.000 GiB (~8 PiB) | 72.000 GiB |
Volume harus ditingkatkan sesuai dengan ukuran langkah yang ditetapkan untuk tingkatannya. Setiap peningkatan kapasitas harus merupakan kelipatan dari ukuran langkah tertentu tersebut. Misalnya, jika volume tingkat 1.000 MBps Anda memiliki kapasitas 9.000 GiB, Anda dapat meningkatkannya menjadi 18.000 GiB, 27.000 GiB, dan kelipatan lainnya.
Pemecahan masalah
Bagian ini memberikan solusi untuk masalah umum yang mungkin Anda alami saat memperluas volume Lustre.
Perluasan gagal dengan error "Argumen Tidak Valid"
Gejala
- PVC memasuki status
Resizing, tetapi kemudian gagal. - Saat menjalankan perintah
kubectl describe pvc PVC_NAME, Anda akan melihat error yang mirip denganVolumeResizeFailed: rpc error: code = InvalidArgument desc = ....
Penyebab
Error ini biasanya berarti bahwa ukuran penyimpanan yang diminta tidak valid untuk tingkat performa volume Lustre karena salah satu alasan berikut:
- Ukuran yang diminta bukan kelipatan ukuran langkah yang diperlukan untuk tingkat.
- Ukuran yang diminta berada di bawah minimum atau di atas kapasitas maksimum untuk tingkat.
Resolusi
- Tinjau Batas kapasitas dan ukuran langkah untuk menemukan ukuran langkah dan batas kapasitas yang valid untuk tingkat performa volume Anda.
- Edit PVC lagi untuk meminta ukuran penyimpanan yang valid yang memenuhi ukuran langkah dan batas kapasitas.
Perluasan gagal dengan "Error Internal"
Gejala
- Pengubahan ukuran PVC gagal.
- Saat menjalankan perintah
kubectl describe pvc PVC_NAME, Anda mungkin melihat peristiwaVolumeResizeFaileddengan pesan error yang berisicode = Internal.
Penyebab
Error ini menunjukkan masalah pada layanan Managed Lustre yang mendasarinya.
Resolusi
- Coba lagi perluasan dengan menerapkan manifes PVC lagi dengan ukuran baru yang diminta. Tindakan ini dapat mengatasi masalah backend sementara.
- Jika percobaan ulang gagal, hubungi Cloud Customer Care.
Perluasan macet dalam status "Mengubah ukuran"
Gejala
- PVC tetap dalam status
Resizinguntuk jangka waktu yang lama (lebih dari 30 menit untuk ekspansi yang lebih kecil, atau lebih dari 90 menit untuk ekspansi yang lebih besar). - Anda mungkin melihat peristiwa
VolumeResizeFaileddengan pesan errorDEADLINE_EXCEEDED.
Penyebab
Masalah ini dapat terjadi dengan peningkatan kapasitas besar, yang dapat memerlukan waktu hingga 90 menit untuk diselesaikan. Komponen csi-external-resizer mungkin mengalami waktu tunggu habis saat menunggu respons dari Google Cloud Managed Lustre API, meskipun operasi perluasan yang mendasarinya masih berlangsung.
Resolusi
csi-external-resizerakan otomatis mencoba ulang operasi setelah periode penundaan. Lanjutkan memantau peristiwa PVC untuk peristiwaVolumeResizeSuccessful.- Jika PVC tetap dalam status
Resizingselama lebih dari 90 menit, hubungi Cloud Customer Care.
Ekspansi tidak dimulai, atau macet dalam status ExternalExpanding
Gejala
- Anda memperbarui kolom
spec.resources.requests.storagedi PVC, tetapi status PVC tidak berubah menjadiResizing. - Saat Anda menjalankan perintah
kubectl describe pvc PVC_NAME, log peristiwa hanya menampilkan statusExternalExpandingdan tidak berlanjut ke statusResizing:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ExternalExpanding 21m (x2 over 58m) volume_expand waiting for an external controller to expand this PVC
Penyebab
Perilaku ini biasanya menunjukkan salah satu masalah berikut:
- StorageClass yang terkait dengan PVC tidak mengizinkan ekspansi volume.
- Ada masalah dengan container
csi-external-resizersidecar, yang merupakan komponen yang bertanggung jawab untuk memulai perluasan.
Resolusi
Periksa konfigurasi StorageClass dan pastikan kolom
allowVolumeExpansion: truetelah ditetapkan:kubectl get sc STORAGECLASS_NAME -o jsonpath='{.allowVolumeExpansion}{"\n"}'Jika
allowVolumeExpansiontidak ada atau disetel kefalse, perbarui StorageClass untuk mengizinkan perluasan volume.Jika StorageClass dikonfigurasi dengan benar, kemungkinan masalahnya ada pada komponen bidang kontrol GKE yang mengelola operasi pengubahan ukuran. Hubungi Cloud Customer Care untuk mendapatkan bantuan.
Perluasan gagal karena masalah kuota atau kapasitas
Gejala
- Pengubahan ukuran PVC gagal, dan peristiwa
VolumeResizeFailedmuncul di PVC. - Saat Anda menjalankan perintah
kubectl describe pvc PVC_NAME, pesan peristiwa dari backend Managed Lustre menunjukkan masalah kuota atau kapasitas.
Penyebab
Perluasan valid yang diminta tidak dapat dipenuhi karena melebihi kapasitas atau kuota keseluruhan yang tersedia untuk layanan Managed Lustre di project atau region Anda.
Resolusi
- Edit PVC Anda lagi dan minta penambahan penyimpanan yang lebih kecil.
- Hubungi administrator Google Cloud organisasi Anda untuk meminta peningkatan kuota atau kapasitas layanan Lustre secara keseluruhan untuk project Anda.
Pembersihan
Agar akun Google Cloud Anda tidak dikenai biaya untuk resource yang digunakan dalam dokumen ini, hapus PVC. Operasi ini juga menghapus PV terkait dan instance Managed Lustre yang mendasarinya jika reclaimPolicy disetel ke Delete.
kubectl delete pvc PVC_NAME
Ganti PVC_NAME dengan nama PVC Anda.
Langkah berikutnya
- Pelajari lebih lanjut Storage untuk cluster GKE.
- Baca dokumentasi tentang volume persisten dan penyediaan GKE.