Ce document a été traduit à l'aide d'une technologie de traduction automatique. Bien que nous nous efforcions de fournir des traductions exactes, nous ne fournissons aucune garantie quant à l'exhaustivité, l'exactitude ou la fiabilité du contenu traduit. En cas de divergence, la version originale anglaise prévaut et fait foi.

Migration d’Amazon du fournisseur intégré vers le fournisseur externe

Kubernetes cesse de maintenir les fournisseurs de cloud intégrés. Dans Kubernetes v1.27 et versions ultérieures, les fournisseurs de cloud intégrés ont été supprimés. L’interface utilisateur de Rancher vous permet de mettre à niveau vers Kubernetes v1.27 lorsque vous migrez d’un fournisseur intégré à un fournisseur externe.

Cependant, si vous effectuez une migration manuelle, les clusters existants doivent être mis à niveau vers Kubernetes v1.27 après la migration pour rester fonctionnels.

Pour migrer du fournisseur de cloud intégré vers le fournisseur de cloud AWS externe, vous devez interrompre le gestionnaire de contrôleur kube du cluster existant et installer le gestionnaire de contrôleur cloud AWS. Il existe de nombreuses façons de procéder. Référez-vous à la documentation officielle d’AWS sur le cloud controller manager externe pour plus de détails.

S’il est acceptable d’avoir un certain temps d’arrêt pendant la migration, suivez les instructions pour configurer un fournisseur de cloud externe. Ces instructions décrivent comment configurer le fournisseur de cloud externe pour un cluster nouvellement provisionné. Lors de la configuration, il y aura un certain temps d’arrêt, car il y a un écart de temps entre l’interruption de l’ancien fournisseur de cloud et le démarrage du nouveau fournisseur de cloud.

Si votre configuration ne peut tolérer aucun temps d’arrêt du plan de contrôle, vous devez activer la migration du leader. Cela facilite une transition en douceur des contrôleurs dans le gestionnaire de contrôleur kube vers leurs homologues dans le cloud controller manager. Référez-vous à la documentation officielle d’AWS sur Utiliser la migration du leader pour plus de détails.

Important :

La documentation de migration du cloud controller manager Kubernetes indique qu’il est possible de migrer avec la même version de Kubernetes, mais suppose que la migration fait partie d’une mise à niveau de Kubernetes. Consultez la documentation Kubernetes sur la migration vers l’utilisation du cloud controller manager pour voir si vous devez personnaliser votre configuration avant de migrer. Confirmez vos valeurs de configuration de migration. Si votre fournisseur de cloud propose une implémentation du contrôleur Node IPAM, vous devez également migrer le contrôleur IPAM.

  • RKE2

  • RKE

  1. Mettez à jour la configuration du cluster pour activer la migration du leader :

    spec:
      rkeConfig:
        machineSelectorConfig:
          - config:
              kube-controller-manager-arg:
                - enable-leader-migration
            machineLabelSelector:
              matchExpressions:
                - key: rke.cattle.io/control-plane-role
                  operator: In
                  values:
                    - 'true'

    Notez que le fournisseur de cloud est toujours aws à cette étape :

    spec:
      rkeConfig:
        machineGlobalConfig:
          cloud-provider-name: aws
  2. Cordonnez les nœuds du plan de contrôle afin que les pods du contrôleur cloud AWS s’exécutent sur les nœuds uniquement après la mise à niveau vers le fournisseur de cloud externe :

    kubectl cordon -l "node-role.kubernetes.io/control-plane=true"
  3. Pour installer le gestionnaire de contrôleur cloud AWS avec la migration du leader activée, suivez les étapes 1 à 3 pour déployer le chart du gestionnaire de contrôleur cloud. À partir de Kubernetes 1.22, le kube-controller-manager utilisera une configuration par défaut qui satisfera la migration du contrôleur vers le gestionnaire. Mettez à jour les arguments du conteneur du aws-cloud-controller-manager sous spec.rkeConfig.additionalManifest pour activer la migration du leader :

    - '--enable-leader-migration=true'
  4. Installez le chart et confirmez que le Daemonset aws-cloud-controller-manager a été déployé avec succès :

    kubectl rollout status daemonset -n kube-system aws-cloud-controller-manager
  5. Mettez à jour le cluster de provisionnement pour changer le fournisseur de cloud et supprimer les arguments de migration du leader du contrôleur kube. Si vous mettez à niveau la version de Kubernetes, définissez également la version de Kubernetes dans la section spec.kubernetesVersion du fichier YAML du cluster.

    Important

    Supprimez cloud-provider-name: aws uniquement si vous ne comptez pas sur le superviseur rke2 pour définir correctement le ProviderID.

    Supprimez enable-leader-migration si vous ne souhaitez pas qu’il soit activé dans votre cluster :

    spec:
      rkeConfig:
        machineGlobalConfig:
          cloud-provider-name: external

    Supprimez enable-leader-migration de :

    spec:
      rkeConfig:
        machineSelectorConfig:
          - config:
              kube-controller-manager-arg:
                - enable-leader-migration
            machineLabelSelector:
              matchExpressions:
                - key: rke.cattle.io/control-plane-role
                  operator: In
                  values:
                    - 'true'

    Vous pouvez également désactiver la migration du leader après la mise à niveau, car la migration du leader n’est plus requise en raison de l’existence d’un seul gestionnaire de contrôleur cloud et peut être supprimée. Mettez à niveau le chart et supprimez la section suivante des arguments du conteneur :

    - --enable-leader-migration=true

    Vérifiez que la mise à jour du gestionnaire de contrôleur cloud a été déployée avec succès avec la commande suivante :

    kubectl rollout status daemonset -n kube-system aws-cloud-controller-manager
  6. Le fournisseur de cloud est responsable de la définition du ProviderID du nœud. Vérifiez si tous les nœuds sont initialisés avec le ProviderID :

    kubectl describe nodes | grep "ProviderID"
  1. Mettez à jour la configuration du cluster pour activer la migration du leader dans cluster.yml :

    services:
      kube-controller:
        extra_args:
          enable-leader-migration: "true"

    Notez que le fournisseur de cloud est toujours aws à cette étape :

    cloud_provider:
      name: aws
  2. Cordonnez les nœuds du plan de contrôle, afin que les pods du contrôleur de cloud AWS s’exécutent sur les nœuds uniquement après la mise à niveau vers le fournisseur de cloud externe :

    kubectl cordon -l "node-role.kubernetes.io/controlplane=true"
  3. Pour installer le gestionnaire de contrôleur de cloud AWS, vous devez activer la migration du leader et suivre les mêmes étapes que lors de l’installation d’AWS sur un nouveau cluster. Pour activer la migration du leader, ajoutez ce qui suit aux arguments du conteneur à l’étape 7 tout en suivant les étapes pour installer le chart :

    - '--enable-leader-migration=true'
  4. Confirmez que le chart est installé mais que les nouveaux pods ne s’exécutent pas encore en raison des nœuds du plan de contrôle cordonnés. Après avoir mis à jour le cluster à l’étape suivante, RKE mettra à niveau et décordonnera chaque nœud, et planifiera les pods aws-controller-manager.

  5. Mettez à jour cluster.yml pour changer le fournisseur de cloud et supprimer les arguments de migration du leader du kube-controller.

    Sélectionner Amazon externe définit --cloud-provider=external et vous permet d’activer useInstanceMetadataHostname. Vous devez activer useInstanceMetadataHostname pour les clusters de pilotes de nœuds et pour les clusters personnalisés si vous ne fournissez pas de nom de nœud personnalisé via --node-name. L’activation de useInstanceMetadataHostname interrogera le service de métadonnées ec2 et définira /hostname comme hostname-override pour kubelet et kube-proxy :

    rancher_kubernetes_engine_config:
      cloud_provider:
        name: external-aws
        useInstanceMetadataHostname: true/false

    Supprimez enable-leader-migration si vous ne souhaitez pas qu’il soit activé dans votre cluster :

      services:
        kube-controller:
          extra_args:
            enable-leader-migration: "true"

    Vous pouvez également désactiver la migration du leader après avoir terminé la migration. Mettez à niveau le chart et supprimez la section suivante des arguments du conteneur :

    - --enable-leader-migration=true
  6. Si vous mettez à niveau la version Kubernetes du cluster, définissez également la version Kubernetes.

  7. Mettez à jour le cluster. Les pods aws-cloud-controller-manager devraient maintenant être en cours d’exécution.