Panduan ini menunjukkan cara menggunakan volume persisten Kubernetes yang didukung oleh bucket Cloud Storage untuk mengelola resource penyimpanan bagi Pod Kubernetes di Google Kubernetes Engine (GKE). Pertimbangkan untuk menggunakan opsi penyimpanan ini jika Anda sudah memahami PersistentVolumes dan menginginkan konsistensi dengan deployment yang ada yang mengandalkan jenis resource ini.
Panduan ini ditujukan untuk admin Platform dan pengguna operator yang ingin menyederhanakan pengelolaan penyimpanan untuk aplikasi GKE mereka.
Sebelum membaca halaman ini, pastikan Anda memahami volume persisten Kubernetes, Pod Kubernetes, dan bucket Cloud Storage.
Jika Anda menginginkan antarmuka berbasis Pod yang disederhanakan dan tidak memerlukan pengalaman sebelumnya dengan volume persisten Kubernetes, lihat Memasang bucket Cloud Storage sebagai volume efemeral CSI.
Sebelum memulai
Pastikan Anda telah menyelesaikan prasyarat berikut:
- Memahami persyaratan dan batasan driver CSI Cloud Storage FUSE.
- Membuat bucket Cloud Storage
- Mengaktifkan driver CSI Cloud Storage FUSE
- Mengonfigurasi akses ke bucket Cloud Storage
Cara kerja volume persisten untuk bucket Cloud Storage
Dengan penyediaan statis, Anda dapat membuat satu atau beberapa objek PersistentVolume yang berisi detail sistem penyimpanan pokoknya. Pod di cluster Anda selanjutnya dapat memakai penyimpanan melalui PersistentVolumeClaims.
Penggunaan volume persisten yang didukung oleh bucket Cloud Storage melibatkan operasi berikut:
Definisi penyimpanan: Anda menentukan PersistentVolume di cluster GKE, termasuk driver CSI yang akan digunakan dan parameter yang diperlukan. Untuk driver CSI Cloud Storage FUSE, Anda menentukan nama bucket dan detail relevan lainnya.
Secara opsional, Anda dapat menyesuaikan performa driver CSI menggunakan fitur penyimpanan cache file. Penyimpanan cache file dapat meningkatkan performa aplikasi GKE dengan menyimpan cache file Cloud Storage yang sering diakses di disk lokal yang lebih cepat.
Selain itu, Anda dapat menggunakan fitur download paralel untuk mempercepat pembacaan file besar dari Cloud Storage untuk download multi-thread. Anda dapat menggunakan fitur ini untuk meningkatkan waktu pemuatan model, terutama untuk pembacaan berukuran lebih dari 1 GB.
.Pemanggilan driver: Saat PersistentVolumeClaim meminta penyimpanan yang cocok dengan spesifikasi PersistentVolume, GKE akan memanggil driver CSI Cloud Storage FUSE.
Pemasangan bucket: Driver CSI memasang bucket ke node tempat Pod yang meminta dijadwalkan. Hal ini membuat konten bucket dapat diakses oleh Pod sebagai direktori di sistem file lokal Pod. Untuk menyesuaikan cara bucket dipasang di sistem file, Anda dapat menggunakan opsi pemasangan. Anda juga dapat menggunakan atribut volume untuk mengonfigurasi perilaku spesifik driver CSI Cloud Storage FUSE.
Pemasangan ulang: Jika Pod dimulai ulang atau dijadwalkan ulang ke node lain, driver CSI akan memasang ulang bucket yang sama ke node baru, sehingga memastikan aksesibilitas data.
Membuat PersistentVolume
Buat manifes PersistentVolume dengan spesifikasi berikut:
Pod
apiVersion: v1 kind: PersistentVolume metadata: name: gcs-fuse-csi-pv spec: accessModes: - ReadWriteMany capacity: storage: 5Gi storageClassName: example-storage-class mountOptions: - implicit-dirs csi: driver: gcsfuse.csi.storage.gke.io volumeHandle: BUCKET_NAME claimRef: name: gcs-fuse-csi-static-pvc namespace: NAMESPACEGanti nilai berikut:
- NAMESPACE: namespace Kubernetes tempat Anda ingin men-deploy Pod.
- BUCKET_NAME: nama bucket Cloud Storage yang Anda tentukan saat mengonfigurasi akses ke bucket Cloud Storage. Anda dapat menentukan garis bawah (
_) untuk memasang semua bucket yang dapat diakses oleh Kubernetes ServiceAccount. Untuk mempelajari lebih lanjut, lihat Pemasangan dinamis dalam dokumentasi Cloud Storage FUSE.
Manifes contoh menunjukkan setelan yang diperlukan ini:
spec.csi.driver: gunakangcsfuse.csi.storage.gke.iosebagai nama driver CSI.
Secara opsional, Anda dapat menyesuaikan variabel ini:
spec.mountOptions: Teruskan opsi pemasangan ke Cloud Storage FUSE. Tentukan flag sebagai daftar. Untuk mengetahui detail selengkapnya, lihat opsi pemasangan volume persisten.spec.csi.volumeAttributes: Teruskan atribut volume tambahan ke Cloud Storage FUSE.
Pod (penyimpanan cache file)
apiVersion: v1 kind: PersistentVolume metadata: name: gcs-fuse-csi-pv spec: accessModes: - ReadWriteMany capacity: storage: 5Gi storageClassName: example-storage-class mountOptions: - implicit-dirs - file-cache:max-size-mb:-1 csi: driver: gcsfuse.csi.storage.gke.io volumeHandle: BUCKET_NAME claimRef: name: gcs-fuse-csi-static-pvc namespace: NAMESPACEGanti nilai berikut:
- NAMESPACE: namespace Kubernetes tempat Anda ingin men-deploy Pod.
- BUCKET_NAME: nama bucket Cloud Storage yang Anda tentukan saat mengonfigurasi akses ke bucket Cloud Storage.
Anda dapat menentukan garis bawah (
_) untuk memasang semua bucket yang dapat diakses oleh Kubernetes ServiceAccount. Untuk mempelajari lebih lanjut, lihat Pemasangan dinamis dalam dokumentasi Cloud Storage FUSE.
Pod (download paralel)
apiVersion: v1 kind: PersistentVolume metadata: name: gcs-fuse-csi-pv spec: accessModes: - ReadWriteMany capacity: storage: 5Gi storageClassName: example-storage-class mountOptions: - implicit-dirs - file-cache:enable-parallel-downloads:true - file-cache:max-size-mb:-1 csi: driver: gcsfuse.csi.storage.gke.io volumeHandle: BUCKET_NAME claimRef: name: gcs-fuse-csi-static-pvc namespace: NAMESPACEGanti nilai berikut:
- NAMESPACE: namespace Kubernetes tempat Anda ingin men-deploy Pod.
- BUCKET_NAME: nama bucket Cloud Storage yang Anda tentukan saat mengonfigurasi akses ke bucket Cloud Storage.
Anda dapat menentukan garis bawah (
_) untuk memasang semua bucket yang dapat diakses oleh Kubernetes ServiceAccount. Untuk mempelajari lebih lanjut, lihat Pemasangan dinamis dalam dokumentasi Cloud Storage FUSE.
Terapkan manifes ke cluster:
kubectl apply -f PV_FILE_PATHGanti PV_FILE_PATH dengan jalur ke file YAML Anda.
Membuat PersistentVolumeClaim
Buat manifes PersistentVolumeClaim dengan spesifikasi berikut:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: gcs-fuse-csi-static-pvc namespace: NAMESPACE spec: accessModes: - ReadWriteMany resources: requests: storage: 5Gi storageClassName: example-storage-classGanti NAMESPACE dengan namespace Kubernetes tempat Anda ingin men-deploy Pod.
Untuk mengikat PersistentVolume ke PersistentVolumeClaim, periksa setelan konfigurasi ini:
spec.storageClassName:storageClassNamedalam manifes PersistentVolume dan PersistentVolumeClaim harus cocok agar klaim dapat terikat ke volume. Driver CSI Cloud Storage FUSE tidak menggunakan objekStorageClass. Anda hanya perlu memastikan kolomstorageClassNameidentik di kedua resource. Anda dapat menggunakan string kosong atau tidak kosong untuk kolom ini; kolom ini tidak perlu merujuk ke objek StorageClass yang ada dan hanya berfungsi sebagai label pengikatan antara PV dan PVC.- Kolom
spec.accessModesdalam manifes PersistentVolume dan PersistentVolumeClaim harus cocok. - Kolom
spec.capacity.storagedalam manifes PersistentVolume harus cocok denganspec.resources.requests.storagedalam manifes PersistentVolumeClaim. Karena bucket Cloud Storage tidak memiliki batas ukuran, Anda dapat menetapkan angka berapa pun untuk kapasitas, tetapi tidak boleh kosong.
Terapkan manifes ke cluster:
kubectl apply -f PVC_FILE_PATHGanti PVC_FILE_PATH dengan jalur ke file YAML Anda.
Menggunakan volume di Pod
Buat manifes Pod dengan spesifikasi berikut:
apiVersion: v1 kind: Pod metadata: name: gcs-fuse-csi-example-static-pvc namespace: NAMESPACE annotations: gke-gcsfuse/volumes: "true" spec: containers: - image: busybox name: busybox command: ["sleep"] args: ["infinity"] volumeMounts: - name: gcs-fuse-csi-static mountPath: /data readOnly: true serviceAccountName: KSA_NAME volumes: - name: gcs-fuse-csi-static persistentVolumeClaim: claimName: gcs-fuse-csi-static-pvc readOnly: trueGanti nilai berikut:
- NAMESPACE: namespace Kubernetes tempat Anda ingin men-deploy Pod.
- KSA_NAME: nama Kubernetes ServiceAccount yang Anda buat saat mengonfigurasi akses ke bucket Cloud Storage.
Manifes contoh menunjukkan setelan yang diperlukan ini:
metadata.annotations: anotasigke-gcsfuse/volumes: "true"diperlukan. Lihat Mengonfigurasi container sidecar untuk anotasi opsional.
Secara opsional, Anda dapat menyesuaikan variabel ini:
spec.containers[n].volumeMounts[n].readOnly: Tentukan benar (true) jika hanya pemasangan volume tertentu yang bersifat hanya baca.spec.volumes[n].persistentVolumeClaim.readOnly: Tentukan benar (true) jika semua pemasangan volume bersifat hanya baca.
Terapkan manifes ke cluster:
kubectl apply -f POD_FILE_PATHGanti POD_FILE_PATH dengan jalur ke file YAML Anda.
(Opsional) Memasang bucket Cloud Storage yang sama dengan PersistentVolumes yang berbeda
Mulai dari GKE versi 1.33.0-gke.1932000, Anda dapat menggunakan beberapa PersistentVolumes yang didukung oleh bucket Cloud Storage yang sama. Di setiap objek PersistentVolume, Anda harus menggunakan volumeHandle unik dalam format BUCKET_NAME:UNIQUE_SUFFIX.
Contoh kasus penggunaan dapat berupa pemasangan PersistentVolumes yang berbeda dengan opsi pemasangan yang berbeda ke Pod yang sama, dengan setiap PersistentVolume merujuk ke bucket Cloud Storage yang sama.
Memecahkan masalah
Untuk mengetahui informasi selengkapnya tentang cara memecahkan masalah driver CSI Cloud Storage FUSE, lihat panduan pemecahan masalah dalam dokumentasi project GitHub.
Langkah berikutnya
- Pelajari cara mengoptimalkan performa untuk driver CSI Cloud Storage FUSE.
- Jelajahi contoh tambahan untuk menggunakan driver CSI di GitHub.
- Pelajari Cloud Storage FUSE lebih lanjut.