Fehlerbehebung für Eventarc für Google Kubernetes Engine (GKE)

Auf dieser Seite wird beschrieben, wie Sie Probleme beheben, die bei der Verwendung von Eventarc für GKE auftreten können, einschließlich der öffentlichen Endpunkte privater und öffentlicher Dienste, die in einem GKE-Cluster ausgeführt werden.

Weitere Probleme, die auftreten können, finden Sie unter:

Fehler beim Erstellen des Triggers mit Fehlern bei der Ressourcenerstellung

Möglicherweise erhalten Sie eine Fehlermeldung, die so aussieht:

Error applying IAM policy for service account 'projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT':
Error setting IAM policy for service account 'projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT':
googleapi: Error 403: Permission iam.serviceAccounts.setIamPolicy is required to perform this
operation on service account SERVICE_ACCOUNT., forbidden

Error when reading or editing Container Cluster "cluster": googleapi:
Error 403: Required "container.clusters.get" permission(s) for "..."., forbidden
Error reading instance group manager returned as an instance group URL:
"googleapi: Error 403: Required 'compute.instanceGroupManagers.get' permission
for '...', forbidden"

Dieser Fehler tritt auf, wenn Sie das Eventarc-Dienstkonto nicht korrekt eingerichtet haben, das von Eventarc zum Verwalten von Ressourcen im Google Kubernetes Engine-Cluster (GKE) benötigt wird.

Prüfen Sie, ob das Eventarc-Dienstkonto mit den entsprechenden Berechtigungen zum Erstellen von Ressourcen konfiguriert wurde, um das Problem zu beheben. Weitere Informationen finden Sie in der Anleitung für einen bestimmten Anbieter, einen Ereignistyp und ein GKE-Ziel.

Die Triggererstellung schlägt fehl, da der Zielcluster nicht gefunden werden kann oder Workload Identity nicht aktiviert ist.

Möglicherweise erhalten Sie eine Fehlermeldung, die so aussieht:

ERROR: (gcloud.eventarc.triggers.create) NOT_FOUND: Not found: projects/PROJECT_ID/locations/
LOCATION/clusters/CLUSTER_NAME.
...
ERROR: (gcloud.eventarc.triggers.create) INVALID_ARGUMENT: workload identity is not enabled on
cluster CLUSTER_NAME in LOCATION
...

Dieser Fehler tritt auf, wenn Eventarc den GKE-Zielcluster nicht finden kann oder Workload Identity nicht für den Cluster aktiviert ist.

Achten Sie darauf, dass der Zielcluster vorhanden und Workload Identity aktiviert ist, um das Problem zu beheben.

Triggererstellung schlägt aufgrund eines ungültigen Ressourcenstatus fehl

Möglicherweise erhalten Sie für Ihr Projekt eine Fehlermeldung, die so aussieht:

ERROR: (gcloud.eventarc.triggers.create) Invalid resource state for projects/PROJECT_ID/locations/LOCATION/triggers/TRIGGER_ID.
Ensure that you have enabled your GKE destination and assigned required permissions to the service account.
For more information, see https://cloud.google.com/eventarc/docs/gke/troubleshooting.

Dieser Fehler tritt in folgenden Fällen auf:

  • Ihr GKE-Ziel wurde nicht aktiviert.
  • Dem Dienstkonto wurden nicht die erforderlichen Rollen und Berechtigungen erteilt, mit denen Eventarc Ereignisse für GKE-Ziele verwalten kann.

So lösen Sie dieses Problem:

  1. Prüfen Sie, ob die GKE-Ziele aktiviert sind:
    gcloud eventarc gke-destinations init
    Weitere Informationen finden Sie in der Anleitung für einen bestimmten Anbieter und einen Ereignistyp im Abschnitt "GKE-Ziele aktivieren".
  2. Prüfen Sie, ob das Eventarc-Dienstkonto mit den entsprechenden Berechtigungen zum Erstellen von Ressourcen konfiguriert wurde. Weitere Informationen dazu, wie Sie dem Dienstkonto die entsprechenden Rollen zuweisen, finden Sie in der Anleitung für einen bestimmten Anbieter und Ereignistyp im Abschnitt "Erstellen eines Triggers vorbereiten". an.
  3. Wenn der Fehler weiterhin auftritt, wenden Sie sich bitte an den Support.

Der Trigger wurde erfolgreich erstellt, das Ziel empfängt jedoch keine Ereignisse

Prüfen Sie, ob seit der Erstellung des Triggers genügend Zeit vergangen ist. Es kann bis zu zwei Minuten dauern, bis Ereignisse gesendet werden.

  1. Wenn Ereignisse nicht am Ziel zugestellt werden, werden möglicherweise von Pub/Sub an das Ziel gesendete Ereignisse verworfen:

    Damit die Ereignisse nicht verworfen werden, richten Sie eine Wiederholungsrichtlinie für Pub/Sub-Abos ein oder leiten Sie nicht zugestellte Nachrichten an ein Thema für unzustellbare Nachrichten weiter (auch als Warteschlange für unzustellbare Nachrichten bezeichnet).

    Bevor Sie das Thema für unzustellbare Nachrichten festlegen, rufen Sie das Thema und das Abo des Triggers ab:

    gcloud eventarc triggers describe TRIGGER \
      --location=LOCATION

    Dabei gilt:

    • TRIGGER: ID des Triggers oder eine voll qualifizierte Kennzeichnung.
    • LOCATION: Standort des Eventarc-Triggers.
  2. Wenn der Trigger immer noch nicht funktioniert, prüfen Sie den Status der Eventarc-Komponente zur Weiterleitung von Ereignissen, um zu sehen, ob sie ordnungsgemäß bereitgestellt wurde:

    1. Ermitteln Sie die Cluster-Namespaces, indem Sie alle Pods auflisten, deren Name event-forwarder enthält:
      kubectl get pods --all-namespaces | grep event-forwarder
      Die entsprechende Ausgabe sieht etwa so aus:
      event-forwarder-namespace-hash1   event-forwarder-hash1   1/1   Running   0   5d2h
      event-forwarder-namespace-hash2   event-forwarder-hash2   1/1   Running   0   2d2h
      
      Die ersten 30 Zeichen der Namespaces sollten mit dem Namen des von Ihnen erstellten Eventarc-Triggers übereinstimmen, gefolgt von einem Hash, um alle Trigger mit denselben anfänglichen 30 Zeichen zu unterscheiden.
    2. Rufen Sie die Deployment-Details ab:
      kubectl get deployments -n EVENT_FORWARDER_NAMESPACE event-forwarder
      
    3. Rufen Sie die Pod-Details ab:
      kubectl describe pod -n EVENT_FORWARDER_NAMESPACE EVENT_FORWARDER_HASH
      
    4. Drucken Sie die Pod-Logs aus, um die Fehlerursache zu ergründen:
      kubectl logs -f -n EVENT_FORWARDER_NAMESPACE EVENT_FORWARDER_HASH
      
      Im folgenden Log wurde dem Dienstkonto beispielsweise die Rolle Pub/Sub Subscriber entzogen:
      {"error":"generic::permission_denied: missing 'pubsub.subscriptions.consume' permission",
      "message":"Permissions check failed","severity":"fatal","timestamp":"2021-07-07T14:57:49.038877483Z"}