|
Dieses Dokument wurde mithilfe automatisierter maschineller Übersetzungstechnologie übersetzt. Wir bemühen uns um korrekte Übersetzungen, übernehmen jedoch keine Gewähr für die Vollständigkeit, Richtigkeit oder Zuverlässigkeit der übersetzten Inhalte. Im Falle von Abweichungen ist die englische Originalversion maßgebend und stellt den verbindlichen Text dar. |
Migration von Amazon In-tree zu Out-of-tree
Kubernetes entfernt sich von der Pflege von Cloud-Anbietern im Baum. In Kubernetes v1.27 und später wurden die in-tree Cloud-Anbieter entfernt. Die Rancher-Benutzeroberfläche ermöglicht es Ihnen, auf Kubernetes v1.27 zu aktualisieren, wenn Sie von einem in-tree zu einem out-of-tree Anbieter migrieren.
Wenn Sie jedoch eine manuelle Migration durchführen, müssen bestehende Cluster auf Kubernetes v1.27 aktualisieren, nachdem Sie migriert sind, um funktionsfähig zu bleiben.
Um vom in-tree Cloud-Provider zum out-of-tree AWS-Cloud-Provider zu migrieren, müssen Sie den Kube-Controller-Manager des bestehenden Clusters stoppen und den AWS-Cloud-Controller-Manager installieren. Es gibt viele Möglichkeiten, dies zu tun. Bitte beachten Sie die offizielle AWS-Dokumentation zum externen Cloud-Controller-Manager für weitere Details.
Wenn es akzeptabel ist, während der Migration eine gewisse Ausfallzeit zu haben, folgen Sie den Anweisungen, um einen externen Cloud-Provider einzurichten. Diese Anweisungen beschreiben, wie der externe Cloud-Anbieter für einen neu bereitgestellten Cluster konfiguriert wird. Während der Einrichtung wird es eine gewisse Ausfallzeit geben, da es eine Zeitspanne gibt, in der der alte Cloud-Anbieter nicht mehr läuft und der neue Cloud-Anbieter zu laufen beginnt.
Wenn Ihr Setup keine Ausfallzeit der Control Plane tolerieren kann, müssen Sie die Führungsmigration aktivieren. Dies erleichtert einen reibungslosen Übergang von den Controllern im Kube-Controller-Manager zu ihren Gegenstücken im Cloud-Controller-Manager. Bitte beachten Sie die offizielle AWS-Dokumentation zu Verwendung der Führungsmigration für weitere Details.
|
Wichtig:
Die Kubernetes Dokumentation zur Migration des Cloud-Controllers besagt, dass es möglich ist, mit derselben Kubernetes-Version zu migrieren, geht jedoch davon aus, dass die Migration Teil eines Kubernetes-Upgrades ist. Verweisen Sie auf die Kubernetes-Dokumentation zu Migration zur Verwendung des Cloud-Controller-Managers, um zu sehen, ob Sie Ihre Einrichtung vor der Migration anpassen müssen. Bestätigen Sie Ihre Werte der Migrationskonfiguration. Wenn Ihr Cloud-Anbieter eine Implementierung des Node IPAM-Controllers bereitstellt, müssen Sie auch den IPAM-Controller migrieren. |
-
RKE2
-
RKE
-
Aktualisieren Sie die Clusterkonfiguration, um die Führungsmigration zu aktivieren:
spec: rkeConfig: machineSelectorConfig: - config: kube-controller-manager-arg: - enable-leader-migration machineLabelSelector: matchExpressions: - key: rke.cattle.io/control-plane-role operator: In values: - 'true'Beachten Sie, dass der Cloud-Anbieter in diesem Schritt weiterhin
awsist:spec: rkeConfig: machineGlobalConfig: cloud-provider-name: aws -
Sperren Sie die Steuerungsknoten, damit die AWS-Cloud-Controller-Pods nur nach dem Upgrade auf den externen Cloud-Anbieter auf den Knoten ausgeführt werden:
kubectl cordon -l "node-role.kubernetes.io/control-plane=true" -
Um den AWS-Cloud-Controller-Manager mit aktivierter Führungsmigration zu installieren, folgen Sie den Schritten 1–3, um das Cloud-Controller-Manager-Chart bereitzustellen. Ab Kubernetes 1.22 wird der Kube-Controller-Manager eine Standardkonfiguration verwenden, die die Migration vom Controller zum Manager erfüllt. Aktualisieren Sie die Container-Argumente des
aws-cloud-controller-managerunterspec.rkeConfig.additionalManifest, um die Führungsmigration zu aktivieren:- '--enable-leader-migration=true' -
Installieren Sie das Chart und bestätigen Sie, dass das Daemonset
aws-cloud-controller-managererfolgreich bereitgestellt wurde:kubectl rollout status daemonset -n kube-system aws-cloud-controller-manager -
Aktualisieren Sie das Provisionierungs-Cluster, um den Cloud-Anbieter zu ändern und die Argumente für die Führungsmigration aus dem Kube-Controller zu entfernen. Wenn Sie die Kubernetes-Version aktualisieren, setzen Sie auch die Kubernetes-Version im Abschnitt
spec.kubernetesVersionder Cluster-YAML-Datei.WichtigEntfernen Sie
cloud-provider-name: awsnur, wenn Sie sich nicht auf den rke2-Supervisor verlassen, um die providerID korrekt festzulegen.Entfernen Sie
enable-leader-migration, wenn Sie es in Ihrem Cluster nicht aktiviert haben wollen:spec: rkeConfig: machineGlobalConfig: cloud-provider-name: externalEntfernen Sie
enable-leader-migrationvon:spec: rkeConfig: machineSelectorConfig: - config: kube-controller-manager-arg: - enable-leader-migration machineLabelSelector: matchExpressions: - key: rke.cattle.io/control-plane-role operator: In values: - 'true'Sie können die Führungsmigration nach dem Upgrade auch deaktivieren, da die Führungsmigration aufgrund nur eines Cloud-Controller-Managers nicht mehr erforderlich ist und entfernt werden kann. Führen Sie ein Upgrade des Charts durch und entfernen Sie den folgenden Abschnitt aus den Container-Argumenten:
- --enable-leader-migration=trueÜberprüfen Sie, ob die Aktualisierung des Cloud-Controller-Managers erfolgreich mit dem folgenden Befehl ausgerollt wurde:
kubectl rollout status daemonset -n kube-system aws-cloud-controller-manager -
Der Cloud-Anbieter ist verantwortlich für die Festlegung der ProviderID des Knotens. Überprüfen Sie, ob alle Knoten mit der ProviderID initialisiert sind:
kubectl describe nodes | grep "ProviderID"
-
Aktualisieren Sie die Clusterkonfiguration, um die Führungsmigration in
cluster.ymlzu aktivieren:services: kube-controller: extra_args: enable-leader-migration: "true"Beachten Sie, dass der Cloud-Anbieter in diesem Schritt weiterhin
awsist:cloud_provider: name: aws -
Sperren Sie die Steuerungsknoten, damit die AWS-Cloud-Controller-Pods nur nach dem Upgrade auf den externen Cloud-Anbieter auf den Knoten ausgeführt werden:
kubectl cordon -l "node-role.kubernetes.io/controlplane=true" -
Um den AWS-Cloud-Controller-Manager zu installieren, müssen Sie die Führungsmigration aktivieren und die gleichen Schritte wie bei der Installation von AWS auf einem neuen Cluster befolgen. Um die Führungsmigration zu aktivieren, fügen Sie Folgendes zu den Containerargumenten in Schritt 7 hinzu, während Sie die Schritte zur Installation des Charts befolgen:
- '--enable-leader-migration=true' -
Bestätigen Sie, dass das Chart installiert ist, die neuen Pods jedoch aufgrund der gesperrten Steuerungsknoten noch nicht ausgeführt werden. Nach dem Update des Clusters im nächsten Schritt wird RKE jeden Knoten aktualisieren, entcordonieren und
aws-controller-managerPods planen. -
Aktualisieren Sie
cluster.yml, um den Cloud-Anbieter zu ändern und die Argumente zur Führungsmigration aus dem Kube-Controller zu entfernen.Die Auswahl von Externes Amazon (out-of-tree) setzt
--cloud-provider=externalund ermöglicht es Ihnen,useInstanceMetadataHostnamezu aktivieren. Sie müssenuseInstanceMetadataHostnamefür Node-Driver-Cluster und für benutzerdefinierte Cluster aktivieren, wenn Sie keinen benutzerdefinierten Knotennamen über--node-namebereitstellen. Das Aktivieren vonuseInstanceMetadataHostnamewird den EC2-Metadatenservice abfragen und/hostnamealshostname-overridefürkubeletundkube-proxyfestlegen:rancher_kubernetes_engine_config: cloud_provider: name: external-aws useInstanceMetadataHostname: true/falseEntfernen Sie
enable-leader-migration, wenn Sie es in Ihrem Cluster nicht aktiviert haben wollen:services: kube-controller: extra_args: enable-leader-migration: "true"Sie können die Führungsmigration auch deaktivieren, nachdem Sie die Migration abgeschlossen haben. Führen Sie ein Upgrade des Charts durch und entfernen Sie den folgenden Abschnitt aus den Container-Argumenten:
- --enable-leader-migration=true -
Wenn Sie die Kubernetes-Version des Clusters aktualisieren, setzen Sie auch die Kubernetes-Version.
-
Aktualisieren Sie das Cluster. Die
aws-cloud-controller-managerPods sollten jetzt laufen.