Menggunakan StorageClass kustom dengan workload Anda

GKE di Azure otomatis men-deploy Azure Disk CSI Driver dan Azure File CSI Driver.

Versi Azure Disk CSI Driver dan Azure File CSI Driver terikat ke GKE pada versi Azure Kubernetes. Versi driver biasanya adalah versi terbaru yang tersedia saat versi GKE dirilis. Saat cluster diupgrade, driver akan otomatis diupdate.

Menggunakan StorageClass kustom

Anda dapat membuat StorageClass tambahan untuk volume atau menggunakan Driver Antarmuka Penyimpanan Container (CSI).

  1. Pilih apakah Anda menggunakan volume disk Azure atau driver CSI lainnya.

    Volume Disk Azure

    Anda dapat membuat StorageClass kustom Anda sendiri yang menentukan jenis volume Azure Disk, jenis sistem file, dan parameter lainnya. Anda dapat menemukan parameter StorageClass tambahan di GKE pada halaman GitHub Azure Disk CSI Driver.

    Untuk mengonfigurasi StorageClass kustom, salin manifes YAML berikut ke dalam file bernama my-custom-class.yaml.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: CLASS_NAME
    provisioner: disk.csi.azure.com
    volumeBindingMode: WaitForFirstConsumer
    allowVolumeExpansion: true
    

    Ganti CLASS_NAME dengan nama StorageClass baru Anda.

    Misalnya, YAML berikut membuat StorageClass baru yang menyediakan volume di akun penyimpanan tertentu dan menerapkan tag group=dev ke setiap volume baru.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: my-custom-class
    provisioner: disk.csi.azure.com
    volumeBindingMode: WaitForFirstConsumer
    allowVolumeExpansion: true
    parameters:
      storageAccount: my-storage-account
      tags: group=dev
    

    Driver CSI

    Anda dapat menentukan driver CSI lain di kolom provisioner.

    Untuk membuat StorageClass dengan driver CSI lain, Anda dapat menggunakan contoh YAML di bawah ini.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: CLASS_NAME
    provisioner: CSI_DRIVER_NAME
    volumeBindingMode: WaitForFirstConsumer
    parameters:
      ...
    

    Ganti nilai berikut:

    • CLASS_NAME: nama StorageClass (misalnya, my-custom-class).
    • CSI_DRIVER_NAME: nama driver CSI (misalnya, csi.example.com).

    Selanjutnya, konfigurasi subkolom di bagian parameters sesuai dengan dokumentasi driver CSI Anda.

  2. Terapkan YAML ke cluster Anda.

    kubectl apply -f my-custom-class.yaml
    
  3. Membuat PersistentVolumeClaim dengan StorageClass kustom.

    Setelah membuat StorageClass kustom, Anda dapat menentukannya dalam PVC. Contoh berikut membuat PVC bernama my-pvc yang mereferensikan my-custom-class StorageClass.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: my-pvc
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 30Gi
      storageclassName: my-custom-class
    

Menetapkan StorageClass default

GKE di Azure menggunakan StorageClass default yang disebut standard-rwo, yang menyediakan disk SSD Azure standar dengan LRS. Anda dapat mengubah default ke StorageClass lain.

Untuk mengubah StorageClass default:

  1. Update anotasi is-default-class untuk StorageClass standard-rwo dengan kubectl patch.

    kubectl patch storageclass standard-rwo -p \
      '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
    
  2. Buat StorageClass baru yang memiliki anotasi storageclass.kubernetes.io/is-default-class: true.

    Contoh berikut StorageClass menggunakan driver disk.csi.azure.com. Untuk menginstal driver penyimpanan lain, lihat Menginstal driver CSI.

    Salin YAML berikut ke dalam file bernama my-custom-class.yaml.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: CLASS_NAME
      annotations:
        storageclass.kubernetes.io/is-default-class: true
    provisioner: disk.csi.azure.com
    volumeBindingMode: WaitForFirstConsumer
    parameters:
      skuName: VOLUME_TYPE
    

    Ganti kode berikut:

    • CLASS_NAME: nama StorageClass baru Anda.
    • VOLUME_TYPE: jenis volume Disk Azure yang dibuat StorageClass.

    Misalnya, YAML berikut membuat StorageClass default baru yang menyediakan volume Azure Disk SSD Premium.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: my-custom-default-class
      annotations:
        storageclass.kubernetes.io/is-default-class: "true"
    provisioner: disk.csi.azure.com
    volumeBindingMode: WaitForFirstConsumer
    parameters:
      skuName: Premium_LRS
    
  3. Terapkan class kustom baru ke cluster Anda.

    kubectl apply -f my-custom-class.yaml
    

Setelah menerapkan manifes ini, GKE di Azure menggunakan StorageClass my-custom-default-class untuk permintaan penyimpanan baru.

Mereferensikan StorageClass dalam StatefulSet

Untuk menggunakan StorageClass baru, Anda dapat mereferensikannya dalam volumeClaimTemplates StatefulSet.

Saat Anda mereferensikan StorageClass dalam spesifikasi volumeClaimTemplates StatefulSet, Kubernetes akan menyediakan penyimpanan stabil menggunakan PersistentVolumes (PV). Kubernetes memanggil penyedia yang ditentukan dalam StorageClass untuk membuat volume penyimpanan baru. Setelah volume disediakan, Kubernetes akan otomatis membuat PV.

StatefulSet berikut mereferensikan StorageClass my-custom-class dan menyediakan volume 1 gibibyte:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: registry.k8s.io/nginx-slim:0.8
        volumeMounts:
        - name: www
          mountPath: /usr/share/nginx/html
  volumeClaimTemplates: # This is the specification in which you reference the StorageClass
  - metadata:
      name: www
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 1Gi
      storageClassName: my-custom-class # This field references the existing StorageClass

Langkah selanjutnya