Wie kann ich bei einer Verbindung mit einem Amazon-EKS-API-Server Fehler aufgrund eines nicht autorisierten Servers beheben?

Letzte Aktualisierung: 08.11.2021

Ich erhalte die Fehlermeldung: „error: You must be logged in to the server (Unauthorized)“ (Fehler: Sie müssen beim Server angemeldet sein (nicht autorisiert)), wenn ich kubectl-Befehle verwende, um eine Verbindung zum Amazon-Elastic-Kubernetes-Service(Amazon EKS)-API-Server herzustellen.

Kurzbeschreibung

Bevor Sie sich mit dem Amazon-EKS-API-Server verbinden, installieren und konfigurieren Sie die neueste Version der AWS Command Line Interface (AWS CLI).

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.

Anschließend muss der Cluster-Administrator die Schritte in einem der folgenden Abschnitte ausführen:

  • Sie sind der Ersteller des Clusters.
  • Sie sind nicht der Ersteller des Clusters.

Schließlich muss die Person, die den Fehler erhalten hat, die Schritte im Abschnitt Sie sind der Benutzer oder die Rolle, die den Fehler erhalten hat ausführen.

Auflösung

Sie sind der Ersteller des Clusters.

1.    Um die Konfiguration Ihres AWS-CLI-Benutzers oder Ihrer AWS-Rolle anzuzeigen, führen Sie den folgenden Befehl aus:

$ aws sts get-caller-identity

Die Ausgabe gibt den Amazon-Ressourcennamen (ARN) des AWS-Identity-and-Access-Management(IAM)-Benutzers oder der AWS-Rolle zurück. Zum Beispiel:

{
    "UserId": "XXXXXXXXXXXXXXXXXXXXX",
    "Account": "XXXXXXXXXXXX",
    "Arn": "arn:aws:iam::XXXXXXXXXXXX:user/testuser"
}

2.    Bestätigen Sie, dass der ARN mit dem Ersteller des Clusters übereinstimmt.

3.    Aktualisieren oder generieren Sie die Datei kubeconfig mit einem der folgenden Befehle.

Führen Sie als IAM-Benutzer den folgenden Befehl aus:

$ aws eks update-kubeconfig --name eks-cluster-name --region aws-region

Hinweis: Ersetzen Sie eks-cluster-name durch Ihren Clusternamen. Ersetzen Sie aws-region durch Ihre AWS-Region.

Führen Sie als IAM-Rolle den folgenden Befehl aus:

$ aws eks update-kubeconfig --name eks-cluster-name --region aws-region --role-arn arn:aws:iam::XXXXXXXXXXXX:role/testrole

Hinweis: Ersetzen Sie eks-cluster-name durch Ihren Clusternamen. Ersetzen Sie aws-region durch Ihre AWS-Region.

4.    Führen Sie den folgenden Befehl aus, um zu bestätigen, dass die Datei kubeconfig aktualisiert wurde:

$ kubectl config view --minify

5.    Führen Sie den folgenden Befehl aus, um zu bestätigen, dass Ihr IAM-Benutzer oder Ihre IAM-Rolle authentifiziert ist:

$ kubectl get svc

Die Ausgabe sollte wie folgt aussehen:

NAME            TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
kubernetes      ClusterIP   10.100.0.1     <none>        443/TCP   77d

Sie sind nicht der Ersteller des Clusters.

1.    Um die Konfiguration Ihres AWS-CLI-Benutzers oder Ihrer AWS-Rolle anzuzeigen, führen Sie den folgenden Befehl aus:

$ aws sts get-caller-identity

Die Ausgabe gibt den ARN des IAM-Benutzers oder der IAM-Rolle zurück.

2.    Bitten Sie den Clusterbesitzer oder -administrator, Ihren IAM-Benutzer oder Ihre IAM-Rolle zu aws-auth ConfigMap hinzuzufügen.

Hinweis: Wenn Sie über die richtigen IAM-Berechtigungen verfügen, können Sie auch AssumeRole verwenden, um sich als Clusterersteller anzumelden.

3.    Um die aws-auth ConfigMap in einem Texteditor zu bearbeiten, muss der Clusterbesitzer oder Administrator den folgenden Befehl ausführen:

$ kubectl edit configmap aws-auth -n kube-system

4.    Führen Sie einen der folgenden Schritte aus, um einen IAM-Benutzer oder eine IAM-Rolle hinzuzufügen.

Fügen Sie den IAM-Benutzer zu mapUsers hinzu. Zum Beispiel:

mapUsers: |
  - userarn: arn:aws:iam::XXXXXXXXXXXX:user/testuser
    username: testuser
    groups:
      - system:masters

Hinweis: Ersetzen Sie testuser durch Ihren Benutzernamen.

Fügen Sie die IAM-Rolle zu mapRoles hinzu. Zum Beispiel:

mapRoles: |
  - rolearn: arn:aws:iam::XXXXXXXXXXXX:role/testrole
    username: testrole
    groups:
      - system:masters

Hinweis: Ersetzen Sie testrole durch Ihre Rolle.

Der Wert für username im Abschnitt mapRoles akzeptiert nur Kleinbuchstaben. Die IAM-Rolle sollte ohne den Pfad zugeordnet werden, da rolearn den Pfad nicht unterstützt.

Hinweis: Die Gruppe system:masters ermöglicht Superuser-Zugriff, um jede Aktion für jede Ressource auszuführen. Weitere Informationen finden Sie unter Standardrollen und Rollenbindungen auf der Kubernetes-Website.

Sie sind der Benutzer oder die Rolle, die den Fehler erhalten hat

1.    Führen Sie einen der folgenden Befehle aus, um die Datei kubeconfig zu aktualisieren oder zu generieren, nachdem aws-auth ConfigMap aktualisiert wurde.

Führen Sie als IAM-Benutzer den folgenden Befehl aus:

$ aws eks update-kubeconfig --name eks-cluster-name --region aws-region

Hinweis: Ersetzen Sie eks-cluster-name durch Ihren Clusternamen. Ersetzen Sie aws-region durch Ihre AWS-Region.

2.    Führen Sie als IAM-Rolle den folgenden Befehl aus:

$ aws eks update-kubeconfig --name eks-cluster-name --region aws-region --role-arn arn:aws:iam::XXXXXXXXXXXX:role/testrole

Hinweis: Ersetzen Sie eks-cluster-name durch Ihren Clusternamen. Ersetzen Sie aws-region durch Ihre AWS-Region.

3.    Führen Sie den folgenden Befehl aus, um zu bestätigen, dass die Datei kubeconfig aktualisiert wurde:

$ kubectl config view --minify

4.    Führen Sie den folgenden Befehl aus, um zu bestätigen, dass Ihr IAM-Benutzer oder Ihre IAM-Rolle authentifiziert ist:

$ kubectl get svc

Sie sollten eine Ausgabe ähnlich aussehen:

NAME            TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
kubernetes      ClusterIP   10.100.0.1     <none>        443/TCP   77d

Hinweis: Wenn Sie weiterhin Fehler erhalten, lesen Sie die Richtlinien zur Fehlerbehebung unter RBAC-Autorisierung verwenden auf der Kubernetes-Website.


War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?