Ce document explique comment migrer un datastore vSphere vers Storage Policy Based Management (SPBM).
Cette page s'adresse aux spécialistes du stockage qui configurent et gèrent les performances, l'utilisation et les dépenses liées au stockage. Pour en savoir plus sur les rôles courants et les exemples de tâches que nous citons dans le contenu Google Cloud , consultez Rôles utilisateur et tâches courantes de GKE.
1.30 : Disponibilité générale
1.29 : Aperçu
1.16 et versions antérieures : Non disponible
Contexte
Vous pouvez spécifier un datastore dans les fichiers de configuration du cluster à quatre endroits :
Cluster d'administrateur : vCenter.datastore
Cluster d'utilisateur au niveau du cluster, qui inclut les nœuds du plan de contrôle et tous les pools de nœuds de calcul : vCenter.datastore
Nœuds du plan de contrôle du cluster d'utilisateur : masterNode.vsphere.datastore
Pools de nœuds de calcul de cluster d'utilisateur : nodePools[i].vsphere.datastore
L'héritage de ces champs est le suivant :
adminCluster.vCenter.datastore -> userCluster.vCenter.datastore -> (userCluster.masterNode.vsphere.datastore and userCluster.nodePools[i].vsphere.datastore)
Exemples :
Si
userCluster.vCenter.datastore
est vide, il hérite de la valeur deadminCluster.vCenter.datastore
.Si
userCluster.nodePools[i].vsphere.datastore
est vide, il hérite de la valeur deuserCluster.vCenter.datastore
.
De même, vous pouvez spécifier une règle de stockage à quatre endroits :
Cluster d'administrateur vCenter.storagePolicyName
Cluster d'utilisateur au niveau du cluster, qui inclut les nœuds du plan de contrôle et tous les pools de nœuds de calcul : vCenter.storagePolicyName
Nœuds du plan de contrôle du cluster d'utilisateur : masterNode.vsphere.storagePolicyName
Pools de nœuds de calcul de cluster d'utilisateur : nodePools[i].vsphere.storagePolicyName
L'héritage des champs storagePolicyName
est identique à celui des champs datastore
.
Avant de commencer
- Ce processus est une migration à sens unique. Nous ne prenons pas en charge la migration vers l'état précédent.
- Le datastore doit être compatible avec la nouvelle règle de stockage que vous allez définir.
- Seuls les clusters d'administrateur haute disponibilité (HD) sont acceptés. Si votre cluster d'administrateur n'est pas à haute disponibilité, vous devez d'abord migrer le cluster d'administrateur vers la haute disponibilité.
Migrer un cluster d'utilisateur
Les étapes à suivre pour la migration dépendent de si vous souhaitez migrer l'intégralité du cluster d'utilisateur ou si vous souhaitez migrer les nœuds du plan de contrôle et les pools de nœuds de calcul séparément. Cette option vous permet de sélectionner différentes règles de stockage pour les nœuds du plan de contrôle et les pools de nœuds de calcul.
Pour vous aider à planifier un intervalle de maintenance, tenez compte des points suivants :
La migration de l'ensemble du cluster ne nécessite qu'une seule mise à jour du cluster.
La migration séparée des pools de nœuds de plan de contrôle et de nœuds de calcul nécessite deux mises à jour du cluster.
Ensemble du cluster
Suivez ces étapes si vous souhaitez migrer l'intégralité du cluster, y compris tous les nœuds du plan de contrôle et les pools de nœuds de calcul. Votre cluster d'utilisateur doit être en version 1.30 ou ultérieure.
Modifiez le fichier de configuration du cluster utilisateur comme suit :
Définissez le champ
vCenter.storagePolicyName
avec le nom de la règle de stockage.Supprimez ou mettez en commentaire les éléments suivants s'ils sont spécifiés :
- Champ
vCenter.datastore
- Section
masterNode.vsphere
nodepools[i].vsphere.datastore
nodepools[i].vsphere.storagePolicyName
- Champ
Les exemples de configurations suivants illustrent ces modifications.
Avant les modifications :
vCenter: datastore: ds-1
Après les modifications :
vCenter: storagePolicyName: sp-1 # datastore: ds-1
Mettez à jour le cluster d'utilisateur :
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG
Remplacez les éléments suivants :
ADMIN_CLUSTER_KUBECONFIG
: chemin d'accès au fichier kubeconfig du cluster d'administrateurUSER_CLUSTER_CONFIG
: chemin d'accès au fichier de configuration du cluster d'utilisateur.
Mettre à jour le StorageClass
fourni
Après avoir mis à jour les paramètres de configuration du cluster, vous devez mettre à jour StorageClass
.
Obtenez le
StorageClass
par défaut actuel pour levsphere-csi-driver
fourni, qui est nomméstandard-rwo
, et enregistrez-le dans un fichier local appeléstorage-class.yaml
.kubectl get storageclass standard-rwo -oyaml \ --kubeconfig USER_CLUSTER_KUBECONFIG > storage-class.yaml
Remplacez
USER_CLUSTER_KUBECONFIG
par le chemin d'accès du fichier kubeconfig de votre cluster d'utilisateur.Par précaution, faites une copie de
storage-class.yaml
, car vous devez apporter des modifications au fichier :cp storage-class.yaml storage-class.yaml-backup.yaml
Supprimez le
StorageClass
par défaut du cluster :kubectl delete storageclass standard-rwo \ --kubeconfig USER_CLUSTER_KUBECONFIG
Mettez à jour la configuration dans
storage-class.yaml
comme suit :Supprimez ou mettez en commentaire les champs suivants :
parameters.datastoreURL
resourceVersion
Ajoutez le champ
parameters.storagePolicyName
et définissez-le sur le nom de la règle de stockage.
Les exemples de configurations suivants illustrent ces modifications.
Avant les modifications :
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... datastoreURL: ds//ds-1
Après les modifications :
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... storagePolicyName: sp-1
Appliquez le fichier
StorageClass
modifié au cluster d'utilisateur :kubectl apply -f storage-class.yaml \ --kubeconfig USER_CLUSTER_KUBECONFIG
Clusters d'utilisateur Kubeception uniquement
Pour les clusters d'utilisateur Kubeception, vous devez mettre à jour StorageClass
pour les nœuds du plan de contrôle du cluster d'utilisateur dans le cluster d'administrateur. Les clusters Kubeception ont le champ de configuration enableControlplaneV2
défini sur false
.
Lorsque Controlplane V2 est activé, le plan de contrôle du cluster d'utilisateur s'exécute dans le cluster d'utilisateur lui-même. Lorsque Controlplane V2 n'est pas activé, le plan de contrôle du cluster d'utilisateur s'exécute dans le cluster d'administrateur, ce qui est appelé kubeception.
Exécutez la commande suivante pour déterminer si Controlplane V2 est activé dans le cluster :
kubectl get onpremuserclusters --kubeconfig USER_CLUSTER_KUBECONFIG \ -n kube-system -o jsonpath='{.items[0].spec.enableControlplaneV2}' && echo
Si le résultat est false
, procédez comme suit pour mettre à jour le StorageClass
par défaut pour les nœuds du plan de contrôle du cluster d'utilisateur dans le cluster d'administrateur :
Obtenez le
StorageClass
par défaut actuel pour levsphere-csi-driver
fourni, qui est nomméUSER_CLUSTER_NAME-csi
, et enregistrez-le dans un fichier local appeléstorage-class-kubeception.yaml
.kubectl get storageclass USER_CLUSTER_NAME-csi -oyaml \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG > storage-class-kubeception.yaml
Remplacez
ADMIN_CLUSTER_KUBECONFIG
par le chemin d'accès au fichier kubeconfig du cluster d'administrateur.Par précaution, faites une copie de
storage-class-kubeception.yaml
, car vous devez modifier le fichier :cp storage-class-kubeception.yaml storage-class-kubeception-backup.yaml
Supprimez le
StorageClass
par défaut du cluster :kubectl delete storageclass USER_CLUSTER_NAME-csi \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Mettez à jour la configuration dans
storage-class-kubeception.yaml
comme suit :Supprimez ou mettez en commentaire les champs suivants :
parameters.datastoreURL
resourceVersion
Ajoutez le champ
parameters.storagePolicyName
et définissez-le sur le nom de la règle de stockage.
Les exemples de configurations suivants illustrent ces modifications.
Avant les modifications :
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... datastoreURL: ds//ds-1
Après les modifications :
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... storagePolicyName: sp-1
Appliquez le fichier
StorageClass
modifié au cluster d'administrateur :kubectl apply -f storage-class-kubeception.yaml \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Après la migration
Si vous créez un pool de nœuds après une migration, le nouveau pool suit les règles d'héritage en fonction du cluster mis à jour.
Par exemple, supposons que vous ayez migré vCenter.datastore
vers une règle de stockage.
Désormais, si vous créez un pool de nœuds et que vous laissez nodePools[i].vsphere.datastore
et nodePools[i].vsphere.storagePolicyName
vides, le nouveau pool de nœuds hérite de la règle de stockage spécifiée dans vCenter.storagePolicyName
.
Nœuds séparément
Suivez ces étapes si vous souhaitez migrer les nœuds du plan de contrôle et les pools de nœuds de calcul séparément.
Version 1.29 uniquement : obtenez la configuration actuelle du cluster. Cette étape n'est pas nécessaire si le cluster d'utilisateur est à la version 1.30 ou ultérieure.
gkectl get-config cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --cluster-name USER_CLUSTER_NAME \ --output-dir ./gen-files
Remplacez les éléments suivants :
ADMIN_CLUSTER_KUBECONFIG
: chemin d'accès au fichier kubeconfig pour le cluster d'administrateur.USER_CLUSTER_NAME
: nom du cluster d'utilisateur.
Dans
./gen-files
, localisezuser-cluster.yaml
.Pour savoir comment obtenir le fichier de configuration, consultez Générer des fichiers de configuration à partir d'un cluster.
Le fichier de configuration généré comporte le nom
datastore
défini à chaque niveau : cluster,masterNode
(pour les nœuds du plan de contrôle) etnodepools
(pour les nœuds de calcul), comme indiqué dans l'exemple suivant :apiVersion: v1 kind: UserCluster ... # VCenter config in cluster level: vCenter: datastore: ds-1 ... # VCenter config in master node level: masterNode: vsphere: datastore: ds-1 ... # VCenter config in nodepool level: nodepools: - name: pool-1 vsphere: datastore: ds-1 - name: pool-2 vsphere: datastore: ds-1
Migrer les nœuds du plan de contrôle
Pour migrer les nœuds du plan de contrôle, procédez comme suit :
Effectuez les modifications suivantes dans le fichier de configuration du cluster d'utilisateur :
- Définissez le champ
masterNode.vsphere.storagePolicyName
avec le nom de la règle de stockage. - Supprimez ou mettez en commentaire le champ
masterNode.vsphere.datastore
.
Les exemples de configurations suivants illustrent ces modifications.
Avant les modifications :
masterNode: vsphere: datastore: ds-1
Après les modifications :
masterNode: vsphere: # datastore: ds-1 storagePolicyName: sp-1
- Définissez le champ
Mettez à jour le cluster d'utilisateur :
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG
Remplacez les éléments suivants :
ADMIN_CLUSTER_KUBECONFIG
: chemin d'accès au fichier kubeconfig du cluster d'administrateurUSER_CLUSTER_CONFIG
: chemin d'accès au fichier de configuration du cluster d'utilisateur.
Attendez que la commande de mise à jour soit terminée avant de mettre à jour les pools de nœuds.
Migrer des pools de nœuds
Pour migrer tous les pools de nœuds, procédez comme suit :
Effectuez les modifications suivantes dans le fichier de configuration du cluster d'utilisateur :
- Définissez chaque champ
nodePools[i].vsphere.storagePolicyName
avec le nom de la règle de stockage. - Supprimez ou mettez en commentaire chaque champ
nodePools[i].vsphere.datastore
.
Les exemples de configurations suivants illustrent ces modifications.
Avant les modifications :
nodepools: - name: pool-1 vsphere: datastore: ds-1 - name: pool-2 vsphere: datastore: ds-1
Après les modifications :
nodepools: - name: pool-1 vsphere: # datastore: ds-1 storagePolicyName: sp-1 - name: pool-2 vsphere: # datastore: ds-1 storagePolicyName: sp-1
- Définissez chaque champ
Mettez à jour le cluster d'utilisateur :
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG
Vous pouvez également mettre à jour la règle de stockage au niveau du cluster.
Pour les clusters d'utilisateur, les champs datastore
et storagePolicyName
de la section vCenter
au niveau du cluster sont des valeurs par défaut utilisées par les sections masterNode
et nodepools
. Une fois les étapes précédentes effectuées, les paramètres vCenter
datastore
et storagePolicyName
au niveau du cluster ne seront utilisés par aucun composant du cluster. Vous pouvez laisser la section vCenter
au niveau du cluster telle quelle ou la mettre à jour pour qu'elle soit cohérente avec masterNode
et nodepools
.
Si vous ne modifiez pas le paramètre, nous vous recommandons d'ajouter un commentaire au-dessus de la section vCenter
au niveau du cluster, indiquant que le paramètre est ignoré, car il est remplacé par les paramètres des sections masterNode
et nodepools
.
Si vous préférez, vous pouvez modifier la section vCenter
au niveau du cluster pour qu'elle corresponde aux sections masterNode
et nodepools
, puis mettre à jour le cluster en procédant comme suit :
Modifiez le fichier de configuration du cluster utilisateur comme suit :
- Définissez le champ
vCenter.storagePolicyName
avec le nom de la règle de stockage. - Supprimez ou mettez en commentaire le champ
vCenter.datastore
.
- Définissez le champ
Mettez à jour le cluster d'utilisateur :
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG
Cette commande de mise à jour n'apporte aucune modification au cluster, mais elle met à jour les champs
vCenter.datastore
etvCenter.storagePolicyName
côté serveur (OnPremUserCluster
).
Mettre à jour le StorageClass
fourni
Après avoir mis à jour les paramètres de configuration, vous devez mettre à jour le StorageClass
groupé.
Obtenez le
StorageClass
par défaut actuel pour levsphere-csi-driver
fourni, qui est nomméstandard-rwo
, et enregistrez-le dans un fichier local appeléstorage-class.yaml
.kubectl get storageclass standard-rwo -oyaml \ --kubeconfig USER_CLUSTER_KUBECONFIG > storage-class.yaml
Remplacez
USER_CLUSTER_KUBECONFIG
par le chemin d'accès du fichier kubeconfig de votre cluster d'utilisateur.Par précaution, faites une copie de
storage-class.yaml
, car vous devez apporter des modifications au fichier :cp storage-class.yaml storage-class.yaml-backup.yaml
Supprimez le
StorageClass
par défaut du cluster :kubectl delete storageclass standard-rwo \ --kubeconfig USER_CLUSTER_KUBECONFIG
Mettez à jour la configuration dans
storage-class.yaml
comme suit :Supprimez ou mettez en commentaire les champs suivants :
parameters.datastoreURL
resourceVersion
Ajoutez le champ
parameters.storagePolicyName
et définissez-le sur le nom de la règle de stockage.
Les exemples de configurations suivants illustrent ces modifications.
Avant les modifications :
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... datastoreURL: ds//ds-1
Après les modifications :
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... storagePolicyName: sp-1
Appliquez le fichier
StorageClass
modifié au cluster d'utilisateur :kubectl apply -f storage-class.yaml \ --kubeconfig USER_CLUSTER_KUBECONFIG
Clusters d'utilisateur Kubeception uniquement
Pour les clusters d'utilisateur Kubeception, vous devez mettre à jour StorageClass
pour les nœuds du plan de contrôle du cluster d'utilisateur dans le cluster d'administrateur. Les clusters Kubeception ont le champ de configuration enableControlplaneV2
défini sur false
.
Lorsque Controlplane V2 est activé, le plan de contrôle du cluster d'utilisateur s'exécute dans le cluster d'utilisateur lui-même. Lorsque Controlplane V2 n'est pas activé, le plan de contrôle du cluster d'utilisateur s'exécute dans le cluster d'administrateur, ce qui est appelé kubeception.
Exécutez la commande suivante pour déterminer si Controlplane V2 est activé dans le cluster :
kubectl get onpremuserclusters --kubeconfig USER_CLUSTER_KUBECONFIG \ -n kube-system -o jsonpath='{.items[0].spec.enableControlplaneV2}' && echo
Si le résultat est false
, procédez comme suit pour mettre à jour le StorageClass
par défaut pour les nœuds du plan de contrôle du cluster d'utilisateur dans le cluster d'administrateur :
Obtenez le
StorageClass
par défaut actuel pour levsphere-csi-driver
fourni, qui est nomméUSER_CLUSTER_NAME-csi
, et enregistrez-le dans un fichier local appeléstorage-class-kubeception.yaml
.kubectl get storageclass USER_CLUSTER_NAME-csi -oyaml \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG > storage-class-kubeception.yaml
Remplacez
ADMIN_CLUSTER_KUBECONFIG
par le chemin d'accès au fichier kubeconfig du cluster d'administrateur.Par précaution, faites une copie de
storage-class-kubeception.yaml
, car vous devez modifier le fichier :cp storage-class-kubeception.yaml storage-class-kubeception-backup.yaml
Supprimez le
StorageClass
par défaut du cluster :kubectl delete storageclass USER_CLUSTER_NAME-csi \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Mettez à jour la configuration dans
storage-class-kubeception.yaml
comme suit :Supprimez ou mettez en commentaire les champs suivants :
parameters.datastoreURL
resourceVersion
Ajoutez le champ
parameters.storagePolicyName
et définissez-le sur le nom de la règle de stockage.
Les exemples de configurations suivants illustrent ces modifications.
Avant les modifications :
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... datastoreURL: ds//ds-1
Après les modifications :
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... storagePolicyName: sp-1
Appliquez le fichier
StorageClass
modifié au cluster d'administrateur :kubectl apply -f storage-class-kubeception.yaml \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Migrer un cluster d'administrateur
Assurez-vous que le nom de la règle de stockage est également mis à jour dans le cluster d'administrateur.
Apportez les modifications suivantes au fichier de configuration du cluster d'administrateur :
- Supprimez ou mettez en commentaire le champ
vCenter.datastore
. - Définissez le champ
vCenter.storagePolicyName
avec le nom de la règle de stockage.
- Supprimez ou mettez en commentaire le champ
Mettez à jour le cluster d'administrateur :
gkectl update admin --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config ADMIN_CLUSTER_CONFIG
Remplacez les éléments suivants :
ADMIN_CLUSTER_KUBECONFIG
: chemin d'accès au fichier kubeconfig du cluster d'administrateur.ADMIN_CLUSTER_CONFIG
: chemin d'accès au fichier de configuration du cluster d'administrateur.
Migration du stockage avec SPBM
Après la migration du datastore vers SPBM, vos clusters utilisent désormais SPBM. Toutefois, la migration ne déplace aucune charge de travail de stockage (telles que les disques de données de la machine ou les volumes de conteneurs) depuis l'ancien datastore.
Pour déplacer des charges de travail de stockage, consultez Migration du stockage avec la gestion basée sur les règles de stockage.