Konfigurasi StorageClass

Database Cassandra menggunakan volume persisten yang dibuat secara dinamis untuk menyimpan data. Agar database berfungsi dengan benar, Apigee mengharuskan Anda mengonfigurasi definisi StorageClass yang didukung oleh solid-state drive (SSD).

Jika saat ini Anda tidak mengonfigurasi SSD untuk Cassandra, topik ini menjelaskan cara membuat StorageClass baru yang menggunakan SSD dan menjadikannya class default. Saat dimulai, Cassandra akan menggunakan StorageClass default ini.

Langkah-langkah yang diuraikan dalam topik ini untuk konfigurasi StorageClass hanya berlaku untuk penginstalan Cassandra yang baru. Jika sudah menginstal class Cassandra, Anda harus menonaktifkan cluster yang ada untuk mengonfigurasi definisi StorageClass. Perubahan pada definisi StorageClass dari cluster Cassandra yang ada setelah penginstalan tidak didukung.

Apigee merekomendasikan deployment hybrid di dua region atau lebih, untuk menonaktifkan dan menginstal ulang satu region sekaligus mempertahankan data di region sekunder. Atau, Anda dapat menggunakan pencadangan campuran non-CSI untuk memulihkan data di penginstalan satu region, setelah menonaktifkan dan mengonfigurasi definisi StorageClass yang diperlukan.

Mengubah StorageClass default

Langkah-langkah berikut menjelaskan cara membuat StorageClass dan menjadikannya class default. Untuk informasi selengkapnya, lihat Mengubah class penyimpanan default dalam dokumentasi Kubernetes.

  1. Dapatkan nama StorageClass default saat ini:
    kubectl get sc

    Contoh:

    kubectl get sc
        NAME                    PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
        premium-rwo             pd.csi.storage.gke.io   Delete          WaitForFirstConsumer   true                   15h
        standard                kubernetes.io/gce-pd    Delete          Immediate              true                   15h
        standard-rwo (default)  pd.csi.storage.gke.io   Delete          WaitForFirstConsumer   true                   15h
      
  2. Deskripsikan StorageClass bernama standard-rwo. Perhatikan bahwa jenisnya adalah pd-balanced:
    kubectl describe sc standard-rwo

    Contoh:

    kubectl describe sc standard-rwo
    Name:                  standard-rwo
    IsDefaultClass:        Yes
    Annotations:           components.gke.io/layer=addon,storageclass.kubernetes.io/is-default-class=false
    Provisioner:           pd.csi.storage.gke.io
    Parameters:            type=pd-balanced
    AllowVolumeExpansion:  True
    MountOptions:          <none>
    ReclaimPolicy:         Delete
    VolumeBindingMode:     WaitForFirstConsumer
    Events:                <none>
  3. Buat file baru dengan nama storageclass.yaml.
  4. Tambahkan kode ini ke file. Perhatikan bahwa nama class baru adalah apigee-sc. Anda dapat menggunakan nama apa pun yang Anda sukai. Selain itu, perhatikan bahwa jenis penyimpanannya adalah pd-ssd:
    ---
    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: "apigee-sc"
    provisioner: pd.csi.storage.gke.io
    parameters:
      type: pd-ssd
      replication-type: none
    volumeBindingMode: WaitForFirstConsumer
    allowVolumeExpansion: true
  5. Terapkan StorageClass baru ke cluster Kubernetes Anda:
    kubectl apply -f storageclass.yaml
  6. Jalankan dua perintah berikut untuk mengubah StorageClass default:
    kubectl patch storageclass standard-rwo \
      -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
    kubectl patch storageclass apigee-sc \
      -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
  7. Jalankan perintah ini untuk memverifikasi bahwa StorageClass default baru disebut apigee-sc:
    kubectl get sc

    Contoh:

        NAME                  PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
        apigee-sc (default)   pd.csi.storage.gke.io    Delete          WaitForFirstConsumer   true                   14h
        premium-rwo           pd.csi.storage.gke.io   Delete          WaitForFirstConsumer   true                   15h
        standard              kubernetes.io/gce-pd    Delete          Immediate              true                   15h
        standard-rwo          pd.csi.storage.gke.io   Delete          WaitForFirstConsumer   true                   15h
      
  8. Jelaskan kedua StorageClass untuk memverifikasi nilai IsDefaultClass.
    kubectl describe sc apigee-sc
        Name:            apigee-sc
        IsDefaultClass:  Yes
        Annotations:     kubectl.kubernetes.io/last-applied-configuration={"allowVolumeExpansion":true,"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{},"name":"apigee-sc"},"parameters":{"replication-type":"none","type":"pd-ssd"},"provisioner":"pd.csi.storage.gke.io","volumeBindingMode":"WaitForFirstConsumer"},storageclass.kubernetes.io/is-default-class=true
        Provisioner:           pd.csi.storage.gke.io
        Parameters:            replication-type=none,type=pd-ssd
        AllowVolumeExpansion:  True
        MountOptions:          
        ReclaimPolicy:         Delete
        VolumeBindingMode:     WaitForFirstConsumer
        Events:                
        
    kubectl describe sc standard-rwo
        Name:                  standard-rwo
        IsDefaultClass:        No
        Annotations:           components.gke.io/layer=addon,storageclass.kubernetes.io/is-default-class=false
        Provisioner:           pd.csi.storage.gke.io
        Parameters:            type=pd-balanced
        AllowVolumeExpansion:  True
        MountOptions:          
        ReclaimPolicy:         Delete
        VolumeBindingMode:     WaitForFirstConsumer
        Events: