La base de datos de Cassandra usa volúmenes persistentes creados de forma dinámica para almacenar datos. Para que una base de datos funcione de forma adecuada, Apigee requiere que configures una definición de StorageClass con el respaldo de una unidad de estado sólido (SSD).
Si no tienes SSD configurado para Cassandra, en este tema se explica cómo crear una nueva StorageClass que use SSD y convertirla en la clase predeterminada. Cuando Cassandra se inicie, usará esta definición de StorageClass predeterminada.
Los pasos descritos en este tema para la configuración de StorageClass solo se aplican a una instalación nueva de Cassandra. Si ya tienes una clase de Cassandra instalada, debes retirar el clúster existente para configurar la definición de StorageClass. No se admiten los cambios en la definición de StorageClass de un clúster de Cassandra existente después de la instalación.
Apigee recomienda implementar hybrid en dos o más regiones para retirar y volver a instalar una región mientras conservas los datos en la región secundaria. Como alternativa, puedes usar una copia de seguridad híbrida que no sea de CSI para restablecer los datos en una instalación de una sola región, después de retirar y configurar la definición de StorageClass requerida.
Cambia la definición de StorageClass predeterminada
En los siguientes, pasos se explica cómo crear una StorageClass y convertirla en la clase predeterminada. Para obtener más información, consulta Cambia la clase de almacenamiento predeterminada en la documentación de Kubernetes.
- Obtén el nombre de la StorageClass 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 - Describe la StorageClass llamada
standard-rwo
. Ten en cuenta que su tipo espd-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>
- Crea un archivo nuevo llamado
storageclass.yaml
de la siguiente manera: - Agrega este código al archivo. Ten en cuenta que el nombre de la clase nueva es
apigee-sc
. Puedes usar cualquier nombre que desees. Además, ten en cuenta que el tipo de almacenamiento espd-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
- Aplica la StorageClass nueva a tu clúster de Kubernetes:
kubectl apply -f storageclass.yaml
- Ejecuta los dos comandos siguientes para cambiar la StorageClass 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"}}}'
- Ejecuta este comando para verificar que la StorageClass predeterminada nueva se llame
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
- Describe ambas 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: