Wie behebe ich Konnektivitätsprobleme mit dem API-Serverendpunkt meines Amazon-EKS-Clusters?

Lesedauer: 4 Minute
0

Ich kann keine kubectl-Befehle ausführen. Außerdem habe ich die Einstellung für den Endpunktzugriff in meinem Amazon Elastic Kubernetes Service (Amazon EKS)-Cluster von öffentlich in privat geändert. Jetzt hängt mein Cluster im Status „Fehlgeschlagen“ fest.

Kurzbeschreibung

Führen Sie auf der Grundlage Ihres Problems die Schritte in einem der folgenden Abschnitte aus.

Hinweis: Informationen zum Einrichten des Zugriffs auf den Kubernetes-API-Serverendpunkt finden Sie unter Ändern des Cluster-Endpunktzugriffs.

Behebung

Sie können keine kubectl-Befehle auf dem neuen oder vorhandenen Cluster ausführen

Bestätigen Sie, dass Ihre kubeconfig-Datei eine Verbindung zu Ihrem Cluster herstellt

Führen Sie die folgenden Schritte aus:

  1. Vergewissern Sie sich, dass Sie die richtigen kubeconfig-Dateien verwenden, um eine Verbindung mit Ihrem Cluster herzustellen. Weitere Informationen finden Sie unter Organizing cluster access using kubeconfig files (Organisieren des Cluster-Zugriffs mit kubeconfig-Dateien) (auf der Kubernetes-Website).
  2. Überprüfen Sie jeden Cluster auf mehrere Kontexte in Ihren kubeconfig-Dateien.
    Beispielausgabe:
    $ kubectl config view -o jsonpath='{"Cluster name\tServer\n"}{range .clusters[*]}{.name}{"\t"}{.cluster.server}{"\n"}{end}'
    Cluster name    Server
    new200.us-east-2.eksctl.io       https://D8DC9092A7985668FF67C3D1C789A9F5.gr7.us-east-2.eks.amazonaws.com
    Wenn die verwendete kubeconfig-Datei nicht die richtigen Clusterdetails enthält, führen Sie den folgenden Befehl aus, um einen neuen Eintrag für den Cluster zu erstellen:
    aws eks update-kubeconfig --name CLUSTER NAME --region REGION
    Hinweis: Ersetzen Sie CLUSTER NAME durch den Namen Ihres Clusters und REGION durch Ihre AWS-Region.
  3. Verwenden Sie das Telnet an Anschluss 443, um die API-Server-Endpunktkonnektivität auf Ihrem Gerät zu überprüfen.
    Beispielausgabe:
    $ echo exit | telnet D8DC9092A7985668FF67C3D1C789A9F5.gr7.us-east-2.eks.amazonaws.com 443
    Trying 18.224.160.210...
    Connected to D8DC9092A7985668FF67C3D1C789A9F5.gr7.us-east-2.eks.amazonaws.com.
    Escape character is '^]'.
    Connection closed by foreign host.
    Wenn der Telnet-Befehl nicht funktioniert, führen Sie die folgenden Schritte zur Problembehandlung aus.

Überprüfen des DNS-Resolvers

Wenn der API-Server nicht auflöst, liegt ein Problem mit dem DNS-Resolver vor.

Führen Sie den folgenden Befehl auf demselben Gerät aus, auf dem die kubectl-Befehle fehlgeschlagen sind:

nslookup APISERVER ENDPOINT

**Hinweis:**Ersetzen Sie APISERVER ENDPOINT durch den API-Server-Endpunkt Ihres Clusters.

Überprüfen, ob der öffentliche Zugriff auf den API-Serverendpunkt eingeschränkt ist

Wenn Sie CIDR-Blöcke angegeben haben, um den Zugriff auf den öffentlichen API-Serverendpunkt zu beschränken, empfiehlt es sich, auch den privaten Endpunktzugriff zu aktivieren.

Überprüfen Sie das Zugriffsverhalten der API-Serverendpunkte. Siehe Ändern des Cluster-Endpunktzugriffs.

Sie können keine kubectl-Befehle auf dem Cluster ausführen, nachdem Sie den Endpunktzugriff von öffentlich in privat geändert haben

Gehen Sie wie folgt vor, um dieses Problem zu beheben:

  1. Vergewissern Sie sich, dass Sie einen Bastion-Host oder verbundene Netzwerke, wie z. B. per Peering verbundene Virtual Private Clouds (VPCs), AWS Direct Connect oder VPNs, für den Zugriff auf den Amazon EKS API-Endpunkt verwenden.
    Hinweis: Im privaten Zugriffsmodus können Sie nur innerhalb der VPC des Clusters oder verbundenen Netzwerken auf den API-Endpunkt von Amazon EKS zugreifen.
  2. Prüfen Sie, ob Sicherheitsgruppen oder Netzwerkzugriffskontrolllisten Anfragen an den Kubernetes-API-Server blockieren.
    Wenn Sie über eine gepeerte VPC auf Ihren Cluster zugreifen, stellen Sie sicher, dass die Sicherheitsgruppen der Kontrollebene den richtigen Zugriff zulassen. Sie müssen den Zugriff von der gepeerte VPC auf die Amazon EKS-Sicherheitsgruppen der Kontrollebene auf Anschluss 443 zulassen.

Ihr Cluster befindet sich im Status „Fehlgeschlagen“ und Sie können die Einstellung für den Endpunktzugriff nicht von öffentlich in privat ändern

Möglicherweise befindet sich Ihr Cluster aufgrund eines Berechtigungsproblems mit AWS Identity and Access Management (IAM) im Status Fehlgeschlagen.

Gehen Sie wie folgt vor, um dieses Problem zu beheben:

  1. Vergewissern Sie sich, dass die IAM-Rolle des Benutzers berechtigt ist, die Aktion AssociateVPCWithHostedZone auszuführen.
    Hinweis: Wenn die Aktion nicht blockiert ist, prüfen Sie, ob AWS-Organizations-Richtlinien für das Benutzerkonto gelten, die die API-Aufrufe blockieren und zu einem Fehler im Cluster führen.
  2. Vergewissern Sie sich, dass die Berechtigung des IAM-Benutzers nicht implizit oder explizit auf einer höheren Ebene als dem Konto blockiert ist.
    Hinweis: Die IAM-Benutzerberechtigung ist implizit blockiert, wenn sie nicht in der Richtlinienanweisung Zulassen enthalten ist. Sie ist explizit blockiert, wenn sie in der Richtlinienanweisung Verweigern enthalten ist. Die Berechtigung ist auch dann blockiert, wenn der Kontoadministrator dem Benutzer die IAM-Richtlinie AdministratorAccess mit */*-Berechtigungen zuordnet. Berechtigungen aus den Richtlinien von AWS Organizations haben Vorrang vor den Berechtigungen für IAM-Entitäten.
AWS OFFICIAL
AWS OFFICIALAktualisiert vor 9 Monaten