Migrer un cluster d'utilisateur vers Controlplane V2

Ce document explique comment migrer un cluster d'utilisateurs de la version 1.29 ou ultérieure à l'aide de kubeception vers Controlplane V2.

1.29: bêta
1.28: non disponible
1.16: non disponible

À propos des plans de contrôle de cluster d'utilisateur

Avant la version 1.13 de Google Distributed Cloud, le plan de contrôle d'un cluster utilisateur s'exécutait sur un ou plusieurs nœuds d'un cluster administrateur. Ce type de plan de contrôle est appelé kubeception. Dans la version 1.13, Controlplane V2 a été introduit pour les nouveaux clusters d'utilisateur. 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.

Les avantages de Controlplane V2 sont les suivants:

  • Isolement des défaillances Une défaillance du cluster d'administrateur n'affecte pas les clusters d'utilisateur.

  • Séparation opérationnelle La mise à niveau d'un cluster d'administrateur n'entraîne pas de temps d'arrêt pour les clusters d'utilisateur.

  • Séparation des déploiements Vous pouvez placer les clusters d'administrateur et d'utilisateur dans différents domaines de défaillance ou sites géographiques. Par exemple, un cluster d'utilisateur dans un emplacement périphérique peut se trouver sur un site géographique différent du cluster d'administrateur.

Conditions requises

Pour migrer un cluster d'utilisateur vers Controlplane V2, le cluster d'utilisateur doit répondre aux exigences suivantes:

  • Le cluster d'utilisateur doit disposer de la version 1.29 ou d'une version ultérieure. Le cluster d'administrateur et les pools de nœuds peuvent être inférieurs d'une ou deux versions mineures au cluster d'utilisateur. Si nécessaire, mettez à niveau le cluster.

  • Dataplane V2 doit être activé sur le cluster utilisateur. Ce champ est immuable. Par conséquent, si Dataplane V2 n'est pas activé sur le cluster, vous ne pouvez pas le migrer vers Controlplane V2.

  • Le cluster d'utilisateur doit être configuré pour utiliser MetalLB ou un équilibreur de charge manuel. Si le cluster d'utilisateur utilise l'équilibreur de charge SeeSaw, vous pouvez le migrer vers MetalLB.

  • Consultez le document de planification des adresses IP et assurez-vous que vous disposez de suffisamment d'adresses IP pour les nœuds du plan de contrôle du cluster d'utilisateur. Les nœuds du plan de contrôle nécessitent des adresses IP statiques. Vous aurez besoin d'une adresse IP supplémentaire pour une nouvelle adresse IP virtuelle (VIP) du plan de contrôle.

Mettre à jour le fichier de configuration du cluster d'utilisateur

Apportez les modifications suivantes au fichier de configuration du cluster d'utilisateur existant:

  1. Définissez enableControlplaneV2 sur true.

  2. Vous pouvez éventuellement rendre le plan de contrôle du cluster d'utilisateur Controlplane V2 hautement disponible (HA). Pour passer d'un cluster standard à un cluster à haute disponibilité, remplacez la valeur 1 par 3 pour masterNode.replicas.

  3. Ajoutez la ou les adresses IP statiques du ou des nœuds du plan de contrôle du cluster d'utilisateur à la section network.controlPlaneIPBlock.ips.

  4. Renseignez le masque de réseau et la passerelle dans la section network.controlPlaneIPBlock.

  5. Si la section network.hostConfig est vide, remplissez-la.

  6. Si le cluster d'utilisateur utilise l'équilibrage de charge manuel, configurez votre équilibreur de charge de manière à inclure les adresses IP des nœuds du plan de contrôle pour le trafic du plan de données :

    • (ingressVIP:80) -> (CP_NODE_IP_ADDRESSES:ingressHTTPNodePort)
    • (ingressVIP:443) -> (CP_NODE_IP_ADDRESSES:ingressHTTPSNodePort)
  7. Mettez à jour le champ loadBalancer.vips.controlPlaneVIP avec la nouvelle adresse IP pour l'adresse IP virtuelle du plan de contrôle. Notez qu'il doit se trouver sur le même VLAN que les adresses IP des nœuds du plan de contrôle.

  8. Tous les champs précédents sont immuables, sauf lors de la mise à jour du cluster pour la migration. Veillez à vérifier tous les paramètres.

  9. Exécutez gkectl diagnose cluster et corrigez les problèmes détectés par la commande.

    gkectl diagnose cluster --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \
          --cluster-name=USER_CLUSTER_NAME

    Remplacez les éléments suivants :

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

    • CLUSTER_NAME : nom du cluster d'utilisateur.

Ajuster la configuration manuelle de l'équilibreur de charge

Si votre cluster d'utilisateur utilise l'équilibrage de charge manuel, suivez la procédure décrite dans cette section. Sinon, ignorez cette section.

Tout comme pour configurer votre équilibreur de charge pour un cluster d'utilisateur CPv2, pour chacune des trois nouvelles adresses IP de plan de contrôle que vous avez spécifiées dans la section network.controlPlaneIPBlock, configurez les mappages dans votre équilibreur de charge :

  • (ingressVIP:80) -> (NEW_NODE_IP_ADDRESS:ingressHTTPNodePort)
  • (ingressVIP:443) -> (NEW_NODE_IP_ADDRESS:ingressHTTPNodePort)

Mettre à jour le cluster

Exécutez la commande suivante pour migrer le cluster vers Controlplane V2:

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'administrateur

  • USER_CLUSTER_CONFIG : chemin d'accès au fichier de configuration du cluster d'utilisateur

La commande :

  1. Créez le plan de contrôle d'un nouveau cluster avec ControlPlane V2 activé.

  2. Arrêtez le plan de contrôle Kubernetes du cluster kubeception.

  3. Prendre un instantané etcd du cluster kubeception.

  4. Mettez hors tension les nœuds du plan de contrôle du cluster d'utilisateur du cluster kubeception. Notez que dans un souci de reprise après échec, c'est-à-dire en revenant au cluster kubeception, les nœuds ne sont supprimés qu'à la fin de la migration.

  5. Restaurez les données du cluster dans le nouveau plan de contrôle avec l'instantané etcd mentionné ci-dessus.

  6. Connectez les nœuds de pool de nœuds du cluster kubeception au nouveau plan de contrôle, accessible avec le nouveau controlPlaneVIP.

  7. Rapprochez le cluster d'utilisateur restauré de sorte qu'il atteigne l'état final du cluster avec ControlPlane V2 activé.

Remarques

  • Pendant la migration, il n'y a pas de temps d'arrêt pour les charges de travail du cluster d'utilisateur.

  • Pendant la migration, le plan de contrôle du cluster d'utilisateur subit un temps d'arrêt. Plus précisément, le plan de contrôle n'est pas disponible entre l'étape 2 et la fin de l'étape 6. (Le temps d'arrêt est inférieur à sept minutes d'après nos tests, mais la durée réelle dépend de votre infrastructure.)

  • À la fin de la migration, les nœuds du plan de contrôle du cluster d'utilisateur des clusters kubeception sont supprimés. Si network.ipMode.type est défini sur "static" sur le cluster d'administrateur, vous pouvez recycler certaines des adresses IP statiques inutilisées en les supprimant du fichier de configuration du cluster d'administrateur et en exécutant gkectl update admin. Vous pouvez répertorier les objets du nœud de cluster d'administrateur avec kubectl get nodes -o wide pour voir quelles adresses IP sont utilisées.