Warum kann ich keine Verbindung zu meinem Amazon EKS-Cluster herstellen?
Ich habe einen Amazon Elastic Kubernetes Service (Amazon EKS)-Cluster erstellt, zu dem ich keine Verbindung herstellen kann.
Kurzbeschreibung
Möglicherweise kannst du aus einem der folgenden Gründe keine Verbindung zu deinem Amazon EKS-Cluster herstellen:
- Du hast die kubeconfig-Datei für deinen Cluster nicht erstellt.
- Du kannst keine Verbindung zum API-Server-Endpunkt von Amazon EKS herstellen.
Lösung
Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.
Du hast die kubeconfig-Datei nicht erstellt
Nachdem du deinen Amazon EKS-Cluster erstellt hast, konfiguriere deine kubeconfig-Datei so, dass du die kubectl-Befehlszeile verwenden kannst, um eine Verbindung zu deinem Cluster herzustellen. Die kubeconfig-Datei enthält deine Kubernetes-Cluster-Konfiguration.
Je nach Betriebssystem (OS) findest du deine kubeconfig-Datei an den folgenden Speicherorten:
- Gehe für Linux oder macOS zu $HOME/.kube/config.
- Gehe für Windows zu %USERPROFILE%\.kube\config.
Um einen anderen Dateispeicherort zu verwenden, führe eine der folgenden Aktionen aus:
- Stelle die Umgebungsvariable KUBECONFIG so ein, dass sie auf den neuen Speicherort zeigt.
- Verwende das Flag --kubeconfig, wenn du kubectl-Befehle ausführst, um einen benutzerdefinierten Dateipfad anzugeben.
Wenn am Standardspeicherort bereits eine kubeconfig-Datei vorhanden ist, führt Amazon EKS neue Konfigurationen mit der vorhandenen Datei zusammen. Du kannst den Befehl kubectl config verwenden, um deine Cluster-Kontexte zu verwalten. Weitere Informationen findest du unter kubectl config auf der Kubernetes-Website.
Du kannst keine Verbindung zum API-Server-Endpunkt von Amazon EKS herstellen
Gehe wie folgt vor, um dieses Problem zu beheben:
-
Um zu überprüfen, ob du eine Verbindung zur Amazon EKS-API-Server-URL herstellen kannst, führe den folgenden Befehl mit erhöhter Ausführlichkeit aus:
kubectl get svc --v=9Die Befehlsausgabe zeigt detaillierte Verbindungsinformationen, einschließlich der API-Server-URL, die deine Verbindung verwendet. Überprüfe die IP-Adressen, die für HTTP Trace: DNS-Suche aufgeführt sind.
Beispielausgabe:I0110 16:43:36.920095 48173 loader.go:373] Config loaded from file: /Users/abs/.kube/configI0110 16:43:36.936844 48173 round_trippers.go:466] curl -v -XGET -H "Accept: application/json;as=Table;v=v1;g=meta.k8s.io,application/json;as=Table;v=v1beta1;g=meta.k8s.io,application/json" -H "User-Agent: kubectl/v1.26.0 (darwin/arm64) kubernetes/b46a3f8" 'https://S123GBNS3HJUFN467UFGH6782JHCH2891.yl4.us-east-2.eks.amazonaws.com//api/v1/namespaces/default/services?limit=500' I0110 16:43:37.362185 48173 round_trippers.go:495] HTTP Trace: DNS Lookup for S123GBNS3HJUFN467UFGH6782JHCH2891.yl4.us-east-2.eks.amazonaws.com/ resolved to [{18.119.155.77 } {3.136.153.3 }] I0110 16:43:37.402538 48173 round_trippers.go:510] HTTP Trace: Dial to tcp:18.119.155.77:443 succeed I0110 16:43:37.500276 48173 round_trippers.go:553] GET https://S123GBNS3HJUFN467UFGH6782JHCH2891.yl4.us-east-2.eks.amazonaws.com//api/v1/namespaces/default/services?limit=500 200 OK in 563 milliseconds I0110 16:43:37.500302 48173 round_trippers.go:570] HTTP Statistics: DNSLookup 1 ms Dial 40 ms TLSHandshake 44 ms ServerProcessing 52 ms Duration 563 ms I0110 16:43:37.500308 48173 round_trippers.go:577] Response Headers: I0110 16:43:37.500316 48173 round_trippers.go:580] Audit-Id: 37c17136-7fa7-40e9-8fe6-b24426e81564 I0110 16:43:37.500323 48173 round_trippers.go:580] Cache-Control: no-cache, private I0110 16:43:37.500329 48173 round_trippers.go:580] Content-Type: application/json I0110 16:43:37.500334 48173 round_trippers.go:580] X-Kubernetes-Pf-Flowschema-Uid: 508eb99e-d99b-44db-8ade-838c99fe8e9f I0110 16:43:37.500340 48173 round_trippers.go:580] X-Kubernetes-Pf-Prioritylevel-Uid: d324d3db-05ce-441b-a0ff-c31cbe8f696c I0110 16:43:37.500345 48173 round_trippers.go:580] Date: Tue, 10 Jan 2023 21:43:37 GMT -
Um zu überprüfen, ob der Amazon EKS-API-Server öffentlich zugänglich ist, führe den folgenden describe-cluster-AWS-CLI-Befehl aus:
aws eks describe-cluster --name cluster_name --region example_region --query cluster.resourcesVpcConfigHinweis: Ersetze cluster_name durch den Namen deines Clusters und example_region durch deine AWS-Region.
Beispielausgabe:{ "subnetIds": [ "subnet-abc1", "subnet-abc2", "subnet-abc3", "subnet-abc4", "subnet-abc5", "subnet-abc6" ], "securityGroupIds": [ "sg-abc7" ], "clusterSecurityGroupId": "sg-abc7", "vpcId": "vpc-abc9", "endpointPublicAccess": true, "endpointPrivateAccess": false, "publicAccessCidrs": [ "0.0.0.0/0" ] }Um den öffentlichen Zugriff zu ermöglichen, stelle sicher, dass endpointPublicAccess den Wert true hat. Um den Zugriff privat zu halten, stelle sicher, dass endpointPublicAccess den Wert false hat. Wenn endpointPublicAccess den Wert false hat, fahre mit Schritt 9 fort. Wenn endpointPublicAccess den Wert true hat, ist es eine bewährte Sicherheitsmethode, endpointPublicAccess auf bestimmte IP-Adressbereiche zu beschränken. Führe die Schritte 3–8 aus, um deine erlaubten IP-Adressen zur publicAccessCidrs-Zulassungsliste hinzuzufügen.
-
Öffne die Amazon EKS-Konsole.
-
Wähle Cluster und dann den Cluster aus, den du aktualisieren möchtest.
-
Wähle die Registerkarte Netzwerk und dann Netzwerk verwalten aus.
-
Wähle Öffentlich aus.
-
Gib unter Erweiterte Einstellungen für CIDR-Block den öffentlichen CIDR-Bereich ein, den du zur Zulassungsliste hinzufügen möchtest.
Wichtig: Gib die IP-Adresse des NAT-Gateways an, über das die Worker-Knoten in deinen privaten Subnetzen auf das Internet zugreifen. Gib auch die IP-Adressen aller Netzwerkkomponenten von NAT-Geräten an. -
Wähle Änderungen speichern.
-
Wenn du den API-Server des Clusters im reinen Privatmodus konfiguriert hast, stelle sicher, dass die kubectl-Anfrage aus dem Netzwerk des Clusters stammt. Wenn deine kubectl-Anfrage von außerhalb deiner Amazon Virtual Private Cloud (Amazon VPC) stammt, erhältst du den folgenden Timeout-Fehler, wenn du den get svc-Befehl ausführst:
$ kubectl get svc --v=9I0110 17:15:58.889798 50514 loader.go:373] Config loaded from file: /Users/example-user/.kube/config I0110 17:15:58.896715 50514 round_trippers.go:466] curl -v -XGET -H "Accept: application/json;as=Table;v=v1;g=meta.k8s.io,application/json;as=Table;v=v1beta1;g=meta.k8s.io,application/json" -H "User-Agent: kubectl/v1.26.0 (darwin/arm64) kubernetes/b46a3f8" 'https://S123GBNS3HJUFN467UFGH6782JHCH2891.yl4.us-east-2.eks.amazonaws.com/api/v1/namespaces/default/services?limit=500' I0110 17:15:59.374499 50514 round_trippers.go:495] HTTP Trace: DNS Lookup for S123GBNS3HJUFN467UFGH6782JHCH2891.yl4.us-east-2.eks.amazonaws.com resolved to [{192.168.126.17 } {192.168.144.26 }] I0110 17:16:14.285027 50514 round_trippers.go:508] HTTP Trace: Dial to tcp:192.168.126.17:443 failed: dial tcp 192.168.126.17:443: i/o timeout I0110 17:16:29.191768 50514 round_trippers.go:508] HTTP Trace: Dial to tcp:192.168.144.26:443 failed: dial tcp 192.168.144.26:443: i/o timeout I0110 17:16:29.196959 50514 round_trippers.go:553] GET https://S123GBNS3HJUFN467UFGH6782JHCH2891.yl4.us-east-2.eks.amazonaws.com/api/v1/namespaces/default/services?limit=500 in 30300 milliseconds I0110 17:16:29.197724 50514 round_trippers.go:570] HTTP Statistics: DNSLookup 183 ms Dial 14906 ms TLSHandshake 0 ms Duration 30300 ms I0110 17:16:29.197768 50514 round_trippers.go:577] Response Headers: I0110 17:16:29.199254 50514 helpers.go:264] Connection error: Get https://S123GBNS3HJUFN467UFGH6782JHCH2891.yl4.us-east-2.eks.amazonaws.com/api/v1/namespaces/default/services?limit=500: dial tcp 192.168.126.17:443: i/o timeout Unable to connect to the server: dial tcp 192.168.126.17:443: i/o timeout -
Aktualisiere die Cluster-Sicherheitsgruppe, um die Quell-IP-Adresse oder den CIDR-Bereich zu deiner Zulassungsliste hinzuzufügen. Dadurch kann der kubectl-Client von der Cluster-VPC aus eine Verbindung zum Amazon EKS-API-Serverendpunkt herstellen.
Ähnliche Informationen
Probleme mit Amazon EKS-Clustern und -Knoten beheben
Wie behebe ich den Fehler , wenn ich eine Verbindung zum Amazon EKS-API-Server herstelle?"You must be logged in to the server (Unauthorized)"
Cluster-Netzwerke für Amazon EKS-Worker-Knoten entmystifizieren
Wie sperre ich den API-Zugriff auf bestimmte IP-Adressen in meinem Amazon EKS-Cluster?
- Themen
- Containers
- Sprache
- Deutsch
Ähnliche Videos


Relevanter Inhalt
AWS OFFICIALAktualisiert vor 8 Monaten
AWS OFFICIALAktualisiert vor 3 Jahren
AWS OFFICIALAktualisiert vor 4 Jahren