Configuración de StorageClass

La base de datos de Cassandra usa volúmenes persistentes creados dinámicamente para almacenar datos. Para que la base de datos funcione correctamente, Apigee requiere que configures una definición de StorageClass respaldada por una unidad de estado sólido (SSD).

Si no tienes configurado SSD para Cassandra, en este tema se explica cómo crear una StorageClass que use SSD y cómo convertirla en la clase predeterminada. Cuando se inicie Cassandra, usará este StorageClass predeterminado.

Los pasos descritos en este tema para configurar StorageClass solo se aplican a una instalación nueva de Cassandra. Si ya tienes instalada una clase de Cassandra, debes retirar el clúster para configurar la definición de StorageClass. No se admiten cambios en la definición de StorageClass de un clúster de Cassandra después de la instalación.

Apigee recomienda implementar Hybrid en dos o más regiones para poder retirar y reinstalar una región sin perder los datos de la región secundaria. También puede usar una copia de seguridad híbrida no CSI para restaurar datos en una instalación de una sola región después de retirar y configurar la definición de StorageClass necesaria.

Cambiar la clase de almacenamiento predeterminada

En los siguientes pasos se explica cómo crear un StorageClass y convertirlo en la clase predeterminada. Para obtener más información, consulta Cambiar la clase de almacenamiento predeterminada en la documentación de Kubernetes.

  1. Obtén el nombre de la clase de almacenamiento predeterminada actual:
    kubectl get sc

    Por ejemplo:

    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. Describe la StorageClass llamada standard-rwo. Ten en cuenta que su tipo es pd-balanced:
    kubectl describe sc standard-rwo

    Por ejemplo:

    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 archivo llamado storageclass.yaml.
  4. Añade este código al archivo. Ten en cuenta que el nombre de la nueva clase es apigee-sc. Puedes usar el nombre que quieras. Además, ten en cuenta que el tipo de almacenamiento es 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. Aplica la nueva StorageClass a tu clúster de Kubernetes:
    kubectl apply -f storageclass.yaml
  6. Ejecuta los dos comandos siguientes para cambiar la clase de almacenamiento predeterminada:
    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. Ejecuta este comando para verificar que la nueva StorageClass predeterminada se llama apigee-sc:
    kubectl get sc

    Por ejemplo:

    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. Describe ambos StorageClass para verificar el valor de 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: