Configuração do StorageClass

O banco de dados do Cassandra usa volumes permanentes criados dinamicamente para armazenar dados. Para o funcionamento adequado do banco de dados, a Apigee exige que você configure uma definição de StorageClass que seja baseada em uma unidade de estado sólido (SSD).

Se você não tiver o SSD configurado para o Cassandra, este tópico explica como criar um novo StorageClass que usa o SSD e torná-lo a classe padrão. Quando o Cassandra é iniciado, ele usa essa StorageClass padrão.

As etapas descritas neste tópico para a configuração do StorageClass são aplicáveis somente a uma nova instalação do Cassandra. Se você já tiver uma classe do Cassandra instalada, precisará desativar o cluster existente para configurar a definição do StorageClass. Não há suporte para alterações na definição do StorageClass de um cluster existente do Cassandra após a instalação.

A Apigee recomenda implantar o modelo híbrido em duas ou mais regiões para desativar e reinstalar uma região, preservando os dados na região secundária. Como alternativa, é possível usar um backup híbrido não CSI para restaurar dados em uma instalação de região única, após a desativação e a configuração da definição do StorageClass necessária.

Alterar o StorageClass padrão

As etapas a seguir explicam como criar uma StorageClass e torná-la a classe padrão. Para mais informações, consulte Alterar a classe de armazenamento padrão na documentação do Kubernetes.

  1. Consiga o nome da StorageClass padrão atual:
    kubectl get sc

    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. Descreva a StorageClass chamada standard-rwo. Observe que o tipo dela é pd-balanced:
    kubectl describe sc standard-rwo

    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. Crie um novo arquivo chamado storageclass.yaml.
  4. Adicione este código ao arquivo. Observe que o nome da nova classe é apigee-sc. Use o nome que preferir. Além disso, 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 cluster do Kubernetes:
    kubectl apply -f storageclass.yaml
  6. Execute os dois comandos a seguir para alterar a StorageClass padrão:
    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 padrão é chamada apigee-sc:
    kubectl get sc

    Exemplo:

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