Fehlerbehebung bei Clusterverbindungen

Auf dieser Seite wird beschrieben, wie Sie häufige Fehler beheben können, die beim Registrieren von Clustern in einer Flotte oder beim Herstellen einer Verbindung zu Clustern außerhalb von Google Cloud über die Google Cloud Console, die Google Cloud CLI oder kubectl über das Connect-Gateway.

Lokale Cluster und Cluster in anderen öffentlichen Clouds sind auf den Connect Agent angewiesen, um eine Verbindung zwischen dem Cluster und Ihrem Google Cloud-Projekt herzustellen und aufrechtzuerhalten sowie Kubernetes-Anfragen zu verarbeiten. Wenn Fehler wie "Nicht erreichbarer Agent" oder "Fehler beim Herstellen einer Verbindung zur Steuerungsebene des Clusters" angezeigt werden, kann dies auf ein Problem mit dem Connect Agent hinweisen.

Connect-Agent-Logs erfassen

Wenn Sie einen Cluster außerhalb von Google Cloud registrieren, wird der Connect Agent verwendet, um die Kommunikation zwischen Ihrem Cluster und Ihrem Fleet-Hostprojekt zu verarbeiten. Der Connect-Agent ist ein Deployment (gke-connect-agent), das normalerweise in Ihrem Cluster im Namespace gke-connect installiert wird. Das Erfassen von Logs von diesem Connect-Agent kann nützlich sein, um Probleme bei der Registrierung und Verbindung zu beheben.

Sie können die Logs des Agents mit dem folgenden Befehl abrufen (falls erforderlich, die Anzahl der Zeilen anpassen):

kubectl logs -n gke-connect -l app=gke-connect-agent --tail=-1

So rufen Sie Informationen zu jedem Connect-Agent ab, der in Ihren Projektclustern ausgeführt wird:

kubectl describe deployment --all-namespaces -l app=gke-connect-agent

Eine erfolgreiche Verbindung sollte Einträge wie im folgenden Beispiel haben:

2019/02/16 17:28:43.312056 dialer.go:244: dialer: dial: connected to gkeconnect.googleapis.com:443
2019/02/16 17:28:43.312279 tunnel.go:234: serve: opening egress stream...
2019/02/16 17:28:43.312439 tunnel.go:248: serve: registering endpoint="442223602236", shard="88d2bca5-f40a-11e8-983e-42010a8000b2" {"Params":{"GkeConnect":{"endpoint_class":1,"metadata":{"Metadata":{"Default":{"manifest_version":"234227867"}}}}}} ...
2019/02/16 17:28:43.312656 tunnel.go:259: serve: serving requests...

GKE Identity Service-Logs erfassen

Die Überprüfung der GKE Identity Service-Logs kann hilfreich sein, wenn Sie Probleme mit Google Groups oder dem Drittanbieter-Support für das Connect-Gateway haben. Diese Methode zum Generieren von Logs gilt nur für GKE on VMware- oder Google Distributed Cloud Virtual for Bare Metal-Cluster.

  1. Erhöhen Sie die Ausführlichkeit der GKE Identity Service-Logs. Bearbeiten Sie dazu die benutzerdefinierte Ressource "clientconfig" mit dem folgenden Befehl:

    kubectl edit deployment -n anthos-identity-service
    

    Außerdem fügen Sie unter dem Feld containers das Flag vmodule hinzu:

    spec:
      containers:
      ...
      - command:
        - --vmodule=cloud/identity/hybrid/charon/*=9
    
  2. Starten Sie den GKE Identity Service-Pod neu, indem Sie ihn mit dem folgenden Befehl löschen:

    kubectl delete pods -l k8s-app=ais -n anthos-identity-service
    

    Ein Pod sollte innerhalb weniger Sekunden wieder aktiviert werden.

  3. Führen Sie nach dem Neustart des Pods den ursprünglichen Befehl aus, der eine unerwartete Antwort zurückgegeben hat, um die Pod-Logs von GKE Identity Service mit weiteren Details zu füllen.

  4. Speichern Sie die Ausgabe dieser Logs mit dem folgenden Befehl in einer Datei:

    kubectl logs -l k8s-app=ais -n anthos-identity-service --tail=-1 > gke_id_service_logs.txt
    

Wenn die erwarteten Gruppen in den Pod-Logs von GKE Identity Service fehlen, prüfen Sie, ob die Clustereinrichtung korrekt ist. Weitere Informationen zu Problemen mit GKE Identity Service finden Sie unter Fehlerbehebung bei Problemen mit dem Nutzerzugriff oder Probleme mit der Einrichtung auf Flottenebene beheben.

tls: oversized record Fehler

Symptom

Ein Fehler wie der folgende kann auftreten:

... dialer: dial: connection to gkeconnect.googleapis.com:443 failed after
388.080605ms: serve: egress call failed: rpc error: code = Unauthenticated
desc = transport: oauth2: cannot fetch token: Post
https://oauth2.googleapis.com/token: proxyconnect tcp: tls: oversized record
received with length 20527
Mögliche Ursachen

Das bedeutet, dass der Connect-Agent versucht, über HTTPS eine Verbindung mit einem HTTP-Proxy herzustellen. Der Connect-Agent unterstützt nur CONNECT-basierte HTTP-Proxys.

Lösung

Sie müssen Ihre Proxy-Umgebungsvariablen so neu konfigurieren:

http_proxy=http://[PROXY_URL]:[PROXY_PORT]
https_proxy=http://[PROXY_URL]:[PROXY_PORT]

oauth2: cannot fetch token Fehler

Symptom

Ein Fehler wie der folgende kann auftreten:

...  dialer: dial: connection to gkeconnect.googleapis.com:443 failed
after 388.080605ms: serve: egress call failed: rpc error: code =
Unauthenticated desc = transport: oauth2: cannot fetch token: Post
https://oauth2.googleapis.com/token: read tcp 192.168.1.40:5570->1.1.1.1:80
read: connection reset by peer
Mögliche Ursachen:

Dies kann bedeuten, dass der Upstream-HTTP-Proxy die Verbindung zurücksetzt, höchstwahrscheinlich, weil diese bestimmte URL von Ihrem HTTP-Proxy nicht zugelassen wird. Im obigen Beispiel ist 1.1.1.1:80 die HTTP-Proxyadresse.

Lösung

Achten Sie darauf, dass Ihre HTTP-Proxy-allowlist die folgenden URLs/Domains enthält:

gkeconnect.googleapis.com
oauth2.googleapis.com/token
www.googleapis.com/oauth2/v1/certs

Fehler beim Absturz und Neustart des Connect Agent-Pods

Symptom

In der Google Cloud Console können für Ihren Cluster zeitweise Fehler vom Typ „Nicht erreichbarer Agent“ auftreten und/oder der Pod wurde mehrmals neu gestartet:

$ kubectl get pods -n gke-connect
NAME                                                READY   STATUS    RESTARTS   AGE
gke-connect-agent-20230706-03-00-6b8f75dd58-dzwmt   1/1     Running   5          99m

Um dieses Verhalten zu beheben, beschreiben Sie den Pod, um festzustellen, ob sein letzter Status aufgrund eines Fehlers aufgrund fehlenden Arbeitsspeichers (OOMKilled) beendet wurde:

  kubectl describe pods/gke-connect-agent-20230706-03-00-6b8f75dd58-dzwmt -n gke-connect
        <some details skipped..>
        Last State:     Terminated
        Reason:       OOMKilled
Mögliche Ursachen
Connect-Agent-Pods haben standardmäßig ein 256-MiB-RAM-Limit. Wenn im Cluster viele Arbeitslasten installiert sind, können einige Anfragen und Antworten nicht wie erwartet verarbeitet werden.
Lösung

Aktualisieren Sie die Bereitstellung des Connect-Agents und gewähren Sie ihm ein höheres Speicherlimit. Beispiel:

containers:
  name: gke-connect-agent-20230706-03-00
  resources:
    limits:
      memory: 512Mi

PermissionDenied Fehler

Symptom

Ein Fehler wie der folgende kann auftreten:

tunnel.go:250: serve: recv error: rpc error: code = PermissionDenied
desc = The caller does not have permission
dialer.go:210: dialer: dial: connection to gkeconnect.googleapis.com:443
failed after 335.153278ms: serve: receive request failed: rpc error:
code = PermissionDenied desc = The caller does not have permission
dialer.go:150: dialer: connection done: serve: receive request failed:
rpc error: code = PermissionDenied desc = The caller does not have permission
dialer.go:228: dialer: backoff: 1m14.1376766s
Mögliche Ursachen

Dies bedeutet möglicherweise, dass Sie die erforderliche Rolle der Identitäts- und Zugriffsverwaltung (IAM) nicht an das Google Cloud-Dienstkonto gebunden haben, das Sie erstellt haben, um den Connect-Agent für die Verbindung mit Google zu autorisieren. Das Google Cloud-Dienstkonto erfordert die IAM-Rolle gkehub.connect

Dies kann auch auftreten, wenn Sie das Google Cloud-Dienstkonto mit demselben Namen löschen und neu erstellen. Sie müssen in diesem Fall auch die IAM-Rollenbindung löschen und neu erstellen. Weitere Informationen finden Sie unter Dienstkonten löschen und neu erstellen.

Lösung

Binden Sie die gkehub.connect-Rolle an Ihr Dienstkonto. Die Rolle gkehub.admin hat nicht die erforderlichen Berechtigungen für die Verbindung und ist nicht für die Verwendung durch Dienstkonten vorgesehen.

Für ein Projekt mit dem Namen my-project und ein Google Cloud-Dienstkonto namens gkeconnect@my-project.iam.gserviceaccount.com, führen Sie den folgenden Befehl aus, um die Rolle an das Dienstkonto zu binden:

gcloud projects add-iam-policy-binding my-project --member \
serviceAccount:gkeconnect@my-project.iam.gserviceaccount.com \
--role "roles/gkehub.connect"

Sie können die Dienstkontoberechtigungen, die auf ein Google Cloud-Dienstkonto angewendet wurden, aufrufen und überprüfen, indem Sie die Ausgabe des folgenden Befehls prüfen. Danach sollten Sie sehen, dass role: roles/gkehub.connect an das verknüpfte Google- Cloud-Dienstkonto.

gcloud projects get-iam-policy my-project

Fehler beim Binden der IAM-Rolle an das Google Cloud-Dienstkonto

Symptom

Ein Fehler wie der folgende kann auftreten:

ERROR: (gcloud.projects.add-iam-policy-binding) PERMISSION_DENIED:
Service Management API has not been used in project [PROJECT_ID] before or it
is disabled. Enable it by visiting
https://console.developers.google.com/apis/api/servicemanagement.googleapis.com/overview?project=[PROJECT_ID]
then retry. If you enabled this API recently, wait a few minutes for the
action to propagate to our systems and retry.
Mögliche Ursachen

Möglicherweise haben Sie nicht die IAM-Berechtigungen zum Ausführen des Befehls gcloud projects add-iam-policy-binding.

Lösung

Sie benötigen die Berechtigung resourcemanager.projects.setIamPolicy. Wenn Sie die Rollen Project IAM Admin, Owner oder Editor haben, sollten Sie den Befehl ausführen können. Wenn Sie durch eine interne Sicherheitsrichtlinie den Befehl nicht ausführen können, wenden Sie sich an Ihren Administrator.

Fehler aufgrund eines ungültigen Dienstkontoschlüssels

Symptom

Ein Fehler wie der folgende kann auftreten:

2020/05/08 01:22:21.435104 environment.go:214: Got ExternalID 3770f509-b89b-48c4-96e0-860bb70b3a58 from namespace kube-system.
2020/05/08 01:22:21.437976 environment.go:485: Using gcp Service Account key
2020/05/08 01:22:21.438140 gkeconnect_agent.go:50: error creating kubernetes connect agent: failed to get tunnel config: unexpected end of JSON input
Mögliche Ursachen

Diese Logs weisen darauf hin, dass dem Connect-Agent während der Installation ein ungültiger Dienstkontoschlüssel bereitgestellt wurde.

Lösung

Erstellen Sie eine neue JSON-Datei mit Anmeldedaten für das Dienstkonto und führen Sie die Schritte zum Registrieren eines Clusters aus, um den Connect-Agent neu zu installieren.

Fehler aus abgelaufenem Dienstkontoschlüssel

Symptom

Ein Fehler wie der folgende kann auftreten:

2020/05/08 01:22:21.435104 dialer.go:277: dialer: dial: connection to gkeconnect.googleapis.com:443 failed after 37.901608ms:
serve: egress call failed: rpc error: code = Unauthenticated desc = transport: oauth2: cannot fetch token: 400 Bad Request
Response: {"error":"invalid_grant","error_description":"Invalid JWT Signature."}
Mögliche Ursachen

Diese Logs zeigen an, dass der Connect-Agent Connect mit einem problematischen Dienstkontoschlüssel gewählt hat, der vom Google-Authentifizierungsdienst nicht akzeptiert wird. Die Schlüsseldatei des Dienstkontos ist möglicherweise beschädigt oder der Schlüssel ist abgelaufen.

Wie Sie prüfen, ob der Schlüssel abgelaufen ist, können Sie in der Google Cloud Console auf der Detailseite eines Dienstkontos ermitteln. In einigen Fällen hat Ihr Projekt oder Ihre Organisation eine spezielle Richtlinie, für die ein Dienstkonto standardmäßig nur eine kurze Lebensdauer hat.

Lösung

Erstellen Sie eine neue JSON-Datei mit Anmeldedaten für das Dienstkonto und führen Sie die Schritte zum Registrieren eines Clusters aus, um den Connect-Agent neu zu installieren.

Fehler aufgrund verzerrter Systemuhr

Symptom

Ein Fehler wie der folgende kann auftreten:

acceptCall: failed to parse token in req [rpc_id=1]: Token used before issued [rpc_id=1]
Mögliche Ursachen

Die Lognachricht gibt normalerweise an, dass der Cluster eine Zeitverzerrung aufweist. Das vom Cluster ausgestellte Token hat einen abweichenden Zeitstempel, daher wird das Token abgelehnt.

Lösung

Prüfen Sie, ob die Uhr nicht richtig synchronisiert wird. Sie können den date-Befehl auf Ihrem Cluster ausführen und ihn mit der Standardzeit vergleichen. Normalerweise tritt das Problem innerhalb weniger Sekunden auf. Um dieses Problem zu beheben, müssen Sie die Clusteruhr noch einmal synchronisieren.

Arbeitslasten werden in der Google Cloud Console nicht angezeigt

Symptome

In den Connect-Agent-Logs tritt möglicherweise folgende Fehler auf:

"https://10.0.10.6:443/api/v1/nodes" YYYY-MM-DDTHH mm:ss.sssZ http.go:86: GET
"https://10.0.10.6:443/api/v1/pods" YYYY-MM-DDTHH mm:ss.sssZ http.go:139:
Response status: "403 Forbidden" YYYY-MM-DDTHH mm:ss.sssZ http.go:139:
Response status: "403 Forbidden"`
Mögliche Ursachen

Diese Logs zeigen an, dass Google Cloud versucht, mit den Anmeldedaten, die Sie bei der Registrierung angegeben haben, auf den Cluster zuzugreifen. 403-Fehler zeigen an, dass die Anmeldedaten nicht die erforderlichen Berechtigungen für den Zugriff auf den Cluster haben.

Lösung

Überprüfen Sie, ob das Token und das Konto, an das es gebunden ist, vorhanden sind, und achten Sie darauf, dass es über die entsprechenden Berechtigungen für den Cluster verfügt.

Kontextfrist überschritten

Symptom

Ein Fehler wie der folgende kann auftreten:

2019/03/06 21:08:43.306625 dialer.go:235: dialer: dial: connecting to gkeconnect.googleapis.com:443...
2019/03/06 21:09:13.306893 dialer.go:240: dialer: dial: unable to connect to gkeconnect.googleapis.com:443: context deadline exceeded
2019/03/06 21:09:13.306943 dialer.go:183: dialer: connection done: context deadline exceeded
Mögliche Ursachen

Dieser Fehler gibt ein Low-Level-TCP-Netzwerkproblem an, bei dem der Connect-Agent nicht mit gkeconnect.googleapis.com kommunizieren kann.

Lösung

Prüfen Sie, ob Pod-Arbeitslasten in diesem Cluster aufgelöst werden können und ausgehende Verbindungen zu gkeconnect.googleapis.com über Port 443 haben.

Verbindung mit Agent unterbrochen

Symptome

In den Connect-Agent-Logs tritt möglicherweise folgende Fehler auf:

2020/10/06 18:02:34.409749 dialer.go:277: dialer: dial: connection to gkeconnect.googleapis.com:443 failed after 8m0.790286282s: serve: receive request failed: rpc error: code = Unavailable desc = transport is closing
2020/10/06 18:02:34.416618 dialer.go:207: dialer: connection done: serve: receive request failed: rpc error: code = Unavailable desc = transport is closing
2020/10/06 18:02:34.416722 dialer.go:295: dialer: backoff: 978.11948ms
2020/10/06 18:02:34.410097 tunnel.go:651: sendResponse: EOF [rpc_id=52]
2020/10/06 18:02:34.420077 tunnel.go:651: sendResponse: EOF [rpc_id=52]
2020/10/06 18:02:34.420204 tunnel.go:670: sendHalfClose: EOF [rpc_id=52]
2020/10/06 18:02:34.401412 tunnel.go:670: sendHalfClose: EOF [rpc_id=53]
Mögliche Ursachen

Die Verbindung mit Connect wird getrennt, wenn Connect Agent nicht genügend Ressourcen hat, z. B. auf kleineren AWS EC2-Instanzen wie t3.medium.

Lösung

Wenn Sie AWS und den T3-Instanztyp verwenden, aktivieren Sie T3 unbegrenzt oder verwenden Sie einen Instanztyp mit mehr Ressourcen. für Ihre Knotenpools.

Fleet kann nicht auf das Projekt zugreifen

Symptome

Bei einigen Fleet-Vorgängen (normalerweise Cluster-Registrierung) wird möglicherweise ein Fehler wie der folgende angezeigt:

ERROR: (gcloud.container.hub.memberships.register) failed to initialize Feature
"authorizer", the fleet service account (service-PROJECT_NUMBER@gcp-sa-gkehub.iam.gserviceaccount.com) may not have access to your project
Mögliche Ursachen

Die Verknüpfung des Fleet-Standarddienstkontos gcp-sa-gkehub mit einem Projekt kann versehentlich aufgehoben werden. Der Fleet-Dienstagent ist eine IAM-Rolle, mit der dem Dienstkonto die Berechtigungen zum Verwalten von Clusterressourcen erteilt werden. Wenn Sie diese Rollenbindung aus dem Dienstkonto entfernen, wird die Verknüpfung des Standarddienstkontos mit dem Projekt aufgehoben. Dies kann verhindern, dass Sie Cluster und andere Clustervorgänge registrieren können.

Mit der gcloud CLI oder der Google Cloud Console können Sie prüfen, ob das Dienstkonto aus Ihrem Projekt entfernt wurde. Wenn im Befehl oder im Dashboard unter Ihren Dienstkonten gcp-sa-gkehub nicht angezeigt wird, wurde die Verknüpfung mit dem Dienstkonto aufgehoben.

gcloud

Führen Sie dazu diesen Befehl aus:

gcloud projects get-iam-policy PROJECT_NAME

Dabei ist PROJECT_NAME der Name des Projekts, in dem Sie den Cluster registrieren möchten.

Console

Öffnen Sie in der Google Cloud Console die Seite IAM und Verwaltung.

Lösung

Wenn Sie die Rollenbindung des Fleet-Dienst-Agents entfernt haben, führen Sie die folgenden Befehle aus, um die Rollenbindung wiederherzustellen:

PROJECT_NUMBER=$(gcloud projects describe PROJECT_NAME --format "value(projectNumber)")
gcloud projects add-iam-policy-binding PROJECT_NAME \
  --member "serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-gkehub.iam.gserviceaccount.com" \
  --role roles/gkehub.serviceAgent

Mit dem folgenden Befehl bestätigen Sie, dass die Rollenbindung erteilt wurde:

gcloud projects get-iam-policy PROJECT_NAME

Wenn der Name des Dienstkontos zusammen mit der Rolle gkehub.serviceAgent angezeigt wird, wurde die Rollenbindung erteilt. Beispiel:

- members:
  - serviceAccount:service-1234567890@gcp-sa-gkehub.iam.gserviceaccount.com
  role: roles/gkehub.serviceAgent

Fehler bei der Registrierung eines GKE-Clusters in einem anderen Projekt als Fleet

Symptome

Wenn Sie einen GKE-Cluster von einem anderen Projekt als dem Fleet-Projekt registrieren, wird in der gcloud CLI möglicherweise ein Fehler wie der folgende angezeigt:

...
message: 'DeployPatch failed'>
detail: 'DeployPatch failed'
...

Sie können dies in Logging prüfen, indem Sie die folgenden Filter anwenden:

resource.type="gke_cluster"
resource.labels.cluster_name="my-cluster"
protoPayload.methodName="google.container.v1beta1.ClusterManager.UpdateCluster"
protoPayload.status.code="13"
protoPayload.status.message="Internal error."
severity=ERROR

Mögliche Ursachen

Das Fleet-Standarddienstkonto hat nicht die erforderlichen Berechtigungen im Projekt des GKE-Clusters.

Lösung

Weisen Sie dem Fleet-Standarddienstkonto die erforderlichen Berechtigungen zu, bevor Sie den Cluster registrieren.

Fehler bei der Registrierung/Registrierung eines GKE-Clusters oder beim Aktualisieren der Details zur Flotten-Mitgliedschaft für einen registrierten GKE-Cluster während der Rotation von Anmeldedaten

Symptome

Bei der Rotation Ihrer Clusteranmeldedaten(https://cloud.google.com/kubernetes-engine/docs/how-to/credential-rotation) können Fehler auftreten, wenn Sie einen GKE-Cluster registrieren/aufheben oder die Mitgliedschaft für Einen registrierten GKE-Cluster.

ERROR: (gcloud.container.hub.memberships.unregister) "code": 13,
"message": "an internal error has occurred"
Mögliche Ursachen

Clusteranmeldedaten befinden sich in einem Zwischenzustand, in dem der Fleet-Dienst nicht darauf zugreifen kann.

Lösung

Schließen Sie die Rotation ab, bevor Sie den Cluster registrieren/umpregistrieren oder die Mitgliedschaft für einen registrierten GKE-Cluster aktualisieren.

Fehler beim Deaktivieren der Fleet API

Symptome

Beim Versuch, die Fleet-API (gkehub.googleapis.com) zu deaktivieren, tritt möglicherweise ein Fehler wie der folgende auf:

Not ready to deactivate the service on this project; ensure there are no more resources managed by this service.
Mögliche Ursachen

Es sind noch Cluster vorhanden, die in Google Cloud (Mitgliedschaften) oder Flotten-Features angemeldet sind. Alle APIs und Funktionen müssen zuerst abgemeldet oder deaktiviert werden, bevor die API deaktiviert werden kann.

  • Folgen Sie der Anleitung unter Mitglieder der Flotte aufrufen, um Ihre derzeit registrierten Cluster anzusehen.

  • So rufen Sie alle aktiven Funktionen der Flotte auf:

gcloud und cURL

$ curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    https://gkehub.googleapis.com/v1alpha1/projects/PROJECT_NAME/locations/global/features

Dabei ist PROJECT_NAME der Name des Projekts, in dem Sie die Fleet API deaktivieren möchten.

Console

Wenn Sie GKE Enterprise in Ihrem Projekt aktiviert haben, rufen Sie die Seite Features in der Google Cloud Console auf. Als AKTIVIERT aufgeführte Funktionen sind aktive Features der Flotte.

Lösung

Zuerst heben Sie die Registrierung von Clustern auf, die weiterhin bei Ihrer Projektflotte registriert sind. Bevor Sie einige Funktionen deaktivieren können, müssen alle Cluster abgemeldet sein.

Deaktivieren Sie anschließend alle Funktionen der Flotte. Derzeit ist dies nur mit der Fleet REST API möglich.

  1. Deaktivieren Sie die Features der Flotte, die Sie für Ihr Projekt aktiviert haben.

    $ gcloud alpha container hub FEATURE_COMMAND disable
    
  2. Funktion zum Autorisieren und Messen von Funktionen deaktivieren, die standardmäßig aktiviert sind.

    $ curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -X "DELETE" \
        https://gkehub.googleapis.com/v1alpha1/projects/PROJECT_NAME/locations/global/features/FEATURE
    

    Dabei ist FEATURE der Name des Features, das deaktiviert werden soll (z. B. authorizer oder metering).

Fehlende Clusterberechtigungen beim Registrieren eines Clusters

Symptom:

Beim Versuch, einen Cluster mit einem Nutzerkonto oder einem Google Cloud-Dienstkonto zu registrieren, wird möglicherweise ein Fehler wie der folgende angezeigt:

ERROR: (gcloud.container.hub.memberships.register) ResponseError: code=403, message=Required "container.clusters.get" permission(s) for "projects/my-project/zones/zone-a/clusters/my-cluster"
Mögliche Ursache:

Das Konto, das versucht, den Cluster zu registrieren, hat nicht die erforderlichecluster-admin Rolle "rollenbasierte Zugriffssteuerung" (Role-based Access Control, RBAC) im Cluster.

Lösung:

Weisen Sie dem Konto die RBAC-Rolle cluster-admin zu, bevor Sie den Cluster registrieren.

Fehler Failed to check if the user is a cluster-admin: Unable to connect to the server beim Registrieren eines Clusters

Symptom:

Beim Registrieren eines Clusters kann ein Fehler wie der folgende auftreten:

ERROR: (gcloud.container.hub.memberships.register) Failed to check if the user is a cluster-admin: Unable to connect to the server: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

Oder

ERROR: (gcloud.container.hub.memberships.register) Failed to check if the user is a cluster-admin: Unable to connect to the server: dial tcp MASTER_ENDPOINT_IP:443: i/o timeout
Mögliche Ursache:

Der Computer, auf dem Sie den Registrierungsbefehl gcloud ausführen, kann keine Verbindung zum externen Endpunkt des Clusters herstellen. Dies tritt normalerweise auf, wenn Sie einen privaten Cluster mit deaktiviertem externem Zugriff/IP-Adresse haben, die externe IP-Adresse Ihres Computers jedoch nicht zugelassen ist. Beachten Sie, dass die Registrierung eines GKE-Clusters nach gcloud 407.0.0 nicht erforderlich ist.

Lösung:

Achten Sie darauf, dass der Computer, auf dem Sie den gcloud-Registrierungsbefehl ausführen möchten, auf den API-Server des Clusters zugreifen kann. Wenn für den Cluster kein externer Zugriff aktiviert ist, melden Sie den Fall dem Google Cloud-Support.

Unterstützung anfordern

Gehen Sie so vor, um ein Ticket beim Google Cloud-Support für GKE Enterprise einzureichen:

  1. Stellen Sie eine Supportanfrage beim Google Cloud-Support.
  2. Speichern Sie die Connect-Logs gemäß der Anleitung unter Connect-Agent-Logs erfassen.
  3. Wenn Sie Fehler bei einem GKE on VMware- oder Google Distributed Cloud Virtual for Bare Metal-Cluster mit Google Groups oder Drittanbieter-Support beheben möchten, folgen Sie der Anleitung unter GKE Identity Service-Logs erfassen, um die GKE Identity Service-Logs zu speichern. Bereinigen Sie gegebenenfalls die Pod-Logs in der gespeicherten Datei.
  4. Hängen Sie die relevanten Logs an Ihren Fall an.