Wie funktioniert EKS Anywhere Cluster-Bootstrapping?
Ich möchte den Bootstrapping-Prozess für Amazon Elastic Kubernetes Service (Amazon EKS) Anywhere verstehen.
Lösung
Der Bootstrap-Cluster
Wenn Sie einen ersten eigenständigen Cluster oder Management-Cluster erstellen, erstellt Amazon EKS Anywhere auch einen Bootstrap-Cluster. Dies ist ein temporärer Kubernetes in Docker (KinD)-Cluster mit einem Knoten, der auf einem separaten administrativen Computer erstellt wurde, um die Erstellung Ihres Hauptclusters zu erleichtern.
EKS Anywhere erstellt einen Bootstrap-Cluster auf dem administrativen Computer, der CAPI- und CAPX-Operatoren hostet. Um den Bootstrap-Cluster zu erstellen, muss EKS Anywhere die folgenden Schritte ausführen:
- Abrufen des KinD-Node-Images
- Vorbereiten der Knoten
- Schreiben der Konfiguration
- Starten der Steuerebene
- Installieren des CNI
- Installieren der StorageClass auf dem KIND-basierten Einzelknoten-Cluster
Erstellung des Clusters
Wenn der Bootstrap-Cluster auf dem administrativen Computer ausgeführt und ordnungsgemäß konfiguriert ist, beginnt die Erstellung des Zielclusters. EKS Anywhere verwendet kubectl, um eine Zielcluster-Konfiguration im folgenden Prozess anzuwenden:
1. Nachdem etcd, die Steuerungsebene und die Worker-Knoten bereit sind, erhält der Zielcluster seine Netzwerkkonfiguration.
2. Der Zielcluster erhält seine standardmäßige Speicherklasseninstallation.
3. CAPI-Anbieter werden auf dem Zielcluster konfiguriert. Auf diese Weise kann der Zielcluster die Komponenten steuern und ausführen, die er für die Verwaltung selbst benötigt.
4. Nachdem CAPI auf dem Zielcluster ausgeführt wurde, werden CAPI-Objekte vom Bootstrap-Cluster in den CAPI-Service des Zielclusters verschoben. Dies geschieht intern mit dem Befehl clusterctl.
5. Der Zielcluster erhält Kubernetes-CRDs und andere Add-Ons, die spezifisch für EKS Anywhere sind.
6. Die Clusterkonfiguration wird gespeichert.
Der Bootstrapping-Prozess erstellt eine YAML-Datei, die sich in CLUSTER_NAME/generated/CLUSTER_NAME-eks-a-cluster.yaml. befindet
Wenn das Boostrapping erfolgreich ist, wird diese YAML-Datei nach CLUSTER_NAME/CLUSTER_NAME-eks-a-cluster.yaml verschoben
In ähnlicher Weise wechselt Kubeconfig von CLUSTER_NAME/generated/CLUSTER_NAME.kind.kubeconfig auf CLUSTER_NAME/CLUSTER_NAME-eks-a-cluster.kubeconfig.
Wenn etcd, die Steuerungsebene und die Worker-Knoten bereit sind, erhält der Workload-Cluster seine Netzwerkkonfiguration. Wenn der Cluster aktiv ist und der CAPI-Service auf dem neuen Cluster ausgeführt wird, wird der Bootstrap-Cluster nicht mehr benötigt. Dann löscht der Dienst den Bootstrap-Cluster.
Verpacken von Workflows
Während des Bootstrapping-Prozesses verwendet EKS Anywhere in seinen Workflows die folgende Logik für die Erstellung des Zielclusters, das Cluster-Upgrade und das Löschen des Clusters.
Cluster-Erstellung
Den vollständigen Paket-Workflow bei der Cluster-Erstellung finden Sie unter create.go auf GitHub. Während dieses Workflows verwendet EKS Anywhere die folgende Logik:
- Setups und Validierungen
Hinweis: Schlägt dieser Schritt fehl, sind entweder die Vorläufe fehlgeschlagen oder die Registrierung ist nicht richtig eingerichtet. - Erstellen Sie einen neuen Bootstrap-Cluster
Erstellen Sie einen neuen KinD-Cluster
Anbieterspezifisches Pre-Capi-Install-Setup auf dem Bootstrap-Cluster
Installieren Sie Cluster-API-Anbieter auf dem Bootstrap-Cluster
Anbieterspezifischer Post-Setup - Erstellen eines neuen Workload-Clusters
Auf Bereitschaft des externen etcd warten
Auf Verfügbarkeit der Steuerebene warten
Auf die Generierung von Workload kubeconfig warten
Installieren des On-Workload-Clusters im Netzwerk
Installieren der Systemzustandsprüfungen auf dem Bootstrap-Cluster
Auf die Bereitschaft der Steuerebene und der Worker-Maschinen warten - Installieren von Ressourcen in der Verwaltung
- Installieren der Aufgabe eks-a-Komponenten
- Installieren des Git Ops Managers
- Verschieben der Clusterverwaltung
- Schreiben von ClusterConfig
- Löschen des Bootstrap-Clusters
- Installieren der kuratierten Pakete
Cluster-Upgrade
Den vollständigen Paket-Workflow während eines Cluster-Upgrades finden Sie unter upgrade.go auf GitHub. Während dieses Workflows verwendet EKS Anywhere die folgende Logik:
- Setups und Validierungen
- Aktualisieren von Geheimnissen
- Sicherstellen, dass etcd CAPI-Komponenten vorhanden sind
- Aufrüsten von Kernkomponenten
- Überprüfen des erforderliche Upgrades
- Pausieren des eks-a Abgleichs
- Erstellen des Bootstrap-Clusters
- Installieren von CAPI
- Verschieben der Verwaltung in den Bootstrap-Cluster
- Verschieben der Verwaltung in den Workload-Cluster
- Durchführen eines Upgrades des Workload-Clusters
- Löschen des Bootstrap-Clusters
- Aktualisieren des Workload-Clusters und der Git-Ressourcen
- Fortsetzen des eks-a-Abgleichs
- Schreiben von ClusterConfig
Löschen von Clustern
Den vollständigen Paket-Workflow beim Löschen eines Clusters finden Sie unter delete.go auf GitHub. Während dieses Workflows verwendet EKS Anywhere die folgende Logik:
- Setups und Validierungen
- Erstellen eines Management-Clusters
- Installieren von CAPI
- Verschieben der Clusterverwaltung
- Löschen des Workload-Clusters
- Bereinigen von Git-Repository
- Löschen von Paketressourcen
- Löschen des Management-Clusters
Fehler bei der Clustererstellung
Wenn Sie auf Probleme oder Fehler stoßen, suchen Sie auf dem Administrationscomputer und im Capc-Controller-Manager nach Protokollen. Sehen Sie sich die Capc-Controller-Manager-Protokolle mit kubectl im Capc-System-Namespace an. Zur weiteren Problembehandlung überprüfen Sie den Status der CAPI-Objekte für Ihren Cluster, die sich im eksa-System-Namespace befinden.
Möglicherweise finden Sie auch ähnliche Informationen zu Fehlern in den Protokollen anderer CAPI-Manager wie capi-kubeadm-bootstrap-controller, capi-kubeadm-control-plane-controller und capi-controller-manager. Diese Manager arbeiten zusammen, und Sie können jeden in seinem eigenen Namespace mit dem kubectl-Befehl get pods -A lokalisieren. Weitere Informationen finden Sie in der Anleitung zur Fehlerbehebung für EKS Anywhere.
Ein Skript zur Behebung von Linting-Fehlern während des Bootstrapping-Prozesses finden Sie unter bootstrapper.go auf GitHub.
Ähnliche Informationen
KinD-Schnellstart (auf der KinD-Website)
Relevanter Inhalt
- Wie gewähre ich anderen IAM-Benutzern und -Rollen nach der Cluster-Erstellung in Amazon EKS Zugriff?AWS OFFICIALAktualisiert vor 3 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor 6 Monaten