Panduan ini menunjukkan cara mengonfigurasi resource untuk container pendamping driver CSI Cloud Storage FUSE, termasuk menyiapkan image pribadi, buffer tulis kustom, dan volume cache baca kustom. Biasanya, Anda tidak perlu mengubah setelan ini.
Driver CSI Cloud Storage FUSE menggunakan container sidecar yang dapat disesuaikan untuk memasang dan mengakses bucket Cloud Storage secara efisien. Dengan mengonfigurasi sidecar, Anda dapat menyesuaikan performa aplikasi dan penggunaan resource, yang dapat menghasilkan akses data yang lebih cepat, waktu pemrosesan yang lebih singkat, dan berpotensi menurunkan konsumsi resource keseluruhan untuk aplikasi Anda.
Panduan ini ditujukan bagi Developer, Admin, dan arsitek yang ingin mengoptimalkan performa, keamanan, dan efisiensi aplikasi mereka yang berinteraksi dengan GKE.
Sebelum membaca halaman ini, pastikan Anda memahami dasar-dasar Cloud Storage, Kubernetes, dan konsep containerization.
Cara kerja container pendamping
Driver CSI Cloud Storage FUSE menggunakan container pendamping untuk memasang bucket Cloud Storage agar dapat diakses sebagai sistem file lokal oleh aplikasi Kubernetes. Container sidecar ini, yang bernama gke-gcsfuse-sidecar
, berjalan bersama container workload dalam Pod yang sama. Saat mendeteksi anotasi gke-gcsfuse/volumes: "true"
dalam spesifikasi Pod, driver akan otomatis memasukkan container sidecar. Pendekatan container sidecar ini
membantu memastikan keamanan dan mengelola resource secara efektif.
Container sidecar menangani kompleksitas pemasangan bucket Cloud Storage dan menyediakan akses sistem file ke aplikasi tanpa mengharuskan Anda mengelola runtime Cloud Storage FUSE secara langsung. Anda dapat mengonfigurasi
batas resource untuk container sidecar menggunakan anotasi seperti
gke-gcsfuse/cpu-limit
dan gke-gcsfuse/memory-limit
. Model container sidecar juga memastikan bahwa instance Cloud Storage FUSE terikat dengan siklus proses workload, sehingga mencegahnya menggunakan resource secara tidak perlu. Artinya, container sidecar akan otomatis dihentikan saat container workload keluar, terutama dalam workload Job atau Pod dengan RestartPolicy
Never
.
Kompatibilitas Istio
Container sidecar driver CSI Cloud Storage FUSE dan Istio dapat berdampingan dan berjalan secara bersamaan di Pod Anda. Proxy sidecar Istio mengelola traffic jaringan, sedangkan sidecar CSI mengoptimalkan akses penyimpanan, sehingga aplikasi Anda dapat berinteraksi secara efisien dengan Google Cloud Storage dengan performa dan kemampuan observasi yang lebih baik.
Mengonfigurasi buffer tulis kustom
Cloud Storage FUSE melakukan penahapan penulisan di direktori lokal, lalu mengupload ke Cloud Storage pada operasi close
atau fsync
.
Bagian ini menjelaskan cara mengonfigurasi volume buffer kustom untuk
penulisan buffering Cloud Storage FUSE. Skenario ini mungkin berlaku jika Anda perlu mengganti volume emptyDir
default untuk Cloud Storage FUSE guna melakukan penahapan file dalam operasi tulis. Hal ini berguna jika Anda perlu menulis file yang lebih besar dari
10 GiB di cluster Autopilot.
Anda dapat menentukan jenis penyimpanan apa pun yang didukung oleh driver CSI Cloud Storage FUSE untuk penyiapan cache file, seperti SSD Lokal, penyimpanan berbasis Persistent Disk, dan disk RAM (memori). GKE akan menggunakan volume yang ditentukan untuk penyimpanan sementara penulisan file. Untuk mempelajari opsi ini lebih lanjut, lihat Memilih penyimpanan untuk mencadangkan cache file Anda.
Untuk menggunakan volume buffer kustom, Anda harus menentukan fsGroup
yang bukan nol.
Contoh berikut menunjukkan cara menggunakan PersistentVolumeClaim yang telah ditentukan sebelumnya sebagai volume buffer:
apiVersion: v1
kind: Pod
metadata:
annotations:
gke-gcsfuse/volumes: "true"
spec:
securityContext:
fsGroup: FS_GROUP
containers:
...
volumes:
- name: gke-gcsfuse-buffer
persistentVolumeClaim:
claimName: BUFFER_VOLUME_PVC
Ganti kode berikut:
- FS_GROUP: ID fsGroup.
- BUFFER_VOLUME_PVC: nama PVC yang telah ditentukan sebelumnya.
Mengonfigurasi volume cache baca kustom
Bagian ini menjelaskan cara mengonfigurasi volume cache kustom untuk caching baca Cloud Storage FUSE.
Skenario ini mungkin berlaku jika Anda perlu mengganti
volume emptyDir
default untuk Cloud Storage FUSE guna meng-cache file dalam operasi
baca. Anda dapat menentukan jenis penyimpanan apa pun yang didukung oleh GKE, seperti PersistentVolumeClaim, dan GKE akan menggunakan volume yang ditentukan untuk penyiapan cache file. Hal ini berguna jika Anda perlu menyimpan dalam cache file yang lebih besar dari 10 GiB di cluster Autopilot. Untuk menggunakan volume cache kustom, Anda harus menentukan fsGroup
yang tidak nol.
Contoh berikut menunjukkan cara menggunakan PersistentVolumeClaim yang telah ditentukan sebelumnya sebagai volume cache:
apiVersion: v1
kind: Pod
metadata:
annotations:
gke-gcsfuse/volumes: "true"
spec:
securityContext:
fsGroup: FS_GROUP
containers:
...
volumes:
- name: gke-gcsfuse-cache
persistentVolumeClaim:
claimName: CACHE_VOLUME_PVC
Ganti kode berikut:
FS_GROUP
: IDfsGroup
.CACHE_VOLUME_PVC
: nama PersistentVolumeClaim yang telah ditentukan sebelumnya.
Mengonfigurasi image pribadi untuk container sidecar
Bagian ini menjelaskan cara menggunakan image container sidecar jika Anda menghostingnya di registry container pribadi. Skenario ini mungkin berlaku jika Anda perlu menggunakan node pribadi untuk tujuan keamanan.
Untuk mengonfigurasi dan menggunakan image container sidecar pribadi, ikuti langkah-langkah berikut:
- Lihat tabel kompatibilitas GKE ini untuk menemukan image container file bantuan publik yang kompatibel.
- Tarik ke lingkungan lokal Anda dan kirim ke container registry pribadi Anda.
Dalam manifes, tentukan container bernama
gke-gcsfuse-sidecar
dengan hanya kolom image. GKE akan menggunakan image container file bantuan yang ditentukan untuk menyiapkan injeksi container file bantuan.Berikut ini contohnya:
apiVersion: v1 kind: Pod metadata: annotations: gke-gcsfuse/volumes: "true" spec: containers: - name: gke-gcsfuse-sidecar image: PRIVATE_REGISTRY/gcs-fuse-csi-driver-sidecar-mounter:PRIVATE_IMAGE_TAG - name: main # your main workload container.
Ganti kode berikut:
PRIVATE_REGISTRY
: container registry pribadi Anda.PRIVATE_IMAGE_TAG
: tag image container sidecar pribadi Anda.
Mengonfigurasi resource container sidecar
Secara default, container gke-gcsfuse-sidecar
dikonfigurasi dengan permintaan dan batas resource berikut untuk cluster Standard dan Autopilot:
Permintaan:
- CPU 250m
- Memori 256 MiB
- Penyimpanan efemeral 5 GiB
Batasan (GKE versi 1.29.1-gke.1670000
dan yang lebih baru):
- CPU tanpa batas
- memori tak terbatas
- penyimpanan efemeral tanpa batas
Batas (sebelum versi GKE 1.29.1-gke.1670000
):
- CPU 250m
- Memori 256 MiB
- Penyimpanan efemeral 5 GiB
Secara default, container gke-gcsfuse-metadata-prefetch
dikonfigurasi dengan permintaan dan batas resource berikut untuk cluster Standard dan Autopilot:
Permintaan:
- CPU 10m
- Memori 10 MiB
- Penyimpanan efemeral 10 MiB
Batas:
- CPU 50m
- Memori 250 MiB
- penyimpanan efemeral tanpa batas
Di cluster Standard dan Autopilot, Anda dapat mengganti nilai default. Cara GKE menangani resource penampung bergantung pada mode operasi cluster Anda:
- Cluster standar: Jika salah satu permintaan atau batas ditetapkan dan yang lain tidak ditetapkan, batas dan permintaan resource Pod akan ditetapkan sama. Jika permintaan dan batas ditetapkan, Pod akan menggunakan permintaan dan batas resource persis yang Anda tentukan. Jika Anda tidak menetapkan nilai apa pun, resource default (yang dijelaskan di atas) akan diterapkan secara langsung.
- Cluster Autopilot: Jika salah satu permintaan atau batas ditetapkan dan yang lain tidak ditetapkan, batas dan permintaan resource Pod akan ditetapkan sama. Lihat Menetapkan batas resource di Autopilot untuk memahami cara penggantian resource, dan nilai resource default yang ditetapkan akan memengaruhi perilaku pod.
Untuk menimpa nilai default untuk penampung gke-gcsfuse-sidecar
, Anda dapat menentukan anotasi
gke-gcsfuse/[cpu-limit|memory-limit|ephemeral-storage-limit|cpu-request|memory-request|ephemeral-storage-request]
seperti yang ditunjukkan dalam contoh berikut:
Untuk menimpa nilai default untuk penampung gke-gcsfuse-metadata-prefetch
(mulai dari GKE versi 1.32.3-gke.1717000
dan yang lebih baru), Anda dapat menentukan anotasi
gke-gcsfuse/[metadata-prefetch-cpu-limit|metadata-prefetch-memory-limit|metadata-prefetch-ephemeral-storage-limit|metadata-prefetch-cpu-request|metadata-prefetch-memory-request|metadata-prefetch-ephemeral-storage-request]
seperti yang ditunjukkan dalam contoh berikut:
apiVersion: v1
kind: Pod
metadata:
annotations:
gke-gcsfuse/volumes: "true"
# gke-gcsfuse-sidecar overrides
gke-gcsfuse/cpu-limit: "10"
gke-gcsfuse/memory-limit: 10Gi
gke-gcsfuse/ephemeral-storage-limit: 1Ti
gke-gcsfuse/cpu-request: 500m
gke-gcsfuse/memory-request: 1Gi
gke-gcsfuse/ephemeral-storage-request: 50Gi
# gke-gcsfuse-metadata-prefetch overrides
gke-gcsfuse/metadata-prefetch-cpu-limit: "10"
gke-gcsfuse/metadata-prefetch-memory-limit: 10Gi
gke-gcsfuse/metadata-prefetch-ephemeral-storage-limit: 1Ti
gke-gcsfuse/metadata-prefetch-cpu-request: 500m
gke-gcsfuse/metadata-prefetch-memory-request: 1Gi
gke-gcsfuse/metadata-prefetch-ephemeral-storage-request: 50Gi
Anda dapat menggunakan nilai "0"
untuk membatalkan setelan batas atau permintaan resource apa pun, tetapi perhatikan bahwa container gke-gcsfuse-sidecar
sudah tidak memiliki semua batas (cpu-limit
, memory-limit
, dan ephemeral-storage-limit
), dan container gke-gcsfuse-metadata-prefetch
sudah tidak memiliki ephemeral-storage-limit
, jadi menetapkan batas ini ke "0"
pada cluster dengan GKE versi 1.32.3-gke.1717000
atau yang lebih baru, tidak akan berpengaruh.
Misalnya, menyetel gke-gcsfuse/metadata-prefetch-memory-limit: "0"
, menunjukkan
bahwa Anda ingin batas memori container gke-gcsfuse-metadata-prefetch
tidak disetel.
Hal ini berguna jika Anda tidak dapat memutuskan jumlah resource yang dibutuhkan fitur pengambilan data metadata untuk beban kerja Anda, dan ingin membiarkan pengambilan data metadata menggunakan semua resource yang tersedia di node.
Mengonfigurasi verbositas logging
Secara default, penampung gke-gcsfuse-sidecar
menghasilkan log di level info
dan error
.
Namun, untuk men-debug atau melakukan analisis yang lebih mendetail, Anda mungkin perlu menyesuaikan kejelasan logging. Bagian ini menguraikan cara menaikkan atau menurunkan tingkat logging.
Anda dapat menggunakan opsi pemasangan untuk mengonfigurasi kejelasan log atau menggunakan kemampuan driver CSI untuk menerjemahkan nilai atribut volume ke dalam setelan konfigurasi gcsfuse yang diperlukan.
Dalam manifes Pod target, sertakan konfigurasi berikut:
volumeAttributes:
bucketName: BUCKET_NAME
mountOptions: "implicit-dirs"
gcsfuseLoggingSeverity: LOGGING_SEVERITY
Untuk menggunakan opsi pemasangan, sertakan konfigurasi berikut dalam manifes Pod target:
mountOptions: "logging:severity:LOGGING_SEVERITY"
Ganti kode berikut:
BUCKET_NAME
: nama bucket Cloud Storage Anda.LOGGING_SEVERITY
: salah satu nilai berikut, berdasarkan persyaratan Anda:trace
debug
info
warning
error
Setelah pod di-deploy, driver CSI akan memulai gcsfuse dengan tingkat logging yang baru dikonfigurasi.
Anda dapat menggunakan filter berikut untuk memverifikasi apakah tingkat keparahan logging diterapkan:
resource.labels.container_name="gke-gcsfuse-sidecar"
resource.type="k8s_container"
resource.labels.pod_name="POD_NAME"
"severity:"
Langkah berikutnya
- 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.