Configuração da StorageClass

A base de dados Cassandra usa volumes persistentes criados dinamicamente para armazenar dados. Para o funcionamento adequado da base de dados, o Apigee requer que configure uma definição de StorageClass com base num disco de estado sólido (SSD).

Se não tiver atualmente o SSD configurado para o Cassandra, este tópico explica como criar uma nova StorageClass que usa o SSD e torná-la na classe predefinida. Quando o Cassandra é iniciado, usa esta StorageClass predefinida.

Os passos descritos neste tópico para a configuração de StorageClass só são aplicáveis a uma instalação nova do Cassandra. Se já tiver uma classe Cassandra instalada, tem de desativar o cluster existente para configurar a definição StorageClass. As alterações à definição de StorageClass de um cluster do Cassandra existente após a instalação não são suportadas.

A Apigee recomenda a implementação do híbrido em duas ou mais regiões, para desativar e reinstalar uma região e, ao mesmo tempo, preservar os dados na região secundária. Em alternativa, pode usar uma cópia de segurança híbrida não CSI para restaurar dados numa instalação de região única, após a desativação e a configuração da definição StorageClass necessária.

Altere a StorageClass predefinida

Os passos seguintes explicam como criar uma StorageClass e torná-la a classe predefinida. Para mais informações, consulte Altere a classe de armazenamento predefinida na documentação do Kubernetes.

  1. Obtenha o nome da StorageClass predefinida atual:
    kubectl get sc

    Por exemplo:

    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. Descrever a StorageClass denominada standard-rwo. Tenha em atenção que o respetivo tipo é pd-balanced:
    kubectl describe sc standard-rwo

    Por exemplo:

    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. Cria um novo ficheiro denominado storageclass.yaml.
  4. Adicione este código ao ficheiro. Tenha em atenção que o nome da nova classe é apigee-sc. Pode usar qualquer nome que quiser. Tenha também em atenção que o tipo de armazenamento é 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. Aplique a nova StorageClass ao seu cluster do Kubernetes:
    kubectl apply -f storageclass.yaml
  6. Execute os dois comandos seguintes para alterar a StorageClass predefinida:
    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. Execute este comando para verificar se a nova StorageClass predefinida se chama apigee-sc:
    kubectl get sc

    Por exemplo:

        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. Descreva o StorageClass para validar o 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: