Configurazione StorageClass

Il database Cassandra utilizza volumi permanenti creati dinamicamente per archiviare i dati. Per il corretto funzionamento del database, Apigee richiede di configurare una definizione di StorageClass basata su un'unità a stato solido (SSD).

Se al momento non hai configurato l'unità SSD per Cassandra, questo argomento spiega come creare un nuovo StorageClass che utilizzi l'unità SSD e impostarlo come classe predefinita. All'avvio, Cassandra utilizzerà questa classe di archiviazione predefinita.

I passaggi descritti in questo argomento per la configurazione di StorageClass sono applicabili solo a una nuova installazione di Cassandra. Se hai già installato un corso Cassandra, devi ritirare il cluster esistente per configurare la definizione di StorageClass. Le modifiche alla definizione di StorageClass di un cluster Cassandra esistente dopo l'installazione non sono supportate.

Apigee consiglia di eseguire il deployment dell'architettura ibrida in due o più regioni, per poter dismettere e reinstallare una regione preservando i dati nella regione secondaria. In alternativa, puoi utilizzare un backup ibrido non CSI per ripristinare i dati in un'installazione in una singola regione, dopo la disattivazione e la configurazione della definizione StorageClass richiesta.

Modificare la classe di archiviazione predefinita

I passaggi riportati di seguito spiegano come creare una classe StorageClass e impostarla come predefinita. Per ulteriori informazioni, consulta Modificare la classe di archiviazione predefinita nella documentazione di Kubernetes.

  1. Recupera il nome della classe StorageClass predefinita corrente:
    kubectl get sc

    Ad esempio:

    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. Descrivi la classe di archiviazione denominata standard-rwo. Tieni presente che il suo tipo è pd-balanced:
    kubectl describe sc standard-rwo

    Ad esempio:

    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. Crea un nuovo file denominato storageclass.yaml.
  4. Aggiungi questo codice al file. Tieni presente che il nome del nuovo corso è apigee-sc. Puoi utilizzare il nome che preferisci. Inoltre, tieni presente che il tipo di archiviazione è 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. Applica il nuovo StorageClass al cluster Kubernetes:
    kubectl apply -f storageclass.yaml
  6. Esegui i due comandi seguenti per modificare StorageClass predefinito:
    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. Esegui questo comando per verificare che la nuova classe di archiviazione predefinita sia denominata apigee-sc:
    kubectl get sc

    Ad esempio:

    kubectl get sc
      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. Descrivi entrambe le classi StorageClass per verificare il valore di 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: