Wie behebe ich Probleme 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

Wenn Sie Probleme mit Ihrem Kubernetes-API-Serverendpunkt haben, führen Sie die Schritte in einem der folgenden Abschnitte aus:

  • Sie können keine kubectl-Befehle auf dem neuen oder vorhandenen Cluster ausführen
  • Sie können keine kubectl-Befehle auf dem Cluster ausführen, nachdem Sie den Endpunktzugriff von öffentlich in privat geändert haben
  • Ihr Cluster befindet sich im Status Fehlgeschlagen und Sie können die Einstellung für den Endpunktzugriff nicht von öffentlich in privat ändern

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

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.

Beispiel für eine Ausgabe:

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 vorhandenen kubeconfig-Dateien nicht die richtigen Clusterdetails enthalten, verwenden Sie den folgenden Befehl, um eine Datei mit den richtigen Details zu erstellen:

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

Hinweis: Ersetzen Sie Clustername durch den Namen Ihres Clusters und Region durch Ihre AWS-Region.

3.    Verwenden Sie das Telnet an Port 443, um die API-Server-Endpunktkonnektivität auf Ihrem Gerät zu überprüfen.

Beispiel für eine Ausgabe:

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 das Telnet nicht funktioniert, gehen Sie zur Fehlerbehebung wie folgt vor:

Ü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-Endpunkt durch den Namen Ihres APISERVER-Endpunkts.

Ü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.

4.    Ü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

1.    Vergewissern Sie sich, dass Sie einen Bastion-Host oder verbundene Netzwerke, wie z. B. per Peering verbundene 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 auf den API-Endpunkt von Amazon EKS zugreifen.

2.    Prüfen Sie, ob Sicherheitsgruppen oder Netzwerk-Zugriffskontrolllisten die API-Aufrufe blockieren.

Wenn Sie über eine per Peering verbundene VPC auf Ihren Cluster zugreifen, stellen Sie sicher, dass die Sicherheitsgruppen der Steuerebene den Zugriff von der gepeerten VPC auf die Sicherheitsgruppen der Steuerebene an Port 443 zulassen. Stellen Sie außerdem sicher, dass die gepeerten VPCs Port 53 füreinander geöffnet haben. Port 53 wird für die DNS-Auflösung verwendet.

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.

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.


Relevante Informationen

Anforderungen und Überlegungen zur Amazon-EKS-Sicherheitsgruppe

DNS-Auflösung für EKS-Cluster mit privaten Endpunkten

Amazon EKS ermöglicht Netzwerkzugriffsbeschränkungen für öffentliche Kubernetes-Cluster-Endpunkte

Zugriffskontrolle für den Amazon-EKS-Cluster-Endpunkt

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren