Chapitre 5. Interface de stockage de conteneurs (CSI)
5.1. Configuration des volumes CSI Copier lienLien copié sur presse-papiers!
L’interface de stockage de conteneurs (CSI) permet au service Red Hat OpenShift sur AWS de consommer du stockage à partir des extrémités arrière du stockage qui implémentent l’interface CSI en tant que stockage persistant.
Le Red Hat OpenShift Service sur AWS 4 prend en charge la version 1.6.0 de la spécification CSI.
5.1.1. Architecture CSI Copier lienLien copié sur presse-papiers!
Les pilotes CSI sont généralement expédiés sous forme d’images de conteneur. Ces conteneurs ne sont pas au courant de Red Hat OpenShift Service sur AWS où ils s’exécutent. Afin d’utiliser l’arrière de stockage compatible CSI dans Red Hat OpenShift Service sur AWS, l’administrateur du cluster doit déployer plusieurs composants qui servent de pont entre Red Hat OpenShift Service sur AWS et le pilote de stockage.
Le diagramme suivant fournit une vue d’ensemble de haut niveau sur les composants fonctionnant en pods dans le Red Hat OpenShift Service sur AWS cluster.
Il est possible d’exécuter plusieurs pilotes CSI pour différentes extrémités de stockage. Chaque pilote a besoin de son propre déploiement de contrôleurs externes et d’un démon défini avec le pilote et le registraire CSI.
5.1.1.1. Contrôleurs CSI externes Copier lienLien copié sur presse-papiers!
Contrôleurs CSI externes est un déploiement qui déploie un ou plusieurs pods avec cinq conteneurs:
- Le conteneur snapshotter montre les objets VolumeSnapshot et VolumeSnapshotContent et est responsable de la création et de la suppression de l’objet VolumeSnapshotContent.
- Le conteneur de resizer est un conteneur sidecar qui surveille les mises à jour et déclenche les opérations ControllerExpandVolume par rapport à un point de terminaison CSI si vous demandez plus de stockage sur l’objet PersistentVolumeClaim.
- Le conteneur de fixation CSI externe traduit les appels de connexion et de détachement de Red Hat OpenShift Service sur AWS vers les appels respectifs ControllerPublish et ControllerUnpublish au pilote CSI.
- Conteneur de provisionneur CSI externe qui traduit la fourniture et supprime les appels de Red Hat OpenShift Service sur AWS pour les appels respectifs CreateVolume et DeleteVolume au pilote CSI.
- C) Un conteneur de conducteur CSI.
L’attacheur CSI et les conteneurs de provisionner CSI communiquent avec le conteneur conducteur CSI en utilisant UNIX Domain Sockets, en veillant à ce qu’aucune communication CSI ne quitte la pod. Le conducteur CSI n’est pas accessible de l’extérieur de la gousse.
Les opérations de fixation, de détachement, de provision et de suppression exigent généralement que le pilote CSI utilise des informations d’identification sur le backend de stockage. Exécutez les pods de contrôleur CSI sur les nœuds d’infrastructure afin que les informations d’identification ne soient jamais divulguées aux processus utilisateurs, même en cas de violation de sécurité catastrophique sur un nœud de calcul.
L’attacheur externe doit également fonctionner pour les pilotes CSI qui ne prennent pas en charge les opérations d’attache ou de détachement de tiers. L’attacheur externe n’émettra aucune opération ControllerPublish ou ControllerUnpublish au pilote CSI. Cependant, il doit toujours fonctionner pour implémenter le service Red Hat OpenShift nécessaire sur l’API de pièce jointe AWS.
5.1.1.2. Jeu de démon de pilote CSI Copier lienLien copié sur presse-papiers!
Le jeu de démon de pilote CSI exécute un pod sur chaque nœud qui permet à Red Hat OpenShift Service sur AWS de monter le stockage fourni par le pilote CSI sur le nœud et de l’utiliser dans les charges de travail des utilisateurs (pods) comme volumes persistants (PV). Le pod avec le pilote CSI installé contient les conteneurs suivants:
- CSI Driver registrar, qui enregistre le pilote CSI dans le service de nœud ouvert fonctionnant sur le nœud. Le processus openshift-node s’exécute sur le nœud puis se connecte directement au pilote CSI à l’aide du Socket de Domaine UNIX disponible sur le nœud.
- C’est un conducteur de CSI.
Le pilote CSI déployé sur le nœud doit avoir le moins d’informations d’identification à l’arrière du stockage que possible. Le service Red Hat OpenShift sur AWS n’utilisera l’ensemble de plugins de nœuds d’appels CSI tels que NodePublish/NodeUnpublish et NodeStage/NodeUnstage, si ces appels sont implémentés.
5.1.2. Pilotes CSI pris en charge par Red Hat OpenShift Service sur AWS Copier lienLien copié sur presse-papiers!
Le service OpenShift Red Hat sur AWS installe certains pilotes CSI par défaut, offrant aux utilisateurs des options de stockage qui ne sont pas possibles avec des plugins de volume dans l’arbre.
Afin de créer des volumes persistants fournis par CSI qui s’adaptent à ces actifs de stockage pris en charge, Red Hat OpenShift Service sur AWS installe par défaut l’opérateur de pilotes CSI nécessaire, le pilote CSI et la classe de stockage requise. Consultez la documentation de l’opérateur CSI pour plus de détails sur l’espace de noms par défaut de l’opérateur et du conducteur par défaut.
Le tableau suivant décrit les pilotes CSI qui sont installés avec Red Hat OpenShift Service sur AWS et les fonctionnalités de CSI qu’ils prennent en charge, tels que les instantanés de volume et le redimensionnement.
En plus des pilotes énumérés dans le tableau suivant, ROSA fonctionne avec les pilotes CSI de fournisseurs de stockage tiers. Le Red Hat ne supervise pas les fournisseurs tiers ou les pilotes CSI connectés et les fournisseurs contrôlent entièrement le code source, le déploiement, l’exploitation et la compatibilité Kubernetes. Ces provisionneurs de volume sont considérés comme gérés par le client et les fournisseurs respectifs sont responsables de fournir un soutien. Consultez les responsabilités partagées pour Red Hat OpenShift Service sur la matrice AWS pour plus d’informations.
Conducteur CSI | Instantanés de volume CSI | Aperçus du groupe de volume CSI [1] | Clonage CSI | CSI redimensionnement | Les volumes éphémères en ligne |
---|---|---|---|---|---|
AWS EBS |
✅ |
|
|
✅ |
|
AWS EFS |
|
|
|
|
|
Le stockage LVM |
✅ |
|
✅ |
✅ |
|
5.1.3. Approvisionnement dynamique Copier lienLien copié sur presse-papiers!
Le provisionnement dynamique du stockage persistant dépend des capacités du pilote CSI et de l’arrière de stockage sous-jacent. Le fournisseur du pilote CSI doit documenter comment créer une classe de stockage dans Red Hat OpenShift Service sur AWS et les paramètres disponibles pour la configuration.
La classe de stockage créée peut être configurée pour activer le provisionnement dynamique.
Procédure
Créez une classe de stockage par défaut qui garantit que tous les PVC qui ne nécessitent aucune classe de stockage spéciale sont fournis par le pilote CSI installé.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.1.4. Exemple en utilisant le pilote CSI Copier lienLien copié sur presse-papiers!
L’exemple suivant installe un modèle MySQL par défaut sans aucune modification du modèle.
Conditions préalables
- Le pilote CSI a été déployé.
- La classe de stockage a été créée pour le provisionnement dynamique.
Procédure
Créer le modèle MySQL:
oc new-app mysql-persistent
# oc new-app mysql-persistent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
--> Deploying template "openshift/mysql-persistent" to project default ...
--> Deploying template "openshift/mysql-persistent" to project default ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pvc
# oc get pvc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE mysql Bound kubernetes-dynamic-pv-3271ffcb4e1811e8 1Gi RWO cinder 3s
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE mysql Bound kubernetes-dynamic-pv-3271ffcb4e1811e8 1Gi RWO cinder 3s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow