Fehlerbehebung bei Problemen mit dem Amazon EKS Connector - Amazon EKS

Unterstützung für die Verbesserung dieser Seite beitragen

Um zu diesem Benutzerhandbuch beizutragen, klicken Sie auf den Link Diese Seite auf GitHub bearbeiten, der sich im rechten Bereich jeder Seite befindet.

Fehlerbehebung bei Problemen mit dem Amazon EKS Connector

Dieses Thema behandelt einige der häufigsten Fehler, die bei der Verwendung des Amazon EKS Connectors auftreten können, einschließlich Anleitungen zu deren Behebung und Umgehungen.

Grundlegende Fehlersuche

In diesem Abschnitt werden die Schritte zur Diagnose von Problemen mit dem Amazon EKS Connector beschrieben.

Prüfen Sie den Status von Amazon EKS Connector

Um den Status von Amazon EKS Connector zu überprüfen, geben Sie Folgendes ein:

kubectl get pods -n eks-connector

Überprüfen Sie die Protokolle des Amazon-EKS-Connectors

Der Amazon EKS Connector Pod besteht aus drei Containern. Führen Sie die folgenden Befehle aus, um vollständige Protokolle für alle diese Container abzurufen, damit Sie sie überprüfen können:

  • connector-init

    kubectl logs eks-connector-0 --container connector-init -n eks-connector kubectl logs eks-connector-1 --container connector-init -n eks-connector
  • connector-proxy

    kubectl logs eks-connector-0 --container connector-proxy -n eks-connector kubectl logs eks-connector-1 --container connector-proxy -n eks-connector
  • connector-agent

    kubectl exec eks-connector-0 --container connector-agent -n eks-connector -- cat /var/log/amazon/ssm/amazon-ssm-agent.log kubectl exec eks-connector-1 --container connector-agent -n eks-connector -- cat /var/log/amazon/ssm/amazon-ssm-agent.log

Bringen Sie den effektiven Clusternamen in Erfahrung

Amazon-EKS-Cluster werden innerhalb eines einzigen AWS-Kontos und AWS-Region von clusterName identifiziert. Wenn Sie mehrere verbundene Cluster in Amazon EKS haben, können Sie bestätigen, bei welchem ​​Amazon-EKS-Cluster der aktuelle Kubernetes-Cluster registriert ist. Geben Sie dafür Folgendes ein, um den clusterName des aktuellen Clusters herauszufinden.

kubectl exec eks-connector-0 --container connector-agent -n eks-connector \ -- cat /var/log/amazon/ssm/amazon-ssm-agent.log | grep -m1 -oE "eks_c:[a-zA-Z0-9_-]+" | sed -E "s/^.*eks_c:([a-zA-Z0-9_-]+)_[a-zA-Z0-9]+.*$/\1/" kubectl exec eks-connector-1 --container connector-agent -n eks-connector \ -- cat /var/log/amazon/ssm/amazon-ssm-agent.log | grep -m1 -oE "eks_c:[a-zA-Z0-9_-]+" | sed -E "s/^.*eks_c:([a-zA-Z0-9_-]+)_[a-zA-Z0-9]+.*$/\1/"

Verschiedene Befehle

Die folgenden Befehle sind nützlich, um Informationen abzurufen, die Sie zur Behebung von Problemen benötigen.

  • Verwenden Sie den folgenden Befehl, um Images zu sammeln, die von Pods in Amazon EKS Connector verwendet werden.

    kubectl get pods -n eks-connector -o jsonpath="{.items[*].spec.containers[*].image}" | tr -s '[[:space:]]' '\n'
  • Verwenden Sie den folgenden Befehl, um die Knotennamen zu ermitteln, auf denen Amazon-EKS-Connector ausgeführt wird.

    kubectl get pods -n eks-connector -o jsonpath="{.items[*].spec.nodeName}" | tr -s '[[:space:]]' '\n'
  • Führen Sie den folgenden Befehl aus, um Ihre Kubernetes-Client- und Server-Versionen abzurufen.

    kubectl version
  • Führen Sie den folgenden Befehl aus, um Informationen zu Ihren Knoten abzurufen.

    kubectl get nodes -o wide --show-labels

Helm-Ausgabe: 403 Forbidden

Wenn Sie beim Ausführen von Helm-Installationsbefehlen die folgende Fehlermeldung erhalten haben:

Error: INSTALLATION FAILED: unexpected status from HEAD request to https://public.ecr.aws/v2/eks-connector/eks-connector-chart/manifests/0.0.6: 403 Forbidden

Sie können die folgende Zeile ausführen, um das Problem zu beheben:

docker logout public.ecr.aws

Konsolenfehler: Der Cluster steckt im Status „Ausstehend“ fest

Wenn der Cluster in der Amazon-EKS-Konsole im Pending-Status hängen bleibt, nachdem Sie ihn registriert haben, kann dies daran liegen, dass Amazon EKS Connector den Cluster noch nicht erfolgreich mit AWS verbunden hat. Für einen registrierten Cluster bedeutet der Pending-Status, dass die Verbindung nicht erfolgreich hergestellt wurde. Um dieses Problem zu lösen, stellen Sie sicher, dass Sie das Manifest auf den Kubernetes-Ziel-Cluster angewendet haben. Wenn Sie es auf den Cluster angewendet haben, der Cluster sich aber immer noch im Pending-Zustand befindet, ist eks-connector-StatefulSet möglicherweise fehlerhaft. Informationen zum Beheben dieses Problems finden Sie in diesem Thema unter Amazon-EKS-Connector-Pods stürzen fortlaufend ab.

Konsolenfehler: Benutzer „system:serviceaccount:eks-connector:eks-connector“ kann keine Ressourcen-Benutzer in der API-Gruppe auf Cluster-Ebene imitieren.

Der Amazon EKS Connector nutzt die Kubernetes-Benutzer-Identitätsübernahme, um im Namen von IAM-Prinzipalen aus dem AWS-Managementkonsole zu agieren. Jedem IAM-Prinzipal, der auf die Kubernetes-API über das AWS eks-connector-Servicekonto zugreift, muss die Berechtigung gewährt werden, die Identität des entsprechenden Kubernetes-Benutzers mit einem IAM-ARN als Kubernetes-Benutzernamen anzunehmen. In den folgenden Beispielen wird der IAM-ARN einem Kubernetes-Benutzer zugeordnet.

  • IAM-Benutzer John vom AWS-Konto 111122223333 wird einem Kubernetes-Benutzer zugeordnet. Bewährte Methoden für IAM empfehlen, dass Sie Rollen statt Benutzern Berechtigungen gewähren.

    arn:aws:iam::111122223333:user/john
  • IAM-Rollen-Administrator von AWS-Konto 111122223333 ist einem Kubernetes-Benutzer zugeordnet:

    arn:aws:iam::111122223333:role/admin

    Das Ergebnis ist ein ARN der IAM-Rolle anstelle des ARN der AWS-STS-Sitzung.

Anweisungen zum Konfigurieren der ClusterRole und ClusterRoleBinding, um dem eks-connector-Servicekonto die Berechtigung zu erteilen, sich als zugeordneter Benutzer auszugeben, finden Sie unter Gewähren Sie Zugriff auf die Anzeige von Kubernetes-Cluster-Ressourcen in einer Amazon-EKS-Konsole.. Stellen Sie sicher, dass %IAM_ARN% in der Vorlage durch den IAM-ARN des AWS-Managementkonsole-IAM-Prinzipals ersetzt wird.

Konsolenfehler: […​] ist verboten: Benutzer […​] kann Ressource […​] nicht in der API-Gruppe im Cluster-Bereich auflisten

Betrachten Sie das folgende Problem. Der Amazon EKS Connector hat sich erfolgreich als den anfordernden AWS-Managementkonsole-IAM-Prinzipal im Kubernetes-Ziel-Cluster ausgegeben. Der imitierte Prinzipal verfügt jedoch nicht über die RBAC-Berechtigung für Kubernetes-API-Operationen.

Um dieses Problem zu beheben, gibt es zwei Methoden, um zusätzlichen Benutzern Berechtigungen zu erteilen. Wenn Sie „eks-connector“ zuvor über Helm-Chart installiert haben, können Sie Benutzern ganz einfach Zugriff gewähren, indem Sie den folgenden Befehl ausführen. Ersetzen Sie userARN1 und userARN2 durch eine Liste der ARNs der IAM-Rollen, um Zugriff auf die -Ressourcen zu gewähren:

helm upgrade eks-connector oci://public.ecr.aws/eks-connector/eks-connector-chart \ --reuse-values \ --set 'authentication.allowedUserARNs={userARN1,userARN2}'

Alternativ können Sie als Cluster-Administrator einzelnen Kubernetes-Benutzern die entsprechenden RBAC-Berechtigungen zuweisen. Weitere Informationen und Beispiele finden Sie unter Gewähren Sie Zugriff auf die Anzeige von Kubernetes-Cluster-Ressourcen in einer Amazon-EKS-Konsole..

Konsolenfehler: Amazon EKS kann nicht mit dem API-Server Ihres Kubernetes-Clusters kommunizieren. Der Cluster muss sich im ACTIVE-Status befinden, um eine erfolgreiche Verbindung zu erreichen. Try again in few minutes. (Versuchen Sie es in ein paar Minuten erneut.)

Wenn der Amazon-EKS-Service nicht mit Amazon EKS Connector im Ziel-Cluster kommunizieren kann, kann dies einen der folgenden Gründe haben:

  • Der Amazon-EKS-Connector im Ziel-Cluster ist fehlerhaft.

  • Schlechte Konnektivität oder eine unterbrochene Verbindung zwischen dem Zielcluster und der AWS-Region.

Um dieses Problem zu beheben, überprüfen Sie die Amazon-EKS-Connector-Protokolle. Wenn kein Fehler für Amazon EKS Connector angezeigt wird, versuchen Sie die Verbindung nach einigen Minuten erneut. Sollten Sie regelmäßig hohe Latenzzeiten oder eine instabile Verbindung zum Ziel-Cluster feststellen, empfehlen wir Ihnen, den Cluster in einer AWS-Region neu zu registrieren, die sich näher an Ihrem Standort befindet.

Amazon-EKS-Connector-Pods stürzen fortlaufend ab

Es gibt viele Gründe, die dazu führen können, dass ein Amazon-EKS-Connector-Pod in den CrashLoopBackOff-Status übergeht. Dieses Problem betrifft wahrscheinlich den connector-init-Container. Überprüfen Sie den Status des Amazon-EKS-Connector-Pods.

kubectl get pods -n eks-connector

Eine Beispielausgabe sieht wie folgt aus.

NAME READY STATUS RESTARTS AGE eks-connector-0 0/2 Init:CrashLoopBackOff 1 7s

Wenn Ihre Ausgabe der vorherigen Ausgabe ähnlich ist, lesen Sie Überprüfen Sie die Protokolle des Amazon-EKS-Connectors, um das Problem zu beheben.

eks-connector konnte nicht initiiert werden: InvalidActivation

Wenn Sie den Amazon-EKS-Connector zum ersten Mal starten, registriert er ein activationId und activationCode bei Amazon Web Services. Die Registrierung schlägt möglicherweise fehl, was dazu führen kann, dass der connector-init-Container mit einem Fehler ähnlich dem folgenden abstürzt.

F1116 20:30:47.261469 1 init.go:43] failed to initiate eks-connector: InvalidActivation:

Berücksichtigen Sie die folgenden Ursachen und empfohlenen Korrekturen, um dieses Problem zu beheben:

  • Die Registrierung ist möglicherweise fehlgeschlagen, da activationId und activationCode nicht in Ihrer Manifest-Datei enthalten sind. Stellen Sie in diesem Fall sicher, dass es sich um die richtigen Werte handelt, die von der RegisterCluster-API-Operation zurückgegeben wurden, und dass sich activationCode in der Manifest-Datei befindet. Der activationCode wird zu Kubernetes-Geheimnissen hinzugefügt, daher muss er base64-codiert sein. Weitere Informationen finden Sie unter Schritt 1: Registrieren des Clusters.

  • Die Registrierung ist möglicherweise fehlgeschlagen, da Ihre Aktivierung abgelaufen ist. Dies liegt daran, dass Sie den Amazon-EKS-Connector aus Sicherheitsgründen innerhalb von drei Tagen nach der Registrierung des Clusters aktivieren müssen. Um dieses Problem zu beheben, stellen Sie sicher, dass das Manifest für Amazon EKS Connector vor Ablauf des Ablaufdatums und der Ablaufzeit auf den Ziel-Kubernetes-Cluster angewendet wird. Um das Ablaufdatum der Aktivierung zu bestätigen, rufen Sie die DescribeCluster-API-Operation auf.

    aws eks describe-cluster --name my-cluster

    In der folgenden Beispielantwort wird das Ablaufdatum und die Uhrzeit als 2021-11-12T22:28:51.101000-08:00 aufgezeichnet.

    { "cluster": { "name": "my-cluster", "arn": "arn:aws:eks:region:111122223333:cluster/my-cluster", "createdAt": "2021-11-09T22:28:51.449000-08:00", "status": "FAILED", "tags": { }, "connectorConfig": { "activationId": "00000000-0000-0000-0000-000000000000", "activationExpiry": "2021-11-12T22:28:51.101000-08:00", "provider": "OTHER", "roleArn": "arn:aws:iam::111122223333:role/my-connector-role" } } }

    Wenn das activationExpiry erreicht wurde, melden Sie den Cluster ab und registrieren Sie ihn erneut. Dadurch wird eine neue Aktivierung generiert.

Im Cluster-Knoten fehlt die ausgehende Konnektivität

Um ordnungsgemäß zu funktionieren, benötigt der Amazon-EKS-Connector eine ausgehende Konnektivität zu mehreren AWS-Endpunkten. Sie können einen privaten Cluster ohne ausgehende Konnektivität nicht mit einer Ziel-AWS-Region verbinden. Um dieses Problem zu lösen, müssen Sie die erforderliche ausgehende Konnektivität hinzufügen. Weitere Informationen zu den Anforderungen für Konnektoren finden Sie unter Überlegungen zum Amazon EKS Connector.

Amazon-EKS-Connectors-Pods befinden sich im ImagePullBackOff-Status

Wenn Sie den get pods-Befehl ausführen und sich Pods im ImagePullBackOff-Zustand befinden, können diese nicht ordnungsgemäß funktionieren. Wenn sich die Amazon-EKS-Connector-Pods im ImagePullBackOff-Status befinden, können sie nicht ordnungsgemäß funktionieren. Überprüfen Sie den Status Ihrer Amazon-EKS-Connector-Pods.

kubectl get pods -n eks-connector

Eine Beispielausgabe sieht wie folgt aus.

NAME READY STATUS RESTARTS AGE eks-connector-0 0/2 Init:ImagePullBackOff 0 4s

Die standardmäßige Amazon-EKS-Connector-Manifest-Datei verweist auf Images aus der öffentlichen Amazon-ECR-Galerie. Es ist möglich, dass der Ziel-Kubernetes-Cluster keine Images aus der Amazon ECR Public Gallery abrufen kann. Beheben Sie entweder das Image-Abrufproblem der öffentlichen Amazon-ECR-Galerie oder erwägen Sie eine Spiegelung der Images in der privaten Container-Registry Ihrer Wahl.