Chapitre 5. Interface de stockage de conteneurs (CSI)
5.1. Configuration des volumes CSI
L’interface de stockage de conteneurs (CSI) permet à OpenShift Dedicated de consommer le stockage à partir des extrémités arrière du stockage qui implémentent l’interface CSI en tant que stockage persistant.
Le logiciel OpenShift Dedicated 4 prend en charge la version 1.6.0 de la spécification CSI.
5.1.1. Architecture CSI
Les pilotes CSI sont généralement expédiés sous forme d’images de conteneur. Ces conteneurs ne sont pas au courant d’OpenShift Dedicated où ils s’exécutent. Afin d’utiliser l’arrière de stockage compatible CSI dans OpenShift Dedicated, l’administrateur du cluster doit déployer plusieurs composants qui servent de pont entre OpenShift Dedicated et le pilote de stockage.
Le diagramme suivant fournit une vue d’ensemble de haut niveau sur les composants fonctionnant en pods dans le cluster OpenShift dédié.

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
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 d’attache et de détachement d’OpenShift dédiés aux appels respectifs ControllerPublish et ControllerUnpublish au pilote CSI.
- Conteneur de provisionneur CSI externe qui traduit la disposition et supprime les appels d’OpenShift dédiés à leurs appels 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 s’exécuter pour implémenter l’API de pièce jointe OpenShift Dédicated nécessaire.
5.1.1.2. Jeu de démon de pilote CSI
Le jeu de démon de pilote CSI exécute un pod sur chaque nœud qui permet à OpenShift Dedicated 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 plugin OpenShift Dedicated n’utilisera l’ensemble de plugins de nœud des 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 OpenShift Dedicated
Le logiciel OpenShift Dedicated installe certains pilotes CSI par défaut, offrant aux utilisateurs des options de stockage qui ne sont pas possibles avec les 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, OpenShift Dedicated 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.
Les pilotes AWS EFS et GCP Filestore CSI ne sont pas installés par défaut et doivent être installés manuellement. Afin d’obtenir des instructions sur l’installation du pilote AWS EFS CSI, consultez Configuration up AWS Elastic File Service CSI Driver Operator. Afin d’obtenir des instructions sur l’installation du pilote GCP Filestore CSI, consultez Google Compute Platform Filestore CSI Driver Operator.
Le tableau suivant décrit les pilotes CSI qui sont pris en charge par OpenShift Dedicated et les fonctionnalités de CSI qu’ils prennent en charge, tels que les instantanés de volume et le redimensionnement.
Dans le cas où votre pilote CSI n’est pas listé dans le tableau suivant, vous devez suivre les instructions d’installation fournies par votre fournisseur de stockage CSI pour utiliser les fonctionnalités CSI prises en charge.
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 |
|
|
|
|
|
Google Compute Platform (GCP) disque persistant (PD) |
✅ |
|
✅[2] |
✅ |
|
GCP Filestore |
✅ |
|
|
✅ |
|
Le stockage LVM |
✅ |
|
✅ |
✅ |
|
5.1.3. Approvisionnement dynamique
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 OpenShift Dedicated 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é.
oc create -f - << EOF apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: <storage-class> annotations: storageclass.kubernetes.io/is-default-class: "true" provisioner: <provisioner-name> parameters: EOF
# oc create -f - << EOF apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: <storage-class>
1 annotations: storageclass.kubernetes.io/is-default-class: "true" provisioner: <provisioner-name>
2 parameters: EOF
Copy to Clipboard Copied!
5.1.4. Exemple en utilisant le pilote CSI
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! Exemple de sortie
--> Deploying template "openshift/mysql-persistent" to project default ...
--> Deploying template "openshift/mysql-persistent" to project default ...
Copy to Clipboard Copied! oc get pvc
# oc get pvc
Copy to Clipboard Copied! 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!