Panduan ini menjelaskan cara membuat volume Kubernetes baru yang didukung oleh driver CSI Parallelstore di GKE dengan penyediaan dinamis. Dengan begitu, Anda dapat membuat penyimpanan yang didukung oleh instance Parallelstore yang terkelola sepenuhnya sesuai permintaan, dan mengaksesnya sebagai volume untuk workload stateful Anda.
Sebelum memulai
Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:
- Aktifkan Parallelstore 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
.
- Lihat ringkasan driver CSI untuk mengetahui batasan dan persyaratan.
- Konfigurasi jaringan VPC.
- Jika Anda ingin menggunakan cluster GKE Standard, pastikan untuk mengaktifkan driver CSI.
Membuat volume baru menggunakan driver CSI Parallelstore
Bagian berikut menjelaskan proses umum untuk membuat volume Kubernetes yang didukung oleh driver CSI Parallelstore di GKE:
- (Opsional) Buat StorageClass.
- Menggunakan PersistentVolumeClaim untuk mengakses volume.
- (Opsional) Konfigurasi resource untuk container sidecar.
- Buat workload yang menggunakan volume.
(Opsional) Membuat class penyimpanan
Saat driver CSI Parallelstore diaktifkan, GKE akan otomatis
membuat StorageClass bernama parallelstore-rwx
untuk menyediakan instance
Parallelstore. StorageClass ini mengarahkan driver CSI untuk menyediakan instance Parallelstore di region yang sama dengan cluster GKE Anda untuk memastikan performa I/O yang optimal.
Secara opsional, Anda dapat membuat StorageClass kustom dengan topologi tertentu. Untuk melakukannya, ikuti langkah-langkah berikut:
Simpan manifes StorageClass berikut dalam file bernama
parallelstore-class.yaml
:Dudukan pod
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: parallelstore-class provisioner: parallelstore.csi.storage.gke.io volumeBindingMode: Immediate reclaimPolicy: Delete allowedTopologies: - matchLabelExpressions: - key: topology.gke.io/zone values: LOCATION
Ganti kode berikut:
- LOCATION: zona Compute Engine yang berisi cluster. Anda harus menentukan zona yang didukung untuk driver CSI Parallelstore.
Untuk mengetahui daftar lengkap kolom yang didukung di StorageClass, lihat dokumentasi referensi Parallelstore CSI.
Dudukan node
Driver CSI Parallelstore memungkinkan Anda memasang volume langsung di node. Pemasangan node didukung di cluster GKE versi 1.32.3 dan yang lebih baru.
Pemasangan tingkat node memungkinkan semua Pod di node berbagi titik pemasangan yang sama. Berbagi titik pemasangan yang sama akan meningkatkan skalabilitas karena jumlah pemasangan meningkat seiring dengan jumlah node, bukan jumlah Pod (seperti pada mode sidecar).
Hasilnya, Anda dapat menjalankan lebih banyak Pod sambil berbagi instance Parallelstore yang sama.
Catatan: Fitur ini diaktifkan dengan menentukan parameter mountLocality: node. Nilai default untuk lokalitas pemasangan Pod adalah mountLocality: pod. Flag permintaan dan batas CPU serta memori dfuse hanya berfungsi dengan setelan mountLocality: node.
Jika nilai permintaan atau batas ditetapkan dan yang lainnya tidak ditetapkan, keduanya akan ditetapkan ke nilai yang sama dan telah ditentukan.
Anda dapat menggunakan `'0'` sebagai nilai untuk membatalkan setelan batas resource. Misalnya, dfuseMemoryLimit: '0' menghapus batas memori untuk proses dfuse.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: parallelstore-class provisioner: parallelstore.csi.storage.gke.io volumeBindingMode: Immediate reclaimPolicy: Delete allowedTopologies: - matchLabelExpressions: - key: topology.gke.io/zone values: LOCATION parameters: mountLocality: node dfuseCPURequest: DFUSE_CPU_REQUEST dfuseMemoryRequest: DFUSE_MEMORY_REQUEST dfuseCPULimit: DFUSE_CPU_LIMIT dfuseMemoryLimit: DFUSE_MEMORY_LIMIT
Ganti kode berikut:
- LOCATION: zona Compute Engine yang berisi cluster. Anda harus menentukan zona yang didukung untuk driver CSI Parallelstore.
- DFUSE_CPU_REQUEST: permintaan CPU untuk proses dfuse. Defaultnya adalah
250m
. - DFUSE_MEMORY_REQUEST: permintaan memori untuk proses dfuse. Defaultnya adalah
512Mi
. - DFUSE_CPU_LIMIT: batas CPU untuk proses dfuse. Defaultnya tidak ditetapkan.
- DFUSE_MEMORY_LIMIT: batas memori untuk proses dfuse. Defaultnya adalah
10Gi
.
Untuk mengetahui daftar lengkap kolom yang didukung di StorageClass, lihat dokumentasi referensi Parallelstore CSI.
Buat StorageClass dengan menjalankan perintah ini:
kubectl create -f parallelstore-class.yaml
Menggunakan PersistentVolumeClaim untuk mengakses volume
Anda dapat membuat resource PersistentVolumeClaim yang mereferensikan StorageClass driver CSI Parallelstore.
File manifes berikut menunjukkan contoh cara membuat
PersistentVolumeClaim dalam ReadWriteMany
mode akses
yang mereferensikan StorageClass yang Anda buat sebelumnya.
Simpan manifes berikut dalam file bernama
parallelstore-pvc.yaml
:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: parallelstore-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: STORAGE_SIZE storageClassName: parallelstore-class
Ganti STORAGE_SIZE dengan ukuran penyimpanan; misalnya,
12000Gi
. Nilai harus dalam rentang dari 12.000 GiB hingga 100.000 GiB (dalam kelipatan 4.000 GiB).Buat PersistentVolumeClaim dengan menjalankan perintah ini:
kubectl create -f parallelstore-pvc.yaml
(Opsional) Mengonfigurasi resource untuk container sidecar
Saat Anda membuat Pod workload yang menggunakan volume yang didukung Parallelstore, driver CSI akan menentukan apakah volume Anda didasarkan pada instance Parallelstore.
Jika driver mendeteksi bahwa volume Anda berbasis Parallelstore, atau jika Anda menentukan anotasi gke-parallelstore/volumes: "true"
, driver CSI akan otomatis memasukkan container sidecar bernama gke-parallelstore-sidecar
ke dalam Pod Anda. Container sidecar ini memasang instance Parallelstore ke workload Anda.
Secara default, GKE mengonfigurasi container sidecar dengan permintaan resource berikut, dengan batas resource tidak ditetapkan:
- CPU 250 m
- Memori 512 MiB
- Penyimpanan efemeral 10 MiB
Untuk menimpa nilai ini, Anda dapat menentukan anotasi
gke-parallelstore/[cpu-request|memory-request|cpu-limit|memory-limit|ephemeral-storage-request]
seperti yang ditunjukkan dalam contoh berikut:
apiVersion: v1
kind: Pod
metadata:
annotations:
gke-parallelstore/volumes: "true"
gke-parallelstore/cpu-request: 500m
gke-parallelstore/memory-request: 1Gi
gke-parallelstore/ephemeral-storage-request: 500Mi
gke-parallelstore/cpu-limit: 1000m
gke-parallelstore/memory-limit: 2Gi
gke-parallelstore/ephemeral-storage-limit: 1Gi
Gunakan pertimbangan berikut saat menentukan jumlah resource yang akan dialokasikan:
- Jika salah satu nilai permintaan atau batas ditetapkan dan yang lain tidak ditetapkan, keduanya akan ditetapkan ke nilai yang sama dan ditentukan.
- Alokasikan lebih banyak CPU ke container sidecar jika workload Anda memerlukan throughput yang lebih tinggi. CPU yang tidak memadai akan menyebabkan throttling I/O.
- Anda dapat menggunakan
"0"
sebagai nilai untuk membatalkan setelan batas resource pada cluster Standar; misalnya,gke-parallelstore/memory-limit: "0"
menghapus batas memori untuk container sidecar. Hal ini berguna saat Anda tidak dapat memutuskan jumlah resource yang dibutuhkangke-parallelstore-sidecar
untuk beban kerja Anda, dan ingin membiarkan sidecar menggunakan semua resource yang tersedia di node.
Membuat workload yang menggunakan volume
Bagian ini menunjukkan contoh cara membuat Pod yang menggunakan resource PersistentVolumeClaim yang Anda buat sebelumnya.
Beberapa Pod dapat berbagi resource PersistentVolumeClaim yang sama.
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: parallelstore-volume mountPath: /data volumes: - name: parallelstore-volume persistentVolumeClaim: claimName: parallelstore-pvc
Jalankan perintah berikut untuk menerapkan manifes ke cluster.
kubectl apply -f my-pod.yaml
Pod akan menunggu hingga PersistentVolumeClaim disediakan sebelum mulai berjalan. Penyelesaian operasi ini mungkin memerlukan waktu beberapa menit.
Mengelola driver CSI Parallelstore
Bagian ini membahas cara mengaktifkan dan menonaktifkan driver CSI Parallelstore, jika diperlukan.
Mengaktifkan driver CSI Parallelstore di cluster baru
Untuk mengaktifkan driver CSI Parallelstore saat membuat cluster Standard baru, jalankan perintah berikut dengan Google Cloud CLI:
gcloud container clusters create CLUSTER_NAME \
--location=LOCATION \
--network=NETWORK_NAME \
--addons=ParallelstoreCsiDriver \
--cluster-version=VERSION
Ganti kode berikut:
- CLUSTER_NAME: nama cluster Anda.
- LOCATION: zona Compute Engine yang berisi cluster. Anda harus menentukan zona yang didukung untuk driver CSI Parallelstore.
- NETWORK_NAME: nama jaringan VPC yang Anda buat di Mengonfigurasi jaringan VPC.
- VERSION: nomor versi GKE.
Anda harus menentukan nomor versi yang didukung untuk menggunakan fitur ini, seperti
GKE versi 1.29 atau yang lebih baru. Atau, Anda dapat
menggunakan flag
--release-channel
dan menentukan saluran rilis.
Mengaktifkan driver CSI Parallelstore pada cluster yang ada
Untuk mengaktifkan driver di cluster GKE Standard yang sudah ada, jalankan perintah berikut dengan Google Cloud CLI:
gcloud container clusters update CLUSTER_NAME \
--location=LOCATION \
--update-addons=ParallelstoreCsiDriver=ENABLED
Ganti kode berikut:
- CLUSTER_NAME : nama cluster Anda.
- LOCATION: zona Compute Engine yang berisi cluster. Anda harus menentukan zona yang didukung untuk driver CSI Parallelstore.
Pastikan cluster GKE Anda berjalan di jaringan VPC yang sama dengan yang Anda siapkan di Mengonfigurasi jaringan VPC. Untuk memverifikasi
jaringan VPC untuk cluster GKE, Anda dapat memeriksanya di konsolGoogle Cloud , atau melalui perintah gcloud container clusters describe $(CLUSTER) --format="value(networkConfig.network)" --location=$(LOCATION)
.
Menonaktifkan driver CSI Parallelstore
Anda dapat menonaktifkan driver CSI Parallelstore pada cluster Autopilot atau Standard yang ada menggunakan Google Cloud CLI.
gcloud container clusters update CLUSTER_NAME \
--location=LOCATION \
--update-addons=ParallelstoreCsiDriver=DISABLED
Ganti kode berikut:
- CLUSTER_NAME : nama cluster Anda.
- LOCATION: zona Compute Engine yang berisi cluster. Anda harus menentukan zona yang didukung untuk driver CSI Parallelstore.
Menggunakan fsGroup dengan volume Parallelstore
Driver CSI Parallelstore mendukung perubahan kepemilikan grup direktori tingkat root sistem file yang di-mount agar cocok dengan fsGroup yang diminta pengguna yang ditentukan dalam SecurityContext Pod. Fitur ini hanya didukung di cluster GKE versi 1.29.5 atau yang lebih baru, atau versi 1.30.1 atau yang lebih baru.
Pemecahan masalah
Untuk panduan pemecahan masalah, lihat halaman Pemecahan masalah di dokumentasi Parallelstore.
Langkah berikutnya
- Pelajari dokumentasi referensi CSI Parallelstore.
- Pelajari cara menggunakan library pencegatan Parallelstore untuk meningkatkan performa beban kerja.
- Pelajari cara mentransfer data ke Parallelstore dari Cloud Storage.
- Pelajari cara menggunakan GKE Volume Populator untuk mengotomatiskan transfer data dari penyimpanan sumber bucket Cloud Storage ke PersistentVolumeClaim tujuan yang didukung oleh instance Parallelstore.
- Coba tutorial untuk melatih model TensorFlow dengan Keras di GKE.