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-initkubectl logs eks-connector-0 --container connector-init -n eks-connector kubectl logs eks-connector-1 --container connector-init -n eks-connector -
connector-proxykubectl logs eks-connector-0 --container connector-proxy -n eks-connector kubectl logs eks-connector-1 --container connector-proxy -n eks-connector -
connector-agentkubectl 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übernahmeeks-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
Johnvom AWS-Konto111122223333wird 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-
Administratorvon AWS-Konto111122223333ist einem Kubernetes-Benutzer zugeordnet:arn:aws:iam::111122223333:role/adminDas 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
activationIdundactivationCodenicht in Ihrer Manifest-Datei enthalten sind. Stellen Sie in diesem Fall sicher, dass es sich um die richtigen Werte handelt, die von derRegisterCluster-API-Operation zurückgegeben wurden, und dass sichactivationCodein der Manifest-Datei befindet. DeractivationCodewird zu Kubernetes-Geheimnissen hinzugefügt, daher muss erbase64-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-clusterIn der folgenden Beispielantwort wird das Ablaufdatum und die Uhrzeit als
2021-11-12T22:28:51.101000-08:00aufgezeichnet.{ "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
activationExpiryerreicht 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