Mengoptimalkan penyimpanan dengan Multishare Filestore untuk GKE

Panduan ini menunjukkan cara menggunakan multishare Filestore untuk Google Kubernetes Engine dengan driver CSI GKE Filestore.

Sebelum memulai

  1. Sebelum memulai, selesaikan langkah-langkah penyiapan yang diperlukan untuk menggunakan Filestore.

  2. Aktifkan driver CSI GKE Filestore, versi 1.23 atau yang lebih baru:

    • Driver versi 1.23 hingga 1.26 mendukung hingga 10 kali berbagi per instance.

    • Driver versi 1.27 atau yang lebih baru mendukung hingga 80 kali berbagi per instance.

    Untuk mengetahui persyaratan driver CSI GKE Filestore terbaru, lihat Mengakses instance Filestore dengan driver CSI Filestore.

Menggunakan multishare Filestore dengan beberapa aplikasi

Bagian ini menunjukkan cara men-deploy dua aplikasi, satu Deployment dan satu Statefulset, yang masing-masing menggunakan StorageClass multishare Filestore. Anda juga akan melihat bagaimana GKE melakukan bin packing (proses untuk mengemas aplikasi ke dalam node GKE secara efisien) pada semua volume di dalam instance perusahaan Filestore yang sama yang mendasarinya.

  1. Gunakan StorageClass yang disediakan GKE, enterprise-multishare-rwx, untuk membuat instance yang mendukung hingga 10 share.

    • Jika ingin membuat instance yang mendukung hingga 80 kali berbagi, Anda harus membuat StorageClass kustom. Untuk tujuan panduan ini, Anda akan menggunakan StorageClass dengan batas sepuluh kali berbagi per instance.

    Setelah driver CSI GKE Filestore diaktifkan, pengguna dapat mengakses StorageClass multishare yang disediakan GKE, yaitu enterprise-multishare-rwx, dengan konfigurasi berikut. Dengan mereferensikan StorageClass ini, driver CSI GKE Filestore menggunakan penyediaan volume dinamis guna membuat Volume Persisten (PV) secara otomatis untuk Klaim Volume Persisten (PVC) baru sesuai dengan permintaan workload GKE:

    kubectl describe sc enterprise-multishare-rwx
    Name:                  enterprise-multishare-rwx
    IsDefaultClass:        No
    Annotations:           components.gke.io/component-name=filestorecsi,components.gke.io/component-version=0.7.2,components.gke.io/layer=addon
    Provisioner:           filestore.csi.storage.gke.io
    Parameters:            instance-storageclass-label=enterprise-multishare-rwx,multishare=true,tier=enterprise
    AllowVolumeExpansion:  True
    MountOptions:          <none>
    ReclaimPolicy:         Delete
    VolumeBindingMode:     WaitForFirstConsumer
    Events:                <none>
    

Membuat StorageClass kustom

Jika Anda ingin memanfaatkan batas kapasitas terbaru hingga 80 kali berbagi per instance Filestore, buat StorageClass kustom berdasarkan template berikut:

  apiVersion: storage.k8s.io/v1
  kind: StorageClass
  metadata:
    name: csi-filestore-multishare-128
  provisioner: filestore.csi.storage.gke.io
  parameters:
    tier: enterprise
    multishare: "true"
    max-volume-size: "128Gi"
    network: default
  allowVolumeExpansion: true

Saat mengganti nama StorageClass, pertimbangkan persyaratan berikut:

  • Nama StorageClass harus berupa nama subdomain DNS yang valid.

  • Nama StorageClass multishare juga digunakan sebagai label instance dan harus mengikuti panduan penamaan label.

  • Jika aplikasi Anda memerlukan penyediaan volume langsung, sertakan mode binding volume Immediate:

    volumeBindingMode: Immediate

    Gunakan spesifikasi ini, misalnya, jika Anda tidak ingin penyediaan volume bergantung pada pembuatan pod di cluster GKE.

  • Mulai versi driver 1.27, jika Anda ingin menetapkan lebih dari 10 kali berbagi per instance, sertakan parameter max-volume-size dan tetapkan salah satu nilai yang diterima dari kolom pertama pada parameter tersebut:

    Ukuran volume maksimum (ukuran pembagian) Jumlah maksimum pembagian per instance
    128 GiB 80
    256 GiB 40
    512 GiB 20
    1024 GiB 10

    Jadi, misalnya, menambahkan pasangan nilai kunci max-volume-size: "128Gi" memastikan bahwa StorageClass memetakan hingga 80 kali berbagi—masing-masing berukuran mulai dari 10 GiB hingga 128 GiB—ke dalam satu instance tingkat perusahaan sebesar 10 TiB.

    • Kemampuan ini merupakan kompatibilitas mundur dengan instance Filestore yang dibuat oleh driver CSI GKE Filestore versi 1.23 hingga 1.26.

    • Instance yang sudah ada dapat membuat PVC atau berbagi baru, dengan ukuran berbagi minimum yang diperluas sebesar 10 GiB.

    • Driver CSI GKE Filestore versi 1.27, atau yang lebih baru, mengenali instance perusahaan lama dan menetapkan ukuran berbagi maksimum default sebesar 1024 GiB (1 TiB). Akibatnya, instance lama dibatasi jumlah maksimum berbaginya menjadi 10 kali berbagi per instance.

    Untuk mengetahui informasi selengkapnya, silakan melihat Multishare Filestore untuk GKE.

  1. Buat Deployment dengan beberapa replika pod menggunakan satu PVC.

    Buat file konfigurasi YAML yang mirip dengan berikut ini:

    cat <<EOF | kubectl apply -f -
    
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: web-server-multishare
      labels:
        app: nginx
    spec:
      replicas: 5
      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: test-pvc-fs
    ---
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: test-pvc-fs
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: enterprise-multishare-rwx
      resources:
        requests:
          storage: 100Gi
    
    EOF
    
  2. Memeriksa replika pod.

    a. Dari command line, jalankan perintah berikut untuk memeriksa status PVC:

    kubectl get pvc
    

    Anda akan melihat respons yang mirip dengan berikut ini:

    NAME          STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS               AGE
    test-pvc-fs   Bound    pvc-056d769d-a709-4bb2-b6d3-0361871b27a2   100Gi      RWX            enterprise-multishare-rwx  35m
    

    b. Dari command line, jalankan perintah berikut untuk memeriksa status pod:

    kubectl get pod
    

    Anda akan melihat respons yang mirip dengan berikut ini:

    NAME                                     READY   STATUS    RESTARTS   AGE
    web-server-multishare-76c9ffb4b5-2dhml   1/1     Running   0          35m
    web-server-multishare-76c9ffb4b5-7mtcb   1/1     Running   0          35m
    web-server-multishare-76c9ffb4b5-csdbd   1/1     Running   0          35m
    web-server-multishare-76c9ffb4b5-rgx82   1/1     Running   0          35m
    web-server-multishare-76c9ffb4b5-zjl27   1/1     Running   0          35m
    
  3. Menskalakan replika.

    a. Dari command line, jalankan perintah berikut untuk mengedit Deployment:

    kubectl edit deployment web-server-multishare
    

    b. File akan terbuka di command line. Temukan kolom spec.replicas dan perbarui nilainya menjadi 10.

    c. Dari command line, jalankan perintah berikut untuk melihat perubahan yang diterapkan:

    kubectl get pod
    

    Anda akan melihat respons yang mirip dengan berikut ini:

    NAME                                     READY   STATUS    RESTARTS   AGE
    web-server-multishare-76c9ffb4b5-2dhml   1/1     Running   0          36m
    web-server-multishare-76c9ffb4b5-5ctkf   1/1     Running   0          3s
    web-server-multishare-76c9ffb4b5-7mtcb   1/1     Running   0          36m
    web-server-multishare-76c9ffb4b5-8dwmw   1/1     Running   0          2s
    web-server-multishare-76c9ffb4b5-csdbd   1/1     Running   0          36m
    web-server-multishare-76c9ffb4b5-lndcq   1/1     Running   0          2s
    web-server-multishare-76c9ffb4b5-rgx82   1/1     Running   0          36m
    web-server-multishare-76c9ffb4b5-vtd6p   1/1     Running   0          3s
    web-server-multishare-76c9ffb4b5-xm49s   1/1     Running   0          3s
    web-server-multishare-76c9ffb4b5-zjl27   1/1     Running   0          36m
    

    Perhatikan bahwa ada 10 pod yang sedang berjalan.

    d. Pada command line, jalankan perintah berikut:

    kubectl get deployment
    

    Anda akan melihat respons yang mirip dengan berikut ini:

    NAME                    READY   UP-TO-DATE   AVAILABLE   AGE
    web-server-multishare   10/10   10           10          36m
    

    e. Dari command line, jalankan perintah berikut untuk memeriksa status PVC yang terikat:

    kubectl get pvc
    

    Anda akan melihat respons yang mirip dengan berikut ini:

    NAME          STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS               AGE
    test-pvc-fs   Bound    pvc-056d769d-a709-4bb2-b6d3-0361871b27a2   100Gi      RWX            enterprise-multishare-rwx  37m
    

    f. Dari command line, jalankan perintah berikut untuk mengedit Deployment:

    kubectl edit deployment web-server-multishare
    

    g. File akan terbuka di command line. Temukan kolom spec.replicas dan perbarui nilainya menjadi 2.

    h. Dari command line, jalankan perintah berikut untuk melihat perubahan yang diterapkan:

    kubectl get pod
    

    Anda akan melihat respons yang mirip dengan berikut ini:

    NAME                                     READY   STATUS    RESTARTS   AGE
    web-server-multishare-76c9ffb4b5-2dhml   1/1     Running   0          38m
    web-server-multishare-76c9ffb4b5-7mtcb   1/1     Running   0          38m
    
  4. Men-deploy Statefulset.

    Deploy aplikasi kedua yang menggunakan instance Filestore yang sama sebagai dasarnya.

    Untuk melakukannya, sediakan ruang sebesar 200 GiB dan pastikan bahwa aplikasi tersebut menggunakan instance Filestore yang mendasari yang sama dengan aplikasi pertama.

    Anda kemudian akan menskalakan aplikasi ke sembilan replika dengan total 900 GiB (9 replika masing-masing menggunakan 100 GiB) dan memastikan bahwa GKE menggunakan instance Filestore yang sama dengan membagikan instance tersebut.

    Buat file konfigurasi YAML yang mirip dengan berikut ini:

    cat <<EOF | kubectl apply -f -
    
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: web
    spec:
      serviceName: "nginx"
      replicas: 2
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: registry.k8s.io/nginx-slim:0.8
            ports:
            - containerPort: 80
              name: web
            volumeMounts:
            - name: test-pvc-multishare
              mountPath: /usr/share/nginx/html
      volumeClaimTemplates:
      - metadata:
          name: test-pvc-multishare
        spec:
          accessModes: [ "ReadWriteMany" ]
          storageClassName: enterprise-multishare-rwx
          resources:
            requests:
              storage: 100Gi
    
    EOF
    
    
  5. Periksa volume dan replika Statefulset.

    Pada command line, jalankan perintah berikut:

    kubectl get pod
    

    Anda akan melihat respons yang mirip dengan berikut ini:

    NAME                                     READY   STATUS    RESTARTS   AGE
    web-0                                    1/1     Running   0          4m48s
    web-1                                    1/1     Running   0          3m32s
    web-server-multishare-76c9ffb4b5-2dhml   1/1     Running   0          57m
    web-server-multishare-76c9ffb4b5-7mtcb   1/1     Running   0          57m
    

    Perhatikan bahwa dua pod pertama yang terkait dengan Statefulset. Dua pod terakhir yang terkait dengan Deployment.

    Pada command line, jalankan perintah berikut:

    kubectl get statefulset
    

    Anda akan melihat respons yang mirip dengan berikut ini:

    NAME   READY   AGE
    web    2/2     2m8s
    

    Pada command line, jalankan perintah berikut:

    kubectl get pvc
    

    Anda akan melihat respons yang mirip dengan berikut ini:

    NAME                        STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS               AGE
    test-pvc-fs                 Bound    pvc-056d769d-a709-4bb2-b6d3-0361871b27a2   100Gi      RWX            enterprise-multishare-rwx   54m
    test-pvc-multishare-web-0   Bound    pvc-7aa21b5a-5343-4547-b7d7-414c16af15a7   100Gi      RWX            enterprise-multishare-rwx   114s
    test-pvc-multishare-web-1   Bound    pvc-8b37cd6e-d764-4d38-80d7-d74228536cfe   100Gi      RWX            enterprise-multishare-rwx   38s
    

    PVC test-pvc-fs terkait dengan Deployment web-server-multishare.

    PVC test-pvc-multishare-web-0 dan test-pvc-multishare-web-1 terkait dengan Statefulset.

  6. Menskalakan replika Statefulset.

    Tingkatkan jumlah replika menjadi sembilan. Seiring bertambahnya jumlah, PVC yang sesuai akan dibuat.

    a. Pada command line, jalankan perintah berikut:

    kubectl  edit statefulset web
    

    b. File akan terbuka di command line. Temukan kolom spec.replicas dan perbarui nilainya menjadi 9.

    c. Dari command line, jalankan perintah berikut untuk melihat perubahan yang diterapkan:

    kubectl get statefulset
    

    Anda akan melihat respons yang mirip dengan berikut ini:

    NAME   READY   AGE
    web    9/9     13m
    

    d. Pada command line, jalankan perintah berikut:

    kubectl get deployment
    

    Anda akan melihat respons yang mirip dengan berikut ini:

    NAME                    READY   UP-TO-DATE   AVAILABLE   AGE
    web-server-multishare   2/2     2            2           65m
    

    e. Pada command line, jalankan perintah berikut:

    kubectl get pvc
    

    Anda akan melihat respons yang mirip dengan berikut ini:

    NAME                        STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS               AGE
    test-pvc-fs                 Bound    pvc-056d769d-a709-4bb2-b6d3-0361871b27a2   100Gi      RWX            enterprise-multishare-rwx   65m
    test-pvc-multishare-web-0   Bound    pvc-7aa21b5a-5343-4547-b7d7-414c16af15a7   100Gi      RWX            enterprise-multishare-rwx   13m
    test-pvc-multishare-web-1   Bound    pvc-8b37cd6e-d764-4d38-80d7-d74228536cfe   100Gi      RWX            enterprise-multishare-rwx   12m
    test-pvc-multishare-web-2   Bound    pvc-3fcbd132-939f-4364-807a-7c8ac6a3e64e   100Gi      RWX            enterprise-multishare-rwx   5m12s
    test-pvc-multishare-web-3   Bound    pvc-5894afa5-2502-4ee7-9d5c-b7378cb85479   100Gi      RWX            enterprise-multishare-rwx   4m57s
    test-pvc-multishare-web-4   Bound    pvc-ebbe452b-bc8f-4624-a830-a2094cce0d67   100Gi      RWX            enterprise-multishare-rwx   4m36s
    test-pvc-multishare-web-5   Bound    pvc-5a73a698-d174-44cb-a3a1-e767966c3417   100Gi      RWX            enterprise-multishare-rwx   4m20s
    test-pvc-multishare-web-6   Bound    pvc-102da6a9-2ca6-4f9e-9896-8fe14709db7a   100Gi      RWX            enterprise-multishare-rwx   3m55s
    test-pvc-multishare-web-7   Bound    pvc-160e81cd-c5bf-4ae6-966e-518e8249e02d   100Gi      RWX            enterprise-multishare-rwx   3m38s
    test-pvc-multishare-web-8   Bound    pvc-9b52d773-2e9a-40de-881c-dc06945ba3d7   100Gi      RWX            enterprise-multishare-rwx   118s
    
  7. Memverifikasi status instance Filestore.

    Sekarang Anda memiliki Deployment dengan dua pod replika, serta Statefulset dengan sembilan pod replika, dan total 10 PVC, masing-masing berukuran 100 GiB. Semua volume dikemas ke dalam satu instance multi-share Filestore.

    a. Dari command line, jalankan perintah instances list berikut:

    gcloud beta filestore instances list --project=YOUR_PROJECT_ID --region=REGION
    

    dengan:

    • YOUR_PROJECT_ID adalah nama project yang digunakan. Misalnya, my-project.

    • REGION adalah nama region yang digunakan. Misalnya, us-central1.

    Anda akan melihat respons yang mirip dengan berikut ini:

    INSTANCE_NAME                            LOCATION     TIER        CAPACITY_GB  FILE_SHARE_NAME  IP_ADDRESS   STATE  CREATE_TIME
    fs-a767cef8-738e-4c8e-b70b-09cbb872d016  us-central1  ENTERPRISE  1024         N/A              10.192.53.2  READY  2022-06-21T21:15:30
    

    b. Dari command line, jalankan perintah instances describe berikut:

    gcloud filestore instances describe fs-a767cef8-738e-4c8e-b70b-09cbb872d016 --project=YOUR_PROJECT_ID --region=REGION
    capacityGb: '1024'
    capacityStepSizeGb: '256'
    createTime: '2022-06-21T21:15:30.464237089Z'
    labels:
      storage_gke_io_created-by: filestore_csi_storage_gke_io
      storage_gke_io_storage-class-id: enterprise-multishare-rwx
    maxCapacityGb: '10240'
    maxShareCount: '10'
    multiShareEnabled: true
    name: projects/YOUR_PROJECT_ID/locations/REGION/instances/fs-a767cef8-738e-4c8e-b70b-09cbb872d016
    networks:
    - connectMode: DIRECT_PEERING
      ipAddresses:
      - 10.192.53.2
      modes:
      - MODE_IPV4
      network: csi-filestore-test-network
      reservedIpRange: 10.192.53.0/26
    state: READY
    tier: ENTERPRISE
    
    

    dengan:

    • YOUR_PROJECT_ID adalah nama project yang digunakan. Misalnya, my-project.

    • REGION adalah nama region yang digunakan. Misalnya, us-central1.

Memperluas PVC dan memverifikasi instance Filestore

Bagian ini menunjukkan cara memperluas PVC yang ada dan memverifikasi ukuran instance Filestore.

  1. Memperluas PVC.

    PVC—yang didukung oleh berbagi dalam instance multishare Filestore—dapat diperluas hingga ke ukuran maksimum yang ditentukan dalam parameter max-volume-size. Untuk memverifikasinya, luaskan salah satu volume yang terkait dengan Statefulset saat pod sedang menggunakannya.

    Dari command line, jalankan perintah berikut untuk memeriksa ukuran PVC saat ini dari replika 0:

    kubectl get pvc test-pvc-multishare-web-0 -o json
    {
        "apiVersion": "v1",
        "kind": "PersistentVolumeClaim",
        "metadata": {
            "annotations": {
                "pv.kubernetes.io/bind-completed": "yes",
                "pv.kubernetes.io/bound-by-controller": "yes",
                "volume.beta.kubernetes.io/storage-provisioner": "filestore.csi.storage.gke.io",
                "volume.kubernetes.io/storage-provisioner": "filestore.csi.storage.gke.io"
            },
            "creationTimestamp": "2022-06-21T22:07:42Z",
            "finalizers": [
                "kubernetes.io/pvc-protection"
            ],
            "labels": {
                "app": "nginx"
            },
            "name": "test-pvc-multishare-web-0",
            "namespace": "default",
            "resourceVersion": "48395",
            "uid": "7aa21b5a-5343-4547-b7d7-414c16af15a7"
        },
        "spec": {
            "accessModes": [
                "ReadWriteMany"
            ],
            "resources": {
                "requests": {
                    "storage": "100Gi"
                }
            },
            "storageClassName": "enterprise-multishare-rwx",
            "volumeMode": "Filesystem",
            "volumeName": "pvc-7aa21b5a-5343-4547-b7d7-414c16af15a7"
        },
        "status": {
            "accessModes": [
                "ReadWriteMany"
            ],
            "capacity": {
                "storage": "100Gi"
            },
            "phase": "Bound"
        }
    }
    
    
  2. Dari command line, jalankan perintah berikut untuk meningkatkan ukuran menjadi 500 GiB:

    kubectl edit pvc test-pvc-multishare-web-0
    
  3. File akan terbuka di command line. Cari kolom spec.resources.requests.storage dan perbarui nilainya menjadi 500Gi.

  4. Dari command line, jalankan perintah berikut untuk melihat perubahan yang diterapkan:

    kubectl get pvc test-pvc-multishare-web-0
    

    Anda akan melihat respons yang mirip dengan berikut ini:

    NAME                        STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS               AGE
    test-pvc-multishare-web-0   Bound    pvc-7aa21b5a-5343-4547-b7d7-414c16af15a7   500Gi      RWX            enterprise-multishare-rwx   28m
    

    Driver CSI Filestore menerima permintaan tersebut, pertama-tama memperluas instance Filestore yang mendasarinya, lalu memperluas berbagi yang mendukung PVC.

    Khususnya, driver CSI Filestore secara otomatis memperluas instance menjadi 1536 Gi untuk mengakomodasi ukuran berbagi baru, yakni 500Gi.

  5. Dari command line, jalankan perintah instances describe berikut untuk memverifikasi kapasitas instance Filestore:

    gcloud filestore instances describe fs-a767cef8-738e-4c8e-b70b-09cbb872d016 --project=YOUR_PROJECT_ID --region=REGION
    capacityGb: '1536'
    capacityStepSizeGb: '256'
    createTime: '2022-06-21T21:15:30.464237089Z'
    labels:
      storage_gke_io_created-by: filestore_csi_storage_gke_io
      storage_gke_io_storage-class-id: enterprise-multishare-rwx
    maxCapacityGb: '10240'
    maxShareCount: '10'
    multiShareEnabled: true
    name: projects/YOUR_PROJECT_ID/locations/us-central1/instances/fs-a767cef8-738e-4c8e-b70b-09cbb872d016
    networks:
    - connectMode: DIRECT_PEERING
      ipAddresses:
      - 10.192.53.2
      modes:
      - MODE_IPV4
      network: csi-filestore-test-network
      reservedIpRange: 10.192.53.0/26
    state: READY
    tier: ENTERPRISE
    

    dengan:

    • YOUR_PROJECT_ID adalah nama project yang digunakan. Misalnya, my-project.

    • REGION adalah nama region yang digunakan. Misalnya, us-central1.

Penyediaan dinamis di VPC Bersama

Driver CSI Filestore untuk GKE mendukung penyediaan dinamis volume dalam project layanan pada VPC Bersama. Bagian berikut menunjukkan cara menggunakan driver CSI Filestore untuk menyediakan volume secara dinamis pada instance multishare Filestore dalam project layanan pada Jaringan VPC bersama.

  1. Menyelesaikan langkah penyiapan untuk Jaringan VPC bersama dan akses layanan pribadi.

  2. Membuat StorageClass untuk menyediakan volume secara dinamis yang didukung oleh instance multishare Filestore di VPC Bersama.

    Jalankan perintah berikut untuk men-deploy resource StorageClass:

    cat <<EOF | kubectl apply -f -
    
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: csi-filestore-multishare-sharedvpc
    provisioner: filestore.csi.storage.gke.io
    parameters:
      network: "projects/HOST_PROJECT_ID/global/networks/SHARED_VPC_NAME"
      connect-mode: PRIVATE_SERVICE_ACCESS
      tier: enterprise
      multishare: "true"
    allowVolumeExpansion: true
    
    EOF
    

    dengan:

    • HOST_PROJECT_ID adalah ID atau nama project host Jaringan VPC bersama. Misalnya, my-host-project.

    • SHARED_VPC_NAME adalah nama Jaringan VPC bersama. Misalnya, my-shared-vpc.

    Jika Anda ingin men-deploy resource dalam rentang alamat IP yang direservasi, tambahkan baris berikut ke parameter yang digunakan dalam perintah:

    reserved-ip-range: RESERVED_NAME
    

    Dengan RESERVED_NAME sebagai nama rentang alamat IP yang dicadangkan, tempat instance Filestore dapat disediakan. Contoh, filestore-reserved-ip-range. Jika ditentukan, rentang IP yang dicadangkan harus berupa rentang alamat IP bernama, bukan nilai CIDR langsung.

    Untuk mengetahui informasi selengkapnya, lihat Mengalokasikan rentang alamat IP atau Mengonfigurasi rentang alamat IP yang dicadangkan. Untuk melihat contoh cara membuat nama yang dicadangkan menggunakan Konsol Google Cloud, lihat Membuat alokasi IP.

  3. Membuat Deployment.

    Jalankan perintah berikut untuk membuat resource Deployment:

    cat <<EOF | kubectl apply -f -
    
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: web-server-multishare
      labels:
        app: nginx
    spec:
      replicas: 5
      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: test-pvc-fs-sharedvpc
    ---
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: test-pvc-fs-sharedvpc
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: csi-filestore-multishare-sharedvpc
      resources:
        requests:
          storage: 100Gi
    
    EOF
    

Instance Filestore yang mengaktifkan CMEK

Anda dapat membuat volume GKE yang dihosting di instance multishare Filestore yang mendukung CMEK. Di bagian ini, Anda akan melihat cara menyiapkan kunci enkripsi yang dikelola pelanggan (CMEK) untuk instance Filestore.

Detail kunci yang dikelola pelanggan dapat diberikan di StorageClass. Setiap instance yang dibuat secara dinamis oleh driver CSI Filestore, yang mereferensikan StorageClass ini, akan mengaktifkan CMEK.

  1. Buat StorageClass yang mendukung CMEK.

    a. Jalankan perintah berikut:

    cat <<EOF | kubectl apply -f -
    
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: csi-filestore-multishare-cmek
    provisioner: filestore.csi.storage.gke.io
    parameters:
      tier: enterprise
      multishare: "true"
      instance-encryption-kms-key: projects/KEY_PROJECT_ID/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
    
    allowVolumeExpansion: true
    
    EOF
    

    dengan:

    • KEY_PROJECT_ID adalah nama project tempat kunci berada. Misalnya, my-key-project.

    • REGION adalah nama region yang digunakan. Misalnya, us-central1.

    • RING_NAME adalah nama key ring. Contoh, my-key-ring-name.

    • KEY_NAME adalah nama kunci. Contoh, my-key-name.

  2. Membuat Deployment.

    b. Jalankan perintah berikut untuk membuat resource Deployment:

    cat <<EOF | kubectl apply -f -
    
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: web-server-multishare
      labels:
        app: nginx
    spec:
      replicas: 5
      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: test-pvc-fs-cmek
    ---
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: test-pvc-fs-cmek
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: csi-filestore-multishare-cmek
      resources:
        requests:
          storage: 100Gi
    
    EOF
    

