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.
- 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 - 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>
- Cria um novo ficheiro denominado
storageclass.yaml
. - 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
- Aplique a nova StorageClass ao seu cluster do Kubernetes:
kubectl apply -f storageclass.yaml
- 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"}}}'
- 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
- 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: