Stockage

Cette page explique les concepts de stockage d'Anthos clusters on VMware (GKE On-Prem).

Résumé

Anthos clusters on VMware s'intègre aux systèmes externes de stockage de blocs ou de fichiers via le stockage VMware vSphere, les plug-ins de volume "in-tree" Kubernetes (ou "pilotes") et les pilotes Container Storage Interface (CSI).

Anthos Clusters on VMware utilise une StorageClass Kubernetes par défaut pour provisionner le stockage des charges de travail avec état sur un datastore vSphere. Vous pouvez également utiliser une ressource StorageClass pour provisionner différents volumes de stockage.

Stockage vSphere

Par défaut, les clusters Anthos Clusters on VMware utilisent l'espace de stockage vSphere. Le cluster d'administrateur nécessite un datastore vSphere pré-provisionné pour ses données etcd.

Lorsque vous créez un cluster d'utilisateur, Anthos clusters on VMware utilise le plug-in de volume Kubernetes VSphere pour provisionner de manière dynamique de nouveaux disques de machines virtuelles (VMDK) dans un datastore vSphere. (notez que les clusters d'utilisateur antérieurs à la version 1.2 utilisaient le même datastore que les clusters d'administrateur).

Les datastores vSphere utilisés par les clusters d'administrateur et d'utilisateur peuvent être sauvegardés par NFS, vSAN ou VMFS sur un appareil de stockage en mode bloc, tel qu'un tableau de stockage externe. Dans un environnement multi-hôte, chaque appareil de stockage en mode bloc doit être associé à tous les hôtes de l'environnement, et le datastore doit être configuré sur chaque hôte via l'option Installer Datastore sur des hôtes supplémentaires.

Stockage par défaut

Les clusters Anthos Clusters on VMware incluent une ressource StorageClass Kubernetes par défaut, qui détermine la manière dont Kubernetes doit provisionner le stockage. Une fois que Kubernetes a provisionné les volumes de stockage, ils sont représentés par des PersistentVolumes de Kubernetes.

La ressource StorageClass par défaut d'un cluster d'utilisateur pointe vers un datastore vSphere, qui est défini dans le champ datastore de la configuration de StorageClass. Par défaut, les PersistentVolumes de Kubernetes provisionnés pour le cluster d'utilisateur sont des VMDK de ce datastore. Ce datastore n'est pas nécessairement le même que celui utilisé par le cluster d'administrateur.

Dans Anthos clusters on VMware, les objets StatefulSet Kubernetes (charges de travail avec état qui nécessitent généralement un stockage persistant) utilisent des PersistentVolumeClaims sauvegardés par des StorageClass qui pointent vers l'espace de stockage vSphere par défaut.

Interface de stockage en conteneurs

L'interface CSI (Container Storage Interface, interface de stockage en conteneurs) est une API standard Open Source qui permet à Kubernetes d'exposer des systèmes de stockage arbitraires à des charges de travail conteneurisées. Lorsque vous déployez un pilote de volume compatible avec CSI sur un cluster Anthos clusters on VMware, les charges de travail peuvent se connecter directement à un appareil de stockage compatible sans passer par le stockage vSphere.

Pour utiliser CSI dans votre cluster, vous devez déployer le pilote CSI fourni par votre fournisseur de stockage. Vous pouvez ensuite configurer les charges de travail de sorte qu'elles utilisent la ressource StorageClass du pilote ou définir celle-ci en tant que StorageClass par défaut.

Nous avons établi un partenariat avec de nombreux fournisseurs de stockage pour assurer la compatibilité de leurs systèmes de stockage avec Anthos clusters on VMware. Consultez la liste complète des partenaires de stockage qualifiés.

Pilote CSI vSphere

Par défaut, Anthos clusters on VMware exploite le plug-in de volume "in-tree" de VMware, vSphere Cloud Provider (VCP), qui est automatiquement compatible avec les datastores VMware tels que vSAN. Le pilote CSI vSphere est la mise en œuvre du pilote de volume vSphere de l'interface CSI et correspond à un composant du stockage cloud natif de VMware. Il est automatiquement déployé dans Anthos Clusters on VMware et est en phase de disponibilité générale à partir de la version 1.7 d'Anthos Clusters on VMware.

Expansion de volume

L'expansion de volume est une fonctionnalité bêta dans Kubernetes 1.20.

Vous pouvez augmenter la taille d'un volume persistant après son provisionnement en modifiant la demande de capacité dans l'objet PersistentVolumeClaim (PVC). Vous pouvez augmenter la capacité en ligne lorsque le volume est utilisé par un pod ou hors connexion lorsque le volume n'est pas utilisé.

Pour le pilote CSI vSphere, l'expansion hors connexion est disponible à partir de la version 7.0 de vSphere et l'expansion en ligne à partir de la mise à jour 2 de la version 7.0 de vSphere.

Le pilote CSI vSphere de l'objet StorageClass standard-rwo, qui est installé automatiquement dans les clusters d'utilisateur, définit allowVolumeExpansion sur "true" par défaut pour les clusters récemment créés et exécutés sur vSphere 7.0 ou une version ultérieure. Vous pouvez utiliser l'expansion en ligne et hors connexion pour les volumes utilisant cette ressource StorageClass. Étant donné que les objets StorageClass ne sont pas modifiés lors des mises à niveau d'un cluster, lorsqu'un cluster est mis à niveau de la version 1.7 vers la version 1.8, le paramètre allowVolumeExpansion dans standard-rwo reste désactivé, ce qui signifie que l'expansion de volume n'est pas autorisée.

Pour en savoir plus sur l'expansion de volume, consultez la page Utiliser l'expansion de volume.

Instantanés du volume CSI

Vous pouvez créer des instantanés du stockage persistant à l'aide des ressources VolumeSnapshot et VolumeSnapshotClass. Pour utiliser cette fonctionnalité sur un volume CSI, le pilote CSI doit être compatible avec les instantanés de volume, et le conteneur side-car external-snapshotter doit être inclus dans le déploiement du pilote CSI.

Pour en savoir plus sur les instantanés de volume, consultez la page Utiliser des instantanés de volume.

Les contrôleurs d'instantané CSI sont déployés automatiquement lorsque vous créez un cluster.

À partir dela version 1.8 d'Anthos Clusters on VMware, les versions v1 des objets VolumeSnapshot, VolumeSnapshotContent et VolumeSnapshotClass sont disponibles. Les versions v1beta1 sont obsolètes et cesseront d'être diffusées dans une version ultérieure.

Nettoyage des volumes

Lorsque vous supprimez un cluster d'utilisateur, les volumes provisionnés par le plug-in de volume "in-tree" de VMware peuvent ne pas être supprimés. Toutefois, lors de la suppression d'un cluster d'utilisateur, les volumes provisionnés par le pilote CSI vSphere ne sont pas supprimés. Vous devez vérifier que tous les volumes, les PVC et les objets StatefulSet sont supprimés avant la suppression du cluster.

Plug-ins de volume "in-tree" Kubernetes

Kubernetes est fourni avec un certain nombre de plug-ins de volume "in-tree". Vous pouvez utiliser n'importe lequel d'entre eux pour fournir un stockage de blocs ou de fichiers pour vos charges de travail avec état. Les plug-ins "in-tree" permettent aux charges de travail de se connecter directement au stockage sans avoir à passer par le stockage vSphere.

Alors que le stockage vSphere offre automatiquement un provisionnement dynamique des volumes dans un datastore sauvegardé par n'importe quel appareil de stockage iSCSI, FC ou NFS, la plupart des plug-ins de volume "in-tree" ne sont pas compatibles avec le provisionnement dynamique. Vous devez créer manuellement des PersistentVolumes.

Le tableau suivant décrit plusieurs plug-ins de volume "in-tree" :

Plug-in de volume "in-tree"DescriptionModes d'accès compatiblesProvisionnement dynamique
Fibre ChannelPlug-in de stockage génériquePod unique en lecture/écritureNon
iSCSIPlug-in de stockage génériquePod unique en lecture/écritureNon
NFSPlug-in de stockage génériquePods multiples en lecture/écritureNon

Configurer le stockage en clusters

Si vous souhaitez provisionner des volumes de stockage autres que les datastores vSphere, vous pouvez créer une nouvelle StorageClass dans un cluster utilisant un autre pilote de stockage. Vous pouvez ensuite définir la StorageClass comme valeur par défaut du cluster ou configurer vos charges de travail à l'aide de la StorageClass (exemple StatefulSet).

Dépannage

Consultez la page Dépannage du système de stockage.

Documentation complémentaire