Migration de l'espace de stockage avec la gestion basée sur les règles de stockage

Ce document explique comment migrer des disques d'un datastore vSphere vers un autre datastore vSphere à l'aide de la gestion basée sur les règles de stockage (SPBM).

1.29: Disponibilité générale
1.28: Aperçu
1.16: Non disponible

Vous pouvez migrer les types de stockage suivants:

  • Espace de stockage pour les composants système gérés par Google Distributed Cloud, y compris:

    • Disques de données (fichiers VMDK) utilisés par les nœuds du plan de contrôle des clusters d'administrateur et des clusters d'utilisateur Controlplane V2

    • Disques de démarrage (fichiers VMDK) utilisés par tous les nœuds du cluster d'administrateur et du cluster d'utilisateur

    • Volumes vSphere représentés par des PV/PVC dans le cluster d'administrateur et utilisés par les composants du plan de contrôle des clusters d'utilisateur kubeception

  • Espace de stockage pour les charges de travail que vous déployez sur des nœuds de calcul de cluster d'utilisateur avec des PV/PVC provisionnés par le plug-in de volume vSphere "in-tree" ou le pilote CSI vSphere

Conditions préalables à l'utilisation d'un cluster d'administrateur

  1. Le cluster d'administrateur doit disposer d'un plan de contrôle haute disponibilité. Si votre cluster d'administrateur dispose d'un plan de contrôle standard, migrez vers la haute disponibilité avant de continuer.

  2. Vérifiez que le cluster d'administrateur dispose d'un plan de contrôle haute disponibilité:

    kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get nodes
    

    Remplacez ADMIN_CLUSTER_KUBECONFIG par le chemin d'accès au fichier kubeconfig du cluster d'administrateur.

    Dans le résultat, vérifiez que vous voyez bien trois nœuds du plan de contrôle. Exemple :

    admin-cp-1   Ready    control-plane,master ...
    admin-cp-2   Ready    control-plane,master ...
    admin-cp-3   Ready    control-plane,master ...
    

Conditions préalables pour tous les clusters (administrateur et utilisateur)

  1. La réparation automatique des nœuds doit être désactivée sur le cluster. Si la réparation automatique des nœuds est activée, désactivez la réparation automatique des nœuds.

  2. Le cluster doit utiliser la gestion basée sur les règles de stockage (SPBM). Si votre cluster n'utilise pas SPBM, créez une règle de stockage avant de continuer.

  3. Vérifiez que le cluster utilise SPBM:

    kubectl --kubeconfig CLUSTER_KUBECONFIG get onpremadmincluster --namespace kube-system \
      -ojson | jq '{datastore: .items[0].spec.vCenter.datastore, storagePolicyName: .items[0].spec.vCenter.storagePolicyName}'
    

    (Cluster d'utilisateur uniquement) Vérifiez que les pools de nœuds utilisent SPBM:

    kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get onpremnodepools --namespace USER_CLUSTER_NAME-gke-onprem-mgmt \
      -ojson | jq '.items[] | {name: .metadata.name, datastore: .spec.vsphere.datastore, storagePolicyName: .spec.vsphere.storagePolicyName}'
    

    Remplacez les éléments suivants :

    • CLUSTER_KUBECONFIG: chemin d'accès au fichier kubeconfig du cluster (administrateur ou utilisateur).

    • ADMIN_CLUSTER_KUBECONFIG : chemin d'accès au fichier kubeconfig du cluster d'administrateur

    • USER_CLUSTER_NAME : nom du cluster d'utilisateur.

    Dans le résultat, si le champ datastore est vide et que le champ storagePolicyName n'est pas vide, le cluster utilise SPBM.

  4. Le cluster ne doit pas utiliser le plug-in de volume "in-tree" vSphere.

    Si votre cluster a été mis à niveau à partir d'une ancienne version de Google Distributed Cloud, il est possible qu'il comporte des PV/PVC provisionnés par le plug-in de volume "in-tree" vSphere. Ce type de volume peut être utilisé par un nœud de plan de contrôle d'un cluster d'utilisateur kubeception ou par une charge de travail que vous avez créée sur un nœud de calcul.

    Liste de toutes les PVC et de leurs StorageClasses:

    kubectl --kubeconfig CLUSTER_KUBECONFIG get pvc --all-namespaces  \
       -ojson | jq '.items[] | {namespace: .metadata.namespace, name: .metadata.name, storageClassName: .spec.storageClassName}'
    

    Répertoriez toutes les ressources StorageClass et examinez les approvisionneurs qu'elles utilisent:

    kubectl --kubeconfig CLUSTER_KUBECONFIG get storageclass
    

    Dans le résultat, si la colonne PROVISIONER est définie sur kubernetes.io/vsphere-volume, les PVC créées avec cette StorageClass utilisent le plug-in de volume "in-tree" vSphere. Pour les StatefulSets utilisant ces PV/PVC, migrez-les vers le pilote CSI vSphere.

Effectuer la migration de l'espace de stockage

Google Distributed Cloud accepte deux catégories de migration du stockage:

  • Storage vMotion pour les VM, qui déplace le stockage de VM, y compris les volumes vSphere CNS associés utilisés par les pods s'exécutant sur un nœud, et les VMDK utilisés par ces volumes CNS de VM associés aux nœuds

  • La relocalisation du volume CNS, qui déplace les volumes vSphere CNS spécifiés vers un datastore compatible sans effectuer de vMotion de stockage pour les VM

Exécuter vMotion de stockage pour les VM

La migration comprend les étapes à suivre dans votre environnement vSphere et les commandes que vous exécutez sur votre poste de travail administrateur:

  1. Dans votre environnement vSphere, ajoutez vos datastores cibles à votre règle de stockage.

  2. Dans votre environnement vSphere, migrez les VM de cluster utilisant l'ancien datastore vers le nouveau. Pour obtenir des instructions, consultez la page Migrer une machine virtuelle vers un nouvel espace de stockage et une nouvelle ressource de calcul.

  3. Sur votre poste de travail administrateur, vérifiez que les VM ont bien été migrées vers le nouveau datastore.

    Récupérez les objets Machine dans le cluster:

    kubectl --kubeconfig CLUSTER_KUBECONFIG get machines --output yaml

    Dans le résultat, sous status.disks, vous pouvez voir les disques associés aux VM. Exemple :

    status:
    addresses:
    – address: 172.16.20.2
      type: ExternalIP
    disks:
    – bootdisk: true
      datastore: pf-ds06
      filepath: me-xvz2ccv28bf9wdbx-2/me-xvz2ccv28bf9wdbx-2.vmdk
      uuid: 6000C29d-8edb-e742-babc-9c124013ba54
    – datastore: pf-ds06
      filepath: anthos/gke-admin-nc4rk/me/ci-bluecwang-head-2-data.vmdk
      uuid: 6000C29e-cb12-8ffd-1aed-27f0438bb9d9
    

    Vérifiez que tous les disques de toutes les machines du cluster ont été migrés vers le datastore cible.

  4. Sur votre poste de travail administrateur, exécutez gkectl diagnose pour vérifier que le cluster est opérationnel.

Appeler les API CNS Relocation pour déplacer des volumes CNS

Si vous souhaitez uniquement déplacer les volumes CNS provisionnés par le pilote CSI vSphere, vous pouvez suivre les instructions de la section Migrer des volumes de conteneurs dans vSphere. Cela peut être plus simple si vous ne disposez que de volumes CNS dans l'ancien datastore.

Si nécessaire, mettez à jour vos règles de stockage

Dans votre environnement vSphere, mettez à jour la règle de stockage pour exclure les anciens datastores. Sinon, les nouveaux volumes et les VM recréées risquent d'être affectés à un ancien datastore.