Wie behebe ich Fehler bei der Erstellung von verwalteten Amazon-EKS-Knotengruppen?

Lesedauer: 6 Minute
0

Meine von Amazon Elastic Kubernetes Service (Amazon EKS) verwaltete Knotengruppe konnte nicht erstellt werden. Knoten können dem Cluster nicht beitreten und ich habe eine Fehlermeldung ähnlich der folgenden erhalten: „Instances failed to join the kubernetes cluster“.

Kurzbeschreibung

Gehen Sie folgendermaßen vor, um Fehler bei der Erstellung von verwalteten Amazon-EKS-Knotengruppen zu beheben:

  • Verwenden Sie das Automatisierungs-Runbook des AWS Systems Managers, um häufig auftretende Probleme zu identifizieren.
  • Überprüfen Sie die Datenverkehrsanforderungen für die Worker-Knoten-Sicherheitsgruppe.
  • Überprüfen Sie die Identity and Access Management (IAM)-Berechtigungen des Worker-Knotens.
  • Vergewissern Sie sich, dass die Amazon Virtual Private Cloud (Amazon VPC) für Ihren Cluster einen DNS-Hostnamen und eine DNS-Auflösung unterstützt.
  • Aktualisieren Sie die aws-auth ConfigMap mit der NodeInstanceRole Ihrer Worker-Knoten.
  • Legen Sie die Tags für Ihre Worker-Knoten fest.
  • Vergewissern Sie sich, dass die Amazon VPC-Subnetze für den Worker-Knoten über verfügbare IP-Adressen verfügen.
  • Vergewissern Sie sich, dass die Worker-Knoten den API-Serverendpunkt für Ihren Cluster erreichen können.
  • Stellen Sie sicher, dass die API-Endpunkte von Amazon Elastic Compute Cloud (Amazon EC2), Amazon Elastic Container Registry (Amazon ECR) und Amazon Simple Storage Service (Amazon S3) Ihre AWS-Region erreichen können.

Lösung

Hinweis: Wenn Sie beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste AWS CLI-Version verwenden.

Verwendung des Automatisierungs-Runbooks des Systems Managers, um häufig auftretende Probleme zu identifizieren

Verwenden Sie das AWSSupport-TroubleshootEKSWorkerNode-Runbook, um häufig auftretende Probleme zu finden, die verhindern, dass Worker-Knoten Ihrem Cluster beitreten.

Wichtig: Damit die Automatisierung funktioniert, müssen Ihre Worker-Knoten berechtigt sein, auf den Systems Manager zuzugreifen und der Systems Manager muss ausgeführt werden. Um die Genehmigung zu erteilen, fügen Sie die von AWS verwaltete Richtlinie AmazonSSMManagedInstanceCore an die IAM-Rolle an, die Ihrem EC2-Instance-Profil entspricht. Dies ist die Standardkonfiguration für von EKS verwaltete Knotengruppen, die über eksctl erstellt werden.

  1. Öffnen Sie das Runbook.
  2. Vergewissern Sie sich, dass die AWS-Region in der AWS-Managementkonsole auf dieselbe Region wie Ihr Cluster eingestellt ist.
    Hinweis: Weitere Informationen zum Runbook finden Sie im Abschnitt Dokumentdetails des Runbooks.
  3. Geben Sie im Abschnitt Eingabeparameter den Namen Ihres Clusters im Feld ClusterName und die Instance-ID im Feld WorkerID an.
  4. (Optional) Geben Sie im Feld AutomationAssumeRole die IAM-Rolle an, damit Systems Manager Aktionen ausführen kann. Wird nichts angegeben, werden die IAM-Berechtigungen Ihrer aktuellen IAM-Entität verwendet, um die Aktionen im Runbook auszuführen.
  5. Wählen Sie Ausführen aus.
  6. Sehen Sie im Abschnitt Ausgaben nach, warum Ihr Worker-Knoten Ihrem Cluster nicht beitritt und welche Schritte Sie unternehmen können, um das Problem zu lösen.

Überprüfen der Anforderungen an den Datenverkehr für die Worker-Knoten

Bestätigen Sie, dass die Sicherheitsgruppe Ihrer Steuerebene und die Worker-Knoten-Sicherheitsgruppe mit den empfohlenen Einstellungen für ein- und ausgehenden Datenverkehr konfiguriert sind. Standardmäßig wendet Amazon EKS die Cluster-Sicherheitsgruppe auf die Instances in Ihrer Knotengruppe an, um die Kommunikation zwischen Knoten und der Steuerebene zu erleichtern. Wenn Sie in der Startvorlage für Ihre verwaltete Knotengruppe benutzerdefinierte Sicherheitsgruppen angeben, fügt Amazon EKS die Cluster-Sicherheitsgruppe nicht hinzu.

Überprüfen der IAM-Berechtigungen des Worker-Knotens

Stellen Sie sicher, dass der IAM-Instance-Rolle, die dem Worker-Knoten zugeordnet ist, die Richtlinien AmazonEKSWorkerNodePolicy und AmazonEC2ContainerRegistryReadOnly angehängt sind.

Hinweis: Sie müssen die von Amazon verwaltete Richtlinie AmazonEKS_CNI_Policy an eine IAM-Rolle anhängen. Sie können sie an die Knoten-Instance-Rolle anhängen. Es ist jedoch eine bewährte Methode, die Richtlinie einer Rolle zuzuordnen, die mit dem aws-node-Kubernetes-Servicekonto im kube-system-Namespace verknüpft ist. Weitere Informationen finden Sie unter Konfiguration des Amazon-VPC-CNI-Plug-ins für Kubernetes zur Verwendung von IAM-Rollen für Servicekonten.

Sicherstellen, dass die Amazon VPC für Ihren Cluster einen DNS-Hostnamen und eine DNS-Auflösung unterstützt

Nachdem Sie den privaten Zugriff für Ihren EKS-Cluster-Endpunkt konfiguriert haben, müssen Sie einen DNS-Hostnamen und eine DNS-Auflösung für Ihre Amazon VPC aktivieren. Wenn Sie den privaten Endpunktzugriff aktivieren, erstellt Amazon EKS eine private gehostete Amazon-Route-53-Zone für Sie. Anschließend verknüpft Amazon EKS diese mit der Amazon VPC Ihres Clusters. Weitere Informationen finden Sie unter Cluster-Endpunkt-Zugriffskontrolle für Amazon EKS.

Aktualisieren der aws-auth ConfigMap mit der NodeInstanceRole Ihrer Worker-Knoten

Stellen Sie sicher, dass die aws-auth ConfigMap korrekt mit der IAM-Rolle Ihrer Worker-Knoten konfiguriert ist und nicht mit dem Instance-Profil.

Festlegen der Tags für Ihre Worker-Knoten

Legen Sie für die Tag-Eigenschaft Ihrer Worker-Knoten den Schlüssel auf kubernetes.io/cluster/clusterName und den Wert auf owned fest.

Sicherstellen, dass die Amazon-VPC-Subnetze für den Worker-Knoten über verfügbare IP-Adressen verfügen

Wenn Ihrer Amazon VPC die IP-Adressen ausgehen, können Sie Ihrer vorhandenen Amazon VPC ein sekundäres CIDR zuordnen. Weitere Informationen finden Sie unter Amazon EKS: VPC- und Subnetz-Anforderungen und -Überlegungen.

Sicherstellen, dass Ihre Amazon-EKS-Worker-Knoten den API-Serverendpunkt für Ihren Cluster erreichen können

Sie können Worker-Knoten in jedem Subnetz innerhalb Ihrer Cluster-VPC oder Ihres Peering-Subnetzes starten, wenn eine Internet-Route über die folgenden Gateways besteht:

  • NAT
  • Internet
  • Transit

Wenn Ihre Worker-Knoten in einem eingeschränkten privaten Netzwerk gestartet werden, überprüfen Sie, ob Ihre Worker-Knoten den Amazon-EKS-API-Serverendpunkt erreichen können. Weitere Informationen finden Sie in den Anforderungen für die Ausführung von Amazon EKS in einem privaten Cluster ohne ausgehenden Internetzugang.

Hinweis: Für Knoten, die sich in einem privaten Subnetz befinden, das von einem NAT-Gateway unterstützt wird, empfiehlt es sich, das NAT-Gateway in einem öffentlichen Subnetz zu erstellen.

Wenn Sie keine AWS-PrivateLink-Endpunkte verwenden, überprüfen Sie den Zugriff auf API-Endpunkte über einen Proxyserver für die folgenden AWS-Services:

  • Amazon EC2
  • Amazon ECR
  • Amazon S3

Um zu überprüfen, ob der Worker-Knoten Zugriff auf den API-Server hat, stellen Sie über SSH eine Verbindung zu Ihrem Worker-Knoten her und führen Sie den folgenden netcat-Befehl aus:

nc -vz 9FCF4EA77D81408ED82517B9B7E60D52.yl4.eu-north-1.eks.amazonaws.com 443

Hinweis: Ersetzen Sie 9FCF4EA77D81408ED82517B9B7E60D52.yl4.eu-north-1.eks.amazonaws.com durch Ihren API-Serverendpunkt.

Überprüfen Sie die kubelet-Protokolle, während Sie noch mit Ihrer Instance verbunden sind:

journalctl -f -u kubelet

Wenn die kubelet-Protokolle keine Informationen zur Ursache des Problems enthalten, überprüfen Sie den Status des **kubelets ** auf dem Worker-Knoten:

sudo systemctl status kubelet

Sammeln Sie die Amazon-EKS-Protokolle und die Betriebssystemprotokolle für weitere Problembehebungen.

Sicherstellen, dass die Amazon-EC2-, Amazon-ECR- und Amazon-S3-API-Endpunkte Ihre AWS-Region erreichen können

Verwenden Sie SSH, um eine Verbindung zu einem der Worker-Knoten herzustellen, und führen Sie dann die folgenden Befehle für die einzelnen Dienste aus:

$ nc -vz ec2.region.amazonaws.com 443
$ nc -vz ecr.region.amazonaws.com 443
$ nc -vz s3.region.amazonaws.com 443

Hinweis: Ersetzen Sie die region durch die AWS-Region für Ihren Worker-Knoten.

Konfigurieren der Benutzerdaten für Ihren Worker-Knoten

Für Startvorlagen für verwaltete Knotengruppen mit einem bestimmten AMI müssen Sie Bootstrap-Befehle für Worker-Knoten angeben, damit sie Ihrem Cluster beitreten können. Amazon EKS führt die Standard-Bootstrap-Befehle nicht mit Ihren Benutzerdaten zusammen. Weitere Informationen finden Sie unter Einführung von Startvorlagen und benutzerdefinierter AMI-Unterstützung in verwaltete Knotengruppen in Amazon EKS und Spezifizieren eines AMI.

Beispiel für eine Startvorlage mit Bootstrap-Befehlen:

#!/bin/bash
set -o xtrace
/etc/eks/bootstrap.sh ${ClusterName} ${BootstrapArguments}

Hinweis: Ersetzen Sie ${ClusterName} durch den Namen Ihres Amazon-EKS-Clusters. Ersetzen Sie ${BootstrapArguments} bei Bedarf durch zusätzliche Bootstrap-Werte.

Ähnliche Informationen

Amazon-EKS-Fehlerbehebung

Wie kann ich meine Worker-Knoten dazu bringen, meinem Amazon-EKS-Cluster beizutreten?