5.19. Opérateur de pilote VMware vSphere CSI
5.19.1. Vue d'ensemble
OpenShift Container Platform peut provisionner des volumes persistants (PV) à l'aide du pilote VMware vSphere Container Storage Interface (CSI) pour les volumes Virtual Machine Disk (VMDK).
Il est recommandé de se familiariser avec le stockage persistant et la configuration des volumes CSI lorsque l'on travaille avec un opérateur et un pilote CSI.
Pour créer des volumes persistants (PV) provisionnés par CSI qui se montent sur des ressources de stockage vSphere, OpenShift Container Platform installe l'opérateur vSphere CSI Driver Operator et le pilote vSphere CSI par défaut dans l'espace de noms openshift-cluster-csi-drivers
.
-
vSphere CSI Driver Operator: L'opérateur fournit une classe de stockage, appelée
thin-csi
, que vous pouvez utiliser pour créer des réclamations de volumes persistants (PVC). L'opérateur du pilote vSphere CSI prend en charge le provisionnement dynamique des volumes en permettant la création de volumes de stockage à la demande, ce qui évite aux administrateurs de clusters de devoir préprovisionner le stockage. - vSphere CSI driver: Le pilote permet de créer et de monter des PV vSphere. Dans OpenShift Container Platform 4.12, la version du pilote est 2.6.1. Le pilote vSphere CSI prend en charge tous les systèmes de fichiers pris en charge par la version sous-jacente de Red Hat Core OS, y compris XFS et Ext4. Pour plus d'informations sur les systèmes de fichiers pris en charge, voir Vue d'ensemble des systèmes de fichiers disponibles.
OpenShift Container Platform utilise par défaut un plugin in-tree (non-CSI) pour provisionner le stockage vSphere.
Dans les prochaines versions d'OpenShift Container Platform, les volumes provisionnés à l'aide des plugins in-tree existants sont prévus pour une migration vers leur pilote CSI équivalent. La migration automatique CSI devrait être transparente. La migration ne modifie pas la façon dont vous utilisez tous les objets API existants, tels que les volumes persistants, les réclamations de volumes persistants et les classes de stockage. Pour plus d'informations sur la migration, voir Migration automatique CSI.
Après la migration complète, les plugins in-tree seront éventuellement supprimés dans les futures versions d'OpenShift Container Platform.
Le pilote vSphere CSI prend en charge le provisionnement dynamique et statique. Lorsque vous utilisez le provisionnement statique dans les spécifications des PV, n'utilisez pas la clé storage.kubernetes.io/csiProvisionerIdentity
dans csi.volumeAttributes
car cette clé indique des PV provisionnés dynamiquement.
5.19.2. À propos du CSI
Les fournisseurs de stockage ont traditionnellement fourni des pilotes de stockage dans le cadre de Kubernetes. Avec la mise en œuvre de l'interface de stockage des conteneurs (CSI), les fournisseurs tiers peuvent à la place fournir des plugins de stockage à l'aide d'une interface standard sans jamais avoir à modifier le code de base de Kubernetes.
Les opérateurs CSI offrent aux utilisateurs d'OpenShift Container Platform des options de stockage, telles que les instantanés de volume, qui ne sont pas possibles avec les plugins de volume dans l'arborescence.
5.19.3. politique de stockage vSphere
La classe de stockage vSphere CSI Operator Driver utilise la politique de stockage de vSphere. OpenShift Container Platform crée automatiquement une politique de stockage qui cible le datastore configuré dans la configuration du cloud :
kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: thin-csi provisioner: csi.vsphere.vmware.com parameters: StoragePolicyName: "$openshift-storage-policy-xxxx" volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: false reclaimPolicy: Delete
5.19.4. Prise en charge des volumes vSphere ReadWriteMany
Si l'environnement vSphere sous-jacent prend en charge le service de fichiers vSAN, l'opérateur de pilote de l'interface de stockage de conteneurs (CSI) vSphere installé par OpenShift Container Platform prend en charge le provisionnement des volumes ReadWriteMany (RWX). Si le service de fichiers vSAN n'est pas configuré, le seul mode d'accès disponible est ReadWriteOnce (RWO). Si le service de fichiers vSAN n'est pas configuré et que vous demandez RWX, le volume n'est pas créé et une erreur est consignée.
Pour plus d'informations sur la configuration du service de fichiers vSAN dans votre environnement, voir Service de fichiers vSAN.
Vous pouvez demander des volumes RWX en effectuant la demande de volume persistant (PVC) suivante :
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: myclaim spec: resources: requests: storage: 1Gi accessModes: - ReadWriteMany storageClassName: thin-csi
La demande d'un PVC du type de volume RWX devrait entraîner le provisionnement de volumes persistants (PV) soutenus par le service de fichiers vSAN.
5.19.5. VMware vSphere CSI Driver Operator requirements
Pour installer vSphere CSI Driver Operator, les conditions suivantes doivent être remplies :
- VMware vSphere version 7.0 Update 2 or later
- vCenter 7.0 Update 2 or later
- Virtual machines of hardware version 15 or later
- Aucun pilote vSphere CSI tiers n'est déjà installé dans le cluster
Si un pilote vSphere CSI tiers est présent dans le cluster, OpenShift Container Platform ne l'écrase pas. La présence d'un pilote vSphere CSI tiers empêche OpenShift Container Platform de se mettre à niveau vers OpenShift Container Platform 4.13 ou une version ultérieure.
To remove a third-party CSI driver, see Removing a third-party vSphere CSI Driver.
5.19.6. Suppression d'un pilote d'opérateur vSphere CSI tiers
OpenShift Container Platform 4.10, et les versions ultérieures, inclut une version intégrée du pilote d'opérateur vSphere Container Storage Interface (CSI) qui est prise en charge par Red Hat. Si vous avez installé un pilote vSphere CSI fourni par la communauté ou un autre fournisseur, les mises à jour vers la prochaine version majeure d'OpenShift Container Platform, telle que 4.13, ou ultérieure, pourraient être désactivées pour votre cluster.
Les clusters OpenShift Container Platform 4.12, et ultérieurs, sont toujours entièrement pris en charge, et les mises à jour vers les versions z-stream de 4.12, telles que 4.12.z, ne sont pas bloquées, mais vous devez corriger cet état en supprimant le pilote vSphere CSI tiers avant que les mises à jour vers la prochaine version majeure d'OpenShift Container Platform ne puissent avoir lieu. La suppression du pilote vSphere CSI tiers ne nécessite pas la suppression des objets de volume persistant (PV) associés, et aucune perte de données ne devrait se produire.
Ces instructions peuvent ne pas être complètes ; il convient donc de consulter le guide de désinstallation du fournisseur ou du prestataire communautaire pour s'assurer de la suppression du pilote et de ses composants.
Pour désinstaller le pilote vSphere CSI tiers :
- Supprimez les objets tiers vSphere CSI Driver (VMware vSphere Container Storage Plugin) Deployment et Daemonset.
- Supprimer les objets configmap et secret qui ont été installés précédemment avec le pilote vSphere CSI.
Supprimez l'objet pilote vSphere CSI tiers
CSIDriver
:~ $ oc delete CSIDriver csi.vsphere.vmware.com
csidriver.storage.k8s.io "csi.vsphere.vmware.com" deleted
Une fois que vous avez supprimé le pilote vSphere CSI tiers du cluster OpenShift Container Platform, l'installation du pilote vSphere CSI Operator Driver de Red Hat reprend automatiquement, et toutes les conditions qui pourraient bloquer les mises à niveau vers OpenShift Container Platform 4.11, ou une version ultérieure, sont automatiquement supprimées. Si vous aviez des objets vSphere CSI PV existants, leur cycle de vie est maintenant géré par le pilote vSphere CSI Operator Driver de Red Hat.
5.19.7. Configuration de la topologie vSphere CSI
OpenShift Container Platform offre la possibilité de déployer OpenShift Container Platform for vSphere sur différentes zones et régions, ce qui vous permet de déployer sur plusieurs clusters de calcul, contribuant ainsi à éviter un point de défaillance unique.
OpenShift Container Platform sur vSphere ne prend pas en charge plusieurs centres de données.
Pour ce faire, il faut définir des catégories de zones et de régions dans vCenter, puis assigner ces catégories à différents domaines de défaillance, tels qu'un cluster de calcul, en créant des balises pour ces catégories de zones et de régions. Après avoir créé les catégories appropriées et attribué des balises aux objets vCenter, vous pouvez créer des ensembles de machines supplémentaires qui créent des machines virtuelles (VM) responsables de la planification des pods dans ces domaines de défaillance.
Procédure
Dans l'interface graphique du client VMware vCenter vSphere, définissez les catégories et les balises appropriées pour les zones et les régions.
Bien que vSphere vous permette de créer des catégories avec n'importe quel nom arbitraire, OpenShift Container Platform recommande fortement l'utilisation des noms
openshift-region
etopenshift-zone
pour définir la topologie.L'exemple suivant définit deux domaines de défaillance avec une région et deux zones :
Tableau 5.4. topologie vSphere avec une région et deux zones Grappe de calcul Domaine de défaillance Description Cluster de calcul : ocp1, Datacenter : Atlanta
openshift-region : us-east-1 (tag), openshift-zone : us-east-1a (tag)
Ceci définit un domaine de défaillance dans la région us-east-1 avec la zone us-east-1a.
Groupe d'ordinateurs : ocp2, Centre de données : Atlanta
openshift-region : us-east-1 (tag), openshift-zone : us-east-1b (tag)
Cela définit un domaine de défaillance différent au sein de la même région, appelé us-east-1b.
Pour plus d'informations sur les catégories et les balises vSphere, voir la documentation VMware vSphere.
Pour permettre au pilote de l'interface de stockage de conteneurs (CSI) de détecter cette topologie, modifiez le fichier YAML de l'objet
clusterCSIDriver
, sectiondriverConfig
:-
Spécifiez les catégories
openshift-zone
etopenshift-region
que vous avez créées précédemment. Définir
driverType
àvSphere
.~ $ oc edit clustercsidriver csi.vsphere.vmware.com -o yaml
Exemple de sortie
apiVersion: operator.openshift.io/v1 kind: ClusterCSIDriver metadata: name: csi.vsphere.vmware.com spec: logLevel: Normal managementState: Managed observedConfig: null operatorLogLevel: Normal unsupportedConfigOverrides: null driverConfig: driverType: vSphere 1 vSphere: topologyCategories: 2 - openshift-zone - openshift-region
-
Spécifiez les catégories
Vérifiez que l'objet
CSINode
possède des clés de topologie en exécutant les commandes suivantes :~ $ oc get csinode
Exemple de sortie
NAME DRIVERS AGE co8-4s88d-infra-2m5vd 1 27m co8-4s88d-master-0 1 70m co8-4s88d-master-1 1 70m co8-4s88d-master-2 1 70m co8-4s88d-worker-j2hmg 1 47m co8-4s88d-worker-mbb46 1 47m co8-4s88d-worker-zlk7d 1 47m
~ $ oc get csinode co8-4s88d-worker-j2hmg -o yaml
Exemple de sortie
... spec: drivers: - allocatable: count: 59 name: csi-vsphere.vmware.com nodeID: co8-4s88d-worker-j2hmg topologyKeys: 1 - topology.csi.vmware.com/openshift-zone - topology.csi.vmware.com/openshift-region
- 1
- Clés de topologie des catégories vSphere
openshift-zone
etopenshift-region
.
NoteCSINode
peuvent mettre un certain temps à recevoir les informations topologiques mises à jour. Après la mise à jour du pilote, les objetsCSINode
devraient contenir des clés de topologie.Créer une balise à attribuer aux datastores dans les domaines de défaillance :
Lorsqu'une OpenShift Container Platform s'étend sur plus d'un domaine de défaillance, le datastore peut ne pas être partagé à travers ces domaines de défaillance, c'est pourquoi le provisionnement topologique des volumes persistants (PV) est utile.
-
Dans vCenter, créez une catégorie pour baliser les datastores. Par exemple,
openshift-zonal-datastore-cat
. Vous pouvez utiliser n'importe quel autre nom de catégorie, à condition que la catégorie soit utilisée uniquement pour baliser les datastores participant au cluster OpenShift Container Platform. Assurez-vous également queStoragePod
,Datastore
etFolder
sont sélectionnés en tant qu'entités associables pour la catégorie créée. -
Dans vCenter, créez une balise qui utilise la catégorie précédemment créée. Cet exemple utilise le nom de balise
openshift-zonal-datastore
. Attribuer la balise créée précédemment (dans cet exemple
openshift-zonal-datastore
) à chaque datastore d'un domaine de défaillance qui serait pris en compte pour le provisionnement dynamique.NoteVous pouvez utiliser les noms de votre choix pour les catégories et les étiquettes. Les noms utilisés dans cet exemple sont fournis à titre de recommandation. Assurez-vous que les balises et les catégories que vous définissez n'identifient que les datastores qui sont partagés avec tous les hôtes du cluster OpenShift Container Platform.
-
Dans vCenter, créez une catégorie pour baliser les datastores. Par exemple,
Créer une stratégie de stockage qui cible les datastores basés sur les balises dans chaque domaine de défaillance :
- Dans vCenter, dans le menu principal, cliquez sur Policies and Profiles.
- Sur la page Policies and Profiles, dans le volet de navigation, cliquez sur VM Storage Policies.
- Cliquez sur CREATE.
- Saisissez un nom pour la stratégie de stockage.
Pour les règles, choisissez Tag Placement rules et sélectionnez la balise et la catégorie qui cible les datastores souhaités (dans cet exemple, la balise
openshift-zonal-datastore
).Les magasins de données sont répertoriés dans le tableau de compatibilité du stockage.
Créez une nouvelle classe de stockage qui utilise la nouvelle politique de stockage zoné :
- Cliquez sur Storage > StorageClasses.
- Sur la page StorageClasses, cliquez sur Create StorageClass.
- Saisissez un nom pour la nouvelle classe de stockage à l'adresse Name.
- Sous Provisioner, sélectionnez csi.vsphere.vmware.com.
- Sous Additional parameters, pour le paramètre StoragePolicyName, définissez Value comme étant le nom de la nouvelle stratégie de stockage zoné que vous avez créée précédemment.
Cliquez sur Create.
Exemple de sortie
kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: zoned-sc 1 provisioner: csi.vsphere.vmware.com parameters: StoragePolicyName: zoned-storage-policy 2 reclaimPolicy: Delete allowVolumeExpansion: true volumeBindingMode: WaitForFirstConsumer
NoteVous pouvez également créer la classe de stockage en modifiant le fichier YAML précédent et en exécutant la commande
oc create -f $FILE
.
Résultats
La création de réclamations de volumes persistants (PVC) et de PV à partir de la classe de stockage adaptée à la topologie est véritablement zonale et devrait utiliser le magasin de données dans leur zone respective en fonction de la façon dont les pods sont planifiés :
~ $ oc get pv <pv-name> -o yaml
Exemple de sortie
... nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: topology.csi.vmware.com/openshift-zone 1 operator: In values: - <openshift-zone> -key: topology.csi.vmware.com/openshift-region 2 operator: In values: - <openshift-region> ... peristentVolumeclaimPolicy: Delete storageClassName: <zoned-storage-class-name> 3 volumeMode: Filesystem ...
Ressources supplémentaires