Mengakses instance Filestore dengan driver CSI Filestore

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.

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

  1. Buka halaman Google Kubernetes Engine di konsol Google Cloud.

    Buka Google Kubernetes Engine

  2. Klik Buat.

  3. Pilih mode cluster Standar, lalu klik Konfigurasikan.

  4. Mengonfigurasikan cluster sesuai keinginan.

  5. Dari panel navigasi, pada Cluster, klik Fitur.

  6. Pilih kotak centang Aktifkan driver CSI Filestore.

  7. 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

  1. Buka halaman Google Kubernetes Engine di konsol Google Cloud.

    Buka Google Kubernetes Engine

  2. Di daftar cluster, klik nama cluster yang ingin diubah.

  3. Di bagian Fitur, di samping kolom Driver CSI Filestore, klik Edit driver CSI Filestore.

  4. Pilih kotak centang Aktifkan driver CSI Filestore.

  5. 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 (seperti us-central1).

Konsol

  1. Di Konsol Google Cloud, buka menu Google Kubernetes Engine.

    Buka Google Kubernetes Engine

  2. Di daftar cluster, klik nama cluster yang ingin diubah.

  3. Di bagian Fitur, di samping kolom Driver CSI Filestore, klik Edit driver CSI Filestore.

  4. Hapus centang pada kotak Aktifkan driver CSI Filestore.

  5. 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

  1. 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
    
  2. Untuk membuat resource PersistentVolumeClaim dan PersistentVolume berdasarkan file manifes preprov-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

Setelah Anda mengaktifkan driver Filestore CSI, GKE akan otomatis menginstal StorageClasses berikut untuk menyediakan instance Filestore:

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.

  1. 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 ke Immediate 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 ke WaitForFirstConsumer, 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, atau enterprise). + Parameter network dapat digunakan saat menyediakan instance Filestore di VPC non-default. VPC non-default memerlukan penyiapan aturan firewall khusus.
  2. Untuk membuat resource StorageClass berdasarkan file manifes filestore-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.

  1. 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
    
  2. Untuk membuat resource PersistentVolume berdasarkan file manifes pvc-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.

  1. 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
    
  2. Untuk membuat Deployment berdasarkan file manifes filestore-example-deployment.yaml, jalankan perintah berikut:

    kubectl apply -f filestore-example-deployment.yaml
    
  3. 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:

  1. Buat host dan project layanan.
  2. Aktifkan Google Kubernetes Engine API di project layanan dan host Anda.
  3. Pada project host, buat jaringan dan subnet.
  4. Aktifkan VPC Bersama di project host.
  5. Pada project host, beri HostServiceAgent binding peran pengguna untuk akun layanan GKE project layanan.
  6. 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:

  1. 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 │
    └──────────────────────┴───────────────┴─────────────────────────────┘
    
  2. 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
    
  3. 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.

  1. Temukan detail instance Filestore yang telah disediakan dengan mengikuti petunjuk dalam Mendapatkan informasi tentang instance tertentu.

  2. 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.
  3. Deploy ulang spesifikasi PersistentVolumeClaim Anda. Dalam volumeName, pastikan Anda mereferensikan nama PersistentVolume yang sama seperti dari langkah 2.

  4. Periksa status binding PersistentVolumeClaim dan PersistentVolume dengan menjalankan kubectl get pvc.

  5. Deploy ulang spesifikasi Pod Anda dan pastikan Pod Anda dapat mengakses kembali file Filestore yang dibagikan.

Langkah selanjutnya