Memetakan PVC ke instance Filestore

Di bagian ini, Anda akan melihat cara memetakan PVC ke instance Filestore.

Dengan instance multishare Filestore, setiap PVC dihosting di instance Filestore oleh driver CSI Filestore. Detail instance Filestore, yang mendasari yang menghosting volume dan berbagi yang mewakili volume Kubernetes, ditangkap di kolom volumeHandle pada spesifikasi Volume Persisten. Format handle volume adalah sebagai berikut:

modeMultishare/<storageclass-prefix>/<project>/<region>/<filestore-instance-name>/<filestore-share-name>

Perintah kubectl berikut dapat digunakan untuk menentukan pemetaan antara PVC, PV, Instance Filestore, dan berbagi Filestore dengan cepat.

Pada command line, jalankan perintah berikut:

kubectl get pv -o jsonpath='{range .items[*]}{"pv="}{.metadata.name}{",pvc="}{.spec.claimRef.name}{",volumeHandle="}{.spec.csi.volumeHandle}{"\n"}{end}'

Anda akan melihat respons yang mirip dengan berikut ini:

pv=pvc-67ad9abd-f25e-4130-b7ca-64d28bd29525,pvc=test-pvc-multishare,volumeHandle=modeMultishare/csi-filestore-multishare-sharedvpc/YOUR_PROJECT_ID/us-central1/fs-2109f680-3f04-4ada-b4bc-2a1c7fc47b88/pvc_67ad9abd_f25e_4130_b7ca_64d28bd29525

pv=pvc-c80f4de0-9916-4957-b8ae-b21206650ac0,pvc=test-pvc-fs-sharedvpc,volumeHandle=modeMultishare/csi-filestore-multishare-sharedvpc/YOUR_PROJECT_ID/us-central1/fs-2109f680-3f04-4ada-b4bc-2a1c7fc47b88/pvc_c80f4de0_9916_4957_b8ae_b21206650ac0

dengan:

  • YOUR_PROJECT_ID adalah nama project yang digunakan. Misalnya, my-project.

Perhatikan bahwa dua volume persisten di cluster dihosting di satu instance Filestore.

Langkah berikutnya