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 nova instalação 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 híbrida em duas ou mais regiões para desativar e reinstalar uma região, mantendo 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:
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
- 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: