Driver CSI Filestore adalah cara utama bagi Anda untuk menggunakan instance Filestore dengan Google Kubernetes Engine (GKE). Driver CSI Filestore memberikan pengalaman yang terkelola sepenuhnya dan didukung oleh driver CSI Filestore Google Cloud open source.
Versi driver CSI Filestore terikat dengan nomor versi minor Kubernetes. Versi driver CSI Filestore biasanya adalah driver terbaru yang tersedia saat versi minor Kubernetes dirilis. Driver akan otomatis diupdate saat cluster diupgrade ke patch GKE terbaru.
Manfaat
Driver CSI Filestore memberikan manfaat berikut:
Anda memiliki akses ke penyimpanan NFS yang terkelola sepenuhnya melalui Kubernetes API (
kubectl
).Anda dapat menggunakan driver CSI GKE Filestore untuk menyediakan PersistentVolume secara dinamis.
Anda dapat menggunakan snapshot volume dengan driver CSI GKE Filestore. Snapshot volume CSI dapat digunakan untuk membuat Cadangan Filestore.
Cadangan Filestore membuat salinan diferensial dari pembagian file, termasuk semua data dan metadata file, dan menyimpannya secara terpisah dari instance. Anda hanya dapat memulihkan salinan ini ke instance Filestore baru. Pemulihan ke instance Filestore yang sudah ada tidak didukung. Anda dapat menggunakan API snapshot volume CSI untuk memicu cadangan Filestore, dengan menambahkan kolom
type:backup
di kelas snapshot volume.Anda dapat menggunakan perluasan volume dengan driver CSI GKE Filestore. Perluasan volume memungkinkan Anda mengubah ukuran kapasitas volume.
Anda dapat mengakses instance Filestore yang ada menggunakan instance Filestore yang disediakan sebelumnya di workload Kubernetes. Anda juga dapat membuat atau menghapus instance Filestore secara dinamis dan menggunakannya dalam workload Kubernetes dengan StorageClass atau Deployment.
Mendukung multishare Filestore untuk GKE. Fitur ini memungkinkan Anda membuat instance Filestore dan mengalokasikan beberapa PersistentVolumes yang lebih kecil yang terpasang NFS untuk instance Filestore secara bersamaan di sejumlah cluster GKE.
Persyaratan
- Untuk menggunakan driver CSI Filestore, cluster Anda harus menggunakan GKE versi 1.21 atau yang lebih baru.
- Untuk menggunakan kemampuan multishare Filestore, cluster Anda harus menggunakan GKE versi 1.23 atau yang lebih baru.
- Driver Filestore CSI hanya didukung untuk cluster yang menggunakan Linux; node Windows Server tidak didukung.
- Ukuran instance minimum untuk Filestore minimal adalah 1 TiB. Ukuran instance minimum bergantung pada tingkat layanan Filestore yang Anda pilih. Untuk mempelajari lebih lanjut, lihat Tingkat layanan.
- Filestore menggunakan protokol sistem file NFSv3 pada instance Filestore dan mendukung semua klien yang kompatibel dengan NFSv3.
Sebelum memulai
Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:
- Aktifkan Cloud Filestore API dan Google Kubernetes Engine API. Aktifkan API
- Jika Anda ingin menggunakan Google Cloud CLI untuk tugas ini,
instal lalu
initialize
gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan
gcloud components update
.
- Jika Anda ingin menggunakan Filestore pada jaringan VPC Bersama, lihat petunjuk penyiapan tambahan di Menggunakan Filestore dengan VPC Bersama.
Mengaktifkan driver CSI Filestore pada cluster baru
Untuk mengaktifkan driver CSI Filestore saat membuat cluster Standar baru, ikuti langkah-langkah ini dengan Google Cloud CLI atau Konsol Google Cloud.
gcloud
gcloud container clusters create CLUSTER_NAME \
--addons=GcpFilestoreCsiDriver \
--cluster-version=VERSION
Ganti kode berikut:
CLUSTER_NAME
: nama cluster Anda.VERSION
: nomor versi GKE. Anda harus memilih versi 1.21 atau yang lebih tinggi untuk menggunakan fitur ini. Atau, Anda dapat menggunakan flag--release-channel
dan menentukan saluran rilis.
Konsol
Buka halaman Google Kubernetes Engine di konsol Google Cloud.
Klik add_box Buat.
Pilih mode cluster Standar, lalu klik Konfigurasikan.
Mengonfigurasikan cluster sesuai keinginan.
Dari panel navigasi, pada Cluster, klik Fitur.
Pilih kotak centang Aktifkan driver CSI Filestore.
Klik Create.
Jika Anda ingin menggunakan Filestore pada jaringan VPC Bersama, lihat Mengaktifkan driver CSI Filestore pada cluster baru dengan VPC Bersama.
Setelah mengaktifkan driver Filestore CSI, Anda dapat menggunakan driver dalam volume Kubernetes menggunakan nama driver dan penyedia: filestore.csi.storage.gke.io
.
Mengaktifkan driver CSI Filestore pada cluster yang ada
Untuk mengaktifkan driver CSI Filestore di cluster yang ada, gunakan Google Cloud CLI atau Konsol Google Cloud.
Untuk mengaktifkan driver di cluster yang sudah ada, selesaikan langkah-langkah berikut:
gcloud
gcloud container clusters update CLUSTER_NAME \
--update-addons=GcpFilestoreCsiDriver=ENABLED
Ganti CLUSTER_NAME
dengan nama cluster yang sudah ada.
Konsol
Buka halaman Google Kubernetes Engine di konsol Google Cloud.
Di daftar cluster, klik nama cluster yang ingin diubah.
Di bagian Fitur, di samping kolom Driver CSI Filestore, klik edit Edit driver CSI Filestore.
Pilih kotak centang Aktifkan driver CSI Filestore.
Klik Simpan Perubahan.
Menonaktifkan driver CSI Filestore
Anda dapat menonaktifkan driver CSI Filestore pada cluster Autopilot atau Standar yang ada menggunakan Google Cloud CLI atau Konsol Google Cloud.
gcloud
gcloud container clusters update CLUSTER_NAME \
--update-addons=GcpFilestoreCsiDriver=DISABLED \
--region REGION
Ganti nilai berikut:
CLUSTER_NAME
: nama cluster yang ada.REGION
: region untuk cluster Anda (sepertius-central1
).
Konsol
Di Konsol Google Cloud, buka menu Google Kubernetes Engine.
Di daftar cluster, klik nama cluster yang ingin diubah.
Di bagian Fitur, di samping kolom Driver CSI Filestore, klik edit Edit driver CSI Filestore.
Hapus centang pada kotak Aktifkan driver CSI Filestore.
Klik Simpan Perubahan.
Mengakses instance Filestore yang sudah ada menggunakan driver CSI Filestore
Bagian ini menjelaskan proses standar penggunaan volume Kubernetes untuk mengakses instance Filestore yang sudah ada menggunakan driver CSI Filestore di GKE:
Membuat PersistentVolume dan PersistentVolumeClaim untuk mengakses instance
Buat file manifes seperti yang ditampilkan dalam contoh berikut, lalu beri nama
preprov-filestore.yaml
:apiVersion: v1 kind: PersistentVolume metadata: name: PV_NAME spec: storageClassName: "" capacity: storage: 1Ti accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain volumeMode: Filesystem csi: driver: filestore.csi.storage.gke.io volumeHandle: "modeInstance/FILESTORE_INSTANCE_LOCATION/FILESTORE_INSTANCE_NAME/FILESTORE_SHARE_NAME" volumeAttributes: ip: FILESTORE_INSTANCE_IP volume: FILESTORE_SHARE_NAME --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: podpvc spec: accessModes: - ReadWriteMany storageClassName: "" volumeName: PV_NAME resources: requests: storage: 1Ti
Untuk membuat resource
PersistentVolumeClaim
danPersistentVolume
berdasarkan file manifespreprov-filestore.yaml
, jalankan perintah berikut:kubectl apply -f preprov-filestore.yaml
Kemudian, lanjutkan ke membuat Deployment yang memakai volume.
Membuat volume menggunakan driver Filestore CSI
Bagian berikut menjelaskan proses umum penggunaan volume Kubernetes yang didukung oleh driver CSI Filestore di GKE:
- Membuat StorageClass
- Menggunakan PersistentVolumeClaim untuk mengakses volume
- Membuat Deployment yang memakai volume
Membuat StorageClass
Setelah Anda mengaktifkan driver Filestore CSI, GKE akan otomatis menginstal StorageClasses berikut untuk menyediakan instance Filestore:
zonal-rwx
, menggunakan tingkat Filestore offline. Hanya tersedia untuk band kapasitas yang lebih tinggi. StorageClass ini tersedia di cluster GKE yang menjalankan versi 1.27 atau yang lebih baru.enterprise-rwx
, menggunakan tingkat Filestore perusahaan, yang mana setiap PersistentVolume Kubernetes dipetakan ke instance Filestore. StorageClass ini tersedia di cluster GKE yang menjalankan versi 1.23 atau yang lebih baru.enterprise-multishare-rwx
, menggunakan tingkat Filestore perusahaan, yang mana setiap PersistentVolume Kubernetes dipetakan ke bagian instance Filestore tertentu. StorageClass ini tersedia di cluster GKE yang menjalankan versi 1.23 atau yang lebih baru. Untuk mempelajari lebih lanjut, lihat Multishare Filestore untuk Google Kubernetes Engine.standard-rwx
, menggunakan tingkat layanan Filestore HDD Dasar.premium-rwx
, menggunakan tingkat layanan Filestore SSD Dasar.
Anda dapat menemukan nama StorageClass
yang diinstal dengan menjalankan perintah
berikut:
kubectl get sc
Anda juga dapat menginstal StorageClass
lain yang menggunakan driver CSI Filestore dengan menambahkan filestore.csi.storage.gke.io
di kolom provisioner
.
Menyimpan manifes berikut sebagai
filestore-example-class.yaml
:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: filestore-example provisioner: filestore.csi.storage.gke.io volumeBindingMode: Immediate allowVolumeExpansion: true parameters: tier: standard network: default
Dari manifes, pertimbangkan konfigurasi parameter berikut:
- Menyetel
volumeBindingMode
keImmediate
memungkinkan penyediaan volume segera dimulai. Hal ini dimungkinkan karena instance Filestore dapat diakses dari zona mana saja. Oleh karena itu, GKE tidak perlu mengetahui zona tempat Pod dijadwalkan, berbeda dengan persistent disk Compute Engine. Jika ditetapkan keWaitForFirstConsumer
, GKE akan memulai penyediaan hanya setelah Pod dijadwalkan. Untuk mengetahui informasi selengkapnya, lihat VolumeBindingMode. - Setiap tingkat dapat ditentukan dalam parameter
tier
(misalnya,standard
,premium
,zonal
, atauenterprise
). + Parameternetwork
dapat digunakan saat menyediakan instance Filestore di VPC non-default. VPC non-default memerlukan penyiapan aturan firewall khusus.
- Menyetel
Untuk membuat resource
StorageClass
berdasarkan file manifesfilestore-example-class.yaml
, jalankan perintah berikut:kubectl create -f filestore-example-class.yaml
Jika Anda ingin menggunakan Filestore pada jaringan VPC Bersama, lihat Membuat StorageClass saat menggunakan driver CSI Filestore dengan VPC Bersama.
Menggunakan PersistentVolumeClaim untuk mengakses volume
Anda dapat membuat resource PersistentVolumeClaim
yang mereferensikan
StorageClass
driver CSI Filestore.
Anda dapat menggunakan StorageClass
yang sudah diinstal sebelumnya atau kustom.
Contoh file manifes berikut membuat PersistentVolumeClaim
yang mereferensikan StorageClass
bernama filestore-example
.
Menyimpan file manifes berikut sebagai
pvc-example.yaml
:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: podpvc spec: accessModes: - ReadWriteMany storageClassName: filestore-example resources: requests: storage: 1Ti
Untuk membuat resource
PersistentVolume
berdasarkan file manifespvc-example.yaml
, jalankan perintah berikut:kubectl create -f pvc-example.yaml
Membuat Deployment yang memakai volume
Contoh manifes Deployment berikut memakai resource PersistentVolume
yang bernama pvc-example.yaml
.
Beberapa Pod dapat berbagi resource PersistentVolumeClaim
yang sama.
Menyimpan manifes berikut sebagai
filestore-example-deployment.yaml
:apiVersion: apps/v1 kind: Deployment metadata: name: web-server-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx volumeMounts: - mountPath: /usr/share/nginx/html name: mypvc volumes: - name: mypvc persistentVolumeClaim: claimName: podpvc --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: podpvc spec: accessModes: - ReadWriteMany storageClassName: filestore-example resources: requests: storage: 1Ti
Untuk membuat Deployment berdasarkan file manifes
filestore-example-deployment.yaml
, jalankan perintah berikut:kubectl apply -f filestore-example-deployment.yaml
Mengonfirmasi bahwa Deployment berhasil dibuat:
kubectl get deployment
Instance Filestore mungkin memerlukan waktu beberapa saat untuk menyelesaikan penyediaan. Sebelum itu, deployment tidak akan melaporkan status
READY
. Anda dapat memeriksa progresnya dengan memantau status PVC dengan menjalankan perintah berikut:kubectl get pvc
Anda akan melihat PVC tersebut mencapai status
BOUND
, saat penyediaan volume selesai.
Memberi label instance Filestore
Anda dapat menggunakan label untuk mengelompokkan instance terkait dan menyimpan metadata tentang instance. Label adalah pasangan nilai kunci yang membantu Anda mengorganisir instance Filestore. Anda dapat melampirkan label ke setiap resource, lalu memfilter resource berdasarkan labelnya.
Anda dapat memberikan label menggunakan kunci labels
di StorageClass.parameters
.
Instance Filestore dapat diberi label dengan informasi tentang PersistentVolumeClaim
/PersistentVolume
apa instance tersebut dibuat. Kunci dan nilai label kustom harus mematuhi konvensi penamaan label.
Lihat contoh kelas penyimpanan Kubernetes untuk menerapkan label kustom ke instance Filestore.
Menggunakan fsgroup dengan volume Filestore
Kubernetes menggunakan fsGroup
untuk mengubah izin dan kepemilikan volume agar cocok dengan fsGroup
yang diminta pengguna dalam SecurityContext Pod.
fsGroup
adalah grup tambahan yang berlaku untuk semua container dalam Pod.
Anda dapat menerapkan fsgroup ke volume yang disediakan oleh driver CSI Filestore.
Menggunakan Filestore dengan VPC Bersama
Bagian ini membahas cara menggunakan instance Filestore di jaringan VPC Bersama dari project layanan.
Menyiapkan cluster dengan VPC Bersama
Untuk menyiapkan cluster dengan jaringan VPC Bersama, ikuti langkah-langkah berikut:
- Buat host dan project layanan.
- Aktifkan Google Kubernetes Engine API di project layanan dan host Anda.
- Pada project host, buat jaringan dan subnet.
- Aktifkan VPC Bersama di project host.
- Pada project host, beri
HostServiceAgent
binding peran pengguna untuk akun layanan GKE project layanan. - Mengaktifkan akses layanan pribadi di jaringan VPC Bersama.
Mengaktifkan driver CSI Filestore pada cluster baru dengan VPC Bersama
Untuk mengaktifkan driver CSI Filestore pada cluster baru dengan VPC Bersama, ikuti langkah-langkah berikut:
Memverifikasi subnet dan rentang sekunder yang dapat digunakan. Saat membuat cluster, Anda harus menentukan subnet dan rentang alamat IP sekunder yang akan digunakan untuk Pod dan Layanan cluster.
gcloud container subnets list-usable \ --project=SERVICE_PROJECT_ID \ --network-project=HOST_PROJECT_ID
Outputnya mirip dengan hal berikut ini:
PROJECT REGION NETWORK SUBNET RANGE HOST_PROJECT_ID us-central1 shared-net tier-1 10.0.4.0/22 ┌──────────────────────┬───────────────┬─────────────────────────────┐ │ SECONDARY_RANGE_NAME │ IP_CIDR_RANGE │ STATUS │ ├──────────────────────┼───────────────┼─────────────────────────────┤ │ tier-1-pods │ 10.4.0.0/14 │ usable for pods or services │ │ tier-1-services │ 10.0.32.0/20 │ usable for pods or services │ └──────────────────────┴───────────────┴─────────────────────────────┘
Buat cluster GKE. Contoh berikut menunjukkan cara menggunakan gcloud CLI untuk membuat cluster Autopilot atau Standar yang dikonfigurasi untuk VPC Bersama. Contoh berikut menggunakan nama jaringan, subnet, dan rentang dari Membuat jaringan dan dua subnet.
Autopilot
gcloud container clusters create-auto tier-1-cluster \ --project=SERVICE_PROJECT_ID \ --region=COMPUTE_REGION \ --network=projects/HOST_PROJECT_ID/global/networks/NETWORK_NAME \ --subnetwork=projects/HOST_PROJECT_ID/regions/COMPUTE_REGION/subnetworks/SUBNET_NAME \ --cluster-secondary-range-name=tier-1-pods \ --services-secondary-range-name=tier-1-services
Standar
gcloud container clusters create tier-1-cluster \ --project=SERVICE_PROJECT_ID \ --zone=COMPUTE_REGION \ --enable-ip-alias \ --network=projects/HOST_PROJECT_ID/global/networks/NETWORK_NAME \ --subnetwork=projects/HOST_PROJECT_ID/regions/COMPUTE_REGION/subnetworks/SUBNET_NAME \ --cluster-secondary-range-name=tier-1-pods \ --services-secondary-range-name=tier-1-services \ --addons=GcpFilestoreCsiDriver
Buat aturan firewall untuk memungkinkan komunikasi antara node, Pod, dan Layanan di cluster Anda. Contoh berikut menunjukkan cara membuat aturan firewall bernama
my-shared-net-rule-2
.gcloud compute firewall-rules create my-shared-net-rule-2 \ --project HOST_PROJECT_ID \ --network=NETWORK_NAME \ --allow=tcp,udp \ --direction=INGRESS \ --source-ranges=10.0.4.0/22,10.4.0.0/14,10.0.32.0/20
Pada contoh ini, nilai IP rentang sumber berasal dari langkah sebelumnya saat Anda memverifikasi subnet dan rentang sekunder yang dapat digunakan.
Membuat StorageClass saat menggunakan driver Filestore CSI dengan VPC Bersama
Contoh berikut menunjukkan cara membuat StorageClass saat menggunakan driver CSI Filestore dengan VPC Bersama:
cat <<EOF | kubectl apply -f -
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: filestore-sharedvpc-example
provisioner: filestore.csi.storage.gke.io
parameters:
network: "projects/HOST_PROJECT_ID/global/networks/SHARED_VPC_NAME"
connect-mode: PRIVATE_SERVICE_ACCESS
reserved-ip-range: RESERVED_IP_RANGE_NAME
allowVolumeExpansion: true
EOF
Ganti kode berikut:
HOST_PROJECT_ID
: ID atau nama project host Jaringan VPC Bersama.SHARED_VPC_NAME
: nama jaringan VPC Bersama yang Anda buat sebelumnya.RESERVED_IP_RANGE_NAME
: nama rentang alamat IP tertentu yang dicadangkan untuk tempat penyediaan instance Filestore. Kolom ini bersifat opsional. Jika ditentukan, rentang alamat IP yang dicadangkan harus berupa rentang alamat bernama, bukan nilai CIDR langsung.
Jika Anda ingin menyediakan volume yang didukung oleh multishare Filestore di cluster GKE yang menjalankan v1.23 atau yang lebih baru, lihat Mengoptimalkan penyimpanan dengan multishare Filestore untuk GKE.
Hubungkan kembali volume berbagi tunggal Filestore
Jika Anda menggunakan Filestore dengan HDD dasar, SSD dasar, atau tingkat Enterprise (single share), Anda dapat mengikuti petunjuk ini untuk menghubungkan kembali instance Filestore yang ada ke workload GKE.
Temukan detail instance Filestore yang telah disediakan dengan mengikuti petunjuk dalam Mendapatkan informasi tentang instance tertentu.
Deploy ulang spesifikasi PersistentVolume Anda. Di kolom
volumeAttributes
, ubah kolom berikut untuk menggunakan nilai yang sama dengan instance Filestore dari langkah 1:ip
: Ubah nilai ini ke alamat IP instance Filestore yang telah disediakan.volume
: Ubah nilai ini ke nama berbagi instance Filestore yang telah disediakan.
Deploy ulang spesifikasi PersistentVolumeClaim Anda. Dalam
volumeName
, pastikan Anda mereferensikan nama PersistentVolume yang sama seperti dari langkah 2.Periksa status binding PersistentVolumeClaim dan PersistentVolume dengan menjalankan
kubectl get pvc
.Deploy ulang spesifikasi Pod Anda dan pastikan Pod Anda dapat mengakses kembali file Filestore yang dibagikan.
Langkah selanjutnya
- Pelajari cara men-deploy workload Filestore stateful di GKE.
- Pelajari cara berbagi instance perusahaan Filestore dengan beberapa Volume Persisten.
- Pelajari cara menggunakan perluasan volume.
- Pelajari cara menggunakan snapshot volume.
- Baca selengkapnya tentang driver CSI di GitHub.