La base de données Cassandra stocke les données à l'aide de volumes persistants créés dynamiquement. Pour garantir le bon fonctionnement de la base de données, Apigee nécessite la configuration d'une définition StorageClass reposant sur un disque dur SSD.
Si aucun disque SSD n'est actuellement configuré pour Cassandra, cet article explique comment créer une classe StorageClass qui utilise SSD et en fait la classe par défaut. Lorsque la base de données Cassandra démarre, elle utilise cette classe StorageClass par défaut.
Les étapes décrites dans cet article pour la configuration de StorageClass ne s'appliquent qu'à une nouvelle installation Cassandra. Si une classe Cassandra est déjà installée, vous devez mettre hors service le cluster existant afin de configurer la définition StorageClass. Les modifications apportées à la définition StorageClass d'un cluster Cassandra existant après l'installation ne sont pas acceptées.
Apigee recommande de déployer Apigee hybrid dans au moins deux régions afin de mettre hors service et de réinstaller une région tout en préservant les données dans la région secondaire. Vous pouvez également utiliser une sauvegarde hybride non CSI pour restaurer les données dans une installation régionale après la mise hors service et la configuration de la définition StorageClass requise.
Modifier la StorageClass par défaut
Les étapes suivantes expliquent comment créer une classe StorageClass et en faire la classe par défaut. Pour plus d'informations, consultez la section Modifier la classe de stockage par défaut dans la documentation de Kubernetes.
- Obtenez le nom de la classe StorageClass actuelle par défaut :
kubectl get sc
Exemple :
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 - Décrivez la StorageClass nommée
standard-rwo
. Notez que son type estpd-balanced
:kubectl describe sc standard-rwo
Exemple :
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>
- Créez un fichier appelé
storageclass.yaml
. - Ajoutez ce code au fichier. Notez que le nom de la nouvelle classe est
apigee-sc
. Vous pouvez utiliser n'importe quel nom. Notez également que le type de stockage estpd-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
- Appliquez la nouvelle StorageClass à votre cluster Kubernetes :
kubectl apply -f storageclass.yaml
- Exécutez les deux commandes suivantes pour modifier la StorageClass par défaut :
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"}}}'
- Exécutez cette commande pour vérifier que la nouvelle StorageClass par défaut s'appelle bien
apigee-sc
:kubectl get sc
Exemple :
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
- Décrivez la StorageClass pour vérifier la valeur 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: