Beheben von Problemen in Amazon EKS Connector - Amazon EKS

Helfen Sie mit, diese Seite zu verbessern

Möchten Sie zu diesem Benutzerhandbuch beitragen? Scrollen Sie zum Ende dieser Seite und wählen Sie Diese Seite bearbeiten am aus GitHub. Ihre Beiträge werden dazu beitragen, unser Benutzerhandbuch für alle zu verbessern.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Beheben von Problemen in 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 Schritte zur Diagnose eines nicht eindeutigen Problems beschrieben.

Prüfen Sie den Status von Amazon EKS Connector

Überprüfen Sie den Status von Amazon EKS Connector.

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 von clusterName innerhalb eines einzigen AWS -Kontos und einer AWS-Region-Region eindeutig identifiziert. Wenn Sie über mehrere verbundene Cluster in Amazon EKS verfügen, 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 Bilder zu sammeln, die von Pods im 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 dem Pending Status auf der Amazon EKS-Konsole hängen bleibt, nachdem Sie ihn registriert haben, kann das daran liegen, dass der Amazon EKS-Connector den Cluster AWS noch nicht erfolgreich verbunden hat. Für einen registrierten Cluster bedeutet der Pending-Zustand, 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 laufend ab .

Konsolenfehler: User “system:serviceaccount:eks-connector:eks-connector” can't impersonate resource “users” in API group “” im Cluster-Bereich

Der Amazon EKS Connector verwendet Kubernetes-Benutzeridentitätswechsel, um im Namen von IAM-Prinzipalen aus der AWS Management Console zu handeln. Jedem Principal, der über das AWS eks-connector Dienstkonto auf die Kubernetes API zugreift, muss die Erlaubnis erteilt werden, sich als der entsprechende Kubernetes Benutzer mit einem IAM-ARN als Benutzernamen auszugeben. Kubernetes In den folgenden Beispielen wird der IAM-ARN einem Kubernetes-Benutzer zugeordnet.

  • Der IAM-Benutzer john aus dem AWS Konto 111122223333 ist einem Benutzer zugeordnet. Kubernetes Bewährte Methoden für IAM empfehlen, dass Sie Rollen statt Benutzern Berechtigungen gewähren.

    arn:aws:iam::111122223333:user/john
  • Die IAM-Rolle admin aus dem AWS Konto 111122223333 ist einem Benutzer zugeordnet: Kubernetes

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

    Das Ergebnis ist ein IAM-Rollen-ARN anstelle des AWS STS Sitzungs-ARN.

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 des Zugriffs für einen IAM-Prinzipal zum Anzeigen von Kubernetes-Ressource eines Clusters. Stellen Sie sicher, dass %IAM_ARN% in der Vorlage durch den IAM-ARN des AWS Management Console -IAM-Prinzipals ersetzt wird.

Konsolenfehler: [...] is forbidden: User [...] cannot list resource “[...] in API group” im Cluster-Bereich

Betrachten Sie das folgende Problem. Der Amazon EKS-Connector hat erfolgreich die Identität des anfordernden AWS Management Console IAM-Prinzipals im Zielcluster angenommen. Kubernetes Der imitierte Prinzipal hat jedoch keine RBAC-Berechtigung für Kubernetes-API-Vorgänge.

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 Kubernetes-Ressourcen zu gewähren:

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

Als Cluster-Administrator können Sie auch einzelnen Kubernetes-Benutzern die entsprechende Stufe von RBAC-Berechtigungen gewähren. Weitere Informationen und Beispiele finden Sie unter Gewähren des Zugriffs für einen IAM-Prinzipal zum Anzeigen von Kubernetes-Ressource eines Clusters.

Konsolenfehler: Amazon EKS kann nicht mit Ihrem Kubernetes-Cluster-API-Server 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 dem Amazon EKS-Connector im Zie-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 Ziel-Cluster und der AWS-Region.

Um dieses Problem zu beheben, überprüfen Sie die Amazon-EKS-Connector-Protokolle. Wenn kein Fehler für den Amazon-EKS-Connector angezeigt wird, versuchen Sie die Verbindung nach einigen Minuten erneut. Wenn Sie regelmäßig hohe Latenz oder unregelmäßige Konnektivität für den Zielcluster feststellen, sollten Sie erwägen, den Cluster erneut bei einem Cluster zu registrieren, der sich in Ihrer AWS-Region Nähe befindet.

Amazon EKS-Connector-Pods stürzen laufend 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. Prüfen Sie den Status von Amazon-EKS-Connector Pod.

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.

Failed to initiate eks-connector: 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 lösen, stellen Sie sicher, dass Sie vor Ablaufdatum und -uhrzeit das Amazon-EKS-Connector-Manifest auf den Kubernetes-Ziel-Cluster angewendet haben. 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 einem 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-Zustand

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-Connectors Pods im ImagePullBackOff-Zustand befinden, können diese nicht ordnungsgemäß funktionieren. Prüfen Sie den Status Ihres Amazon-EKS-Connectors 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-Cluster Kubernetes keine Images aus der öffentlichen Amazon-ECR-Galerie 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.