Panduan ini menunjukkan cara menggunakan volume persisten Kubernetes yang didukung oleh bucket Cloud Storage untuk mengelola resource penyimpanan untuk Pod Kubernetes di Google Kubernetes Engine (GKE). Pertimbangkan untuk menggunakan opsi penyimpanan ini jika Anda sudah memahami PersistentVolume dan menginginkan konsistensi dengan deployment yang ada yang mengandalkan jenis resource ini.
Panduan ini ditujukan untuk pengguna operator dan admin Platform yang ingin menyederhanakan pengelolaan penyimpanan untuk aplikasi GKE mereka.
Sebelum membaca halaman ini, pastikan Anda sudah 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:
- Pahami 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 menggunakan penyimpanan melalui PersistentVolumeClaims.
Menggunakan 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 cache file. Cache file dapat meningkatkan performa aplikasi GKE dengan menyimpan file Cloud Storage yang sering diakses ke dalam cache 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 dengan ukuran 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 dalam sistem file lokal Pod. Untuk menyesuaikan cara pemasangan bucket di sistem file, Anda dapat menggunakan opsi pemasangan. Anda juga dapat menggunakan atribut volume untuk mengonfigurasi perilaku tertentu dari driver CSI Cloud Storage FUSE.
Penautan 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: NAMESPACE
Ganti 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.
Contoh manifes menunjukkan setelan yang diperlukan berikut:
spec.csi.driver
: gunakangcsfuse.csi.storage.gke.io
sebagai nama driver CSI.
Secara opsional, Anda dapat menyesuaikan variabel berikut:
spec.mountOptions
: Teruskan opsi pemasangan ke Cloud Storage FUSE. Tentukan flag dalam satu string yang dipisahkan koma, tanpa spasi.spec.csi.volumeAttributes
: Teruskan atribut volume tambahan ke Cloud Storage FUSE.
Pod (penyimpanan file dalam cache)
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: NAMESPACE
Ganti 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: NAMESPACE
Ganti 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_PATH
Ganti 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-class
Ganti NAMESPACE dengan namespace Kubernetes tempat Anda ingin men-deploy Pod.
Untuk mengikat PersistentVolume ke PersistentVolumeClaim, periksa setelan konfigurasi ini:
- Kolom
spec.storageClassName
dalam manifes PersistentVolume dan PersistentVolumeClaim harus cocok. storageClassName tidak perlu merujuk ke objek StorageClass yang ada. Untuk mengikat klaim ke volume, Anda dapat menggunakan nama apa pun yang diinginkan, tetapi nama tersebut tidak boleh kosong. - Kolom
spec.accessModes
dalam manifes PersistentVolume dan PersistentVolumeClaim harus cocok. - Kolom
spec.capacity.storage
dalam manifes PersistentVolume harus cocok denganspec.resources.requests.storage
dalam manifes PersistentVolumeClaim. Karena bucket Cloud Storage tidak memiliki batas ukuran, Anda dapat menetapkan angka berapa pun untuk kapasitas, tetapi tidak boleh kosong.
- Kolom
Terapkan manifes ke cluster:
kubectl apply -f PVC_FILE_PATH
Ganti 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" gke-gcsfuse/ephemeral-storage-limit: "50Gi" 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: true
Ganti nilai berikut:
- NAMESPACE: namespace Kubernetes tempat Anda ingin men-deploy Pod.
- KSA_NAME: nama ServiceAccount Kubernetes yang Anda buat saat mengonfigurasi akses ke bucket Cloud Storage.
Contoh manifes menunjukkan setelan yang diperlukan berikut:
metadata.annotations
: anotasigke-gcsfuse/volumes: "true"
harus ada. Lihat Mengonfigurasi penampung sidecar untuk anotasi opsional.
Secara opsional, Anda dapat menyesuaikan variabel berikut:
spec.containers[n].volumeMonts[n].readOnly
: Tentukan benar jika hanya volume tertentu yang bersifat hanya baca.spec.volumes[n].persistentVolumeClaim.readOnly
: Tentukan true jika semua pemasangan volume bersifat hanya baca.
Terapkan manifes ke cluster:
kubectl apply -f POD_FILE_PATH
Ganti POD_FILE_PATH dengan jalur ke file YAML Anda.
Memecahkan masalah
Jika perlu memecahkan masalah Cloud Storage FUSE, Anda dapat menetapkan flag log-severity
ke TRACE
. Anda menetapkan tanda di bagian args
dari
spesifikasi penampung driver di YAML deployment. Hal ini menyebabkan
atribut volume gcsfuseLoggingSeverity
otomatis disetel ke trace.
Untuk tips pemecahan masalah tambahan, lihat Panduan Pemecahan Masalah dalam dokumentasi project GitHub.
Langkah selanjutnya
- Pelajari cara mengoptimalkan performa untuk driver CSI Cloud Storage FUSE.
- Pelajari contoh tambahan untuk menggunakan driver CSI di GitHub.
- Pelajari Cloud Storage FUSE lebih lanjut.