StorageClass-Konfiguration

Die Cassandra-Datenbank verwendet dynamisch erstellte nichtflüchtige Volumes zum Speichern von Daten. Für eine ordnungsgemäße Datenbankfunktion müssen Sie in Apigee eine StorageClass-Definition konfigurieren, die von einem Solid-State-Laufwerk (SSD) unterstützt wird.

Wenn Sie derzeit keine SSD für Cassandra konfiguriert haben, wird in diesem Thema erläutert, wie Sie eine neue StorageClass erstellen, die SSD verwendet, und als Standardklasse festlegen. Wenn Cassandra gestartet wird, wird diese Standard-StorageClass verwendet.

Die in diesem Thema beschriebenen Schritte für die StorageClass-Konfiguration gelten nur für eine neue Cassandra-Installation. Wenn Sie bereits eine Cassandra-Klasse installiert haben, müssen Sie den vorhandenen Cluster außer Betrieb nehmen, um die StorageClass-Definition zu konfigurieren. Änderungen an der StorageClass-Definition eines vorhandenen Cassandra-Clusters nach der Installation werden nicht unterstützt.

Apigee empfiehlt, Hybrid in zwei oder mehr Regionen bereitzustellen, um eine Region außer Betrieb zu nehmen und neu zu installieren, während die Daten in der sekundären Region erhalten bleiben. Alternativ können Sie eine Nicht-CSI-Hybridsicherung verwenden, um Daten in einer Installation in einer einzelnen Region nach der Außerbetriebnahme und Konfiguration der erforderlichen StorageClass-Definition wiederherzustellen.

Standard-StorageClass ändern

In den folgenden Schritten wird erläutert, wie Sie eine StorageClass erstellen und als Standardklasse festlegen. Weitere Informationen finden Sie in der Kubernetes-Dokumentation unter Standardspeicherklasse ändern.

  1. Rufen Sie den Namen der aktuellen Standard-StorageClass ab:
    kubectl get sc

    Beispiel:

    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. Beschreiben Sie die StorageClass mit dem Namen standard-rwo. Der Typ lautet pd-balanced:
    kubectl describe sc standard-rwo

    Beispiel:

    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. Erstellen Sie eine neue Datei mit dem Namen storageclass.yaml:
  4. Fügen Sie diesen Code in die Datei ein. Beachten Sie, dass der Name der neuen Klasse apigee-sc ist. Sie können einen beliebigen Namen verwenden. Beachten Sie auch, dass der Speichertyp pd-ssd ist:
    ---
    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. Wenden Sie die neue StorageClass auf Ihren Kubernetes-Cluster an:
    kubectl apply -f storageclass.yaml
  6. Führen Sie die folgenden beiden Befehle aus, um die Standard-StorageClass zu ändern:
    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. Führen Sie den folgenden Befehl aus, um zu prüfen, ob die neue Standard-StorageClass apigee-sc heißt:
    kubectl get sc

    Beispiel:

    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. Beschreiben Sie beide StorageClass, um den Wert von IsDefaultClass zu prüfen.
    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: