Wie funktioniert EKS Anywhere Cluster-Bootstrapping?

Lesedauer: 4 Minute
0

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)

Arbeitsablauf bei der Clustererstellung

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr