Fehlerbehebung beim Logging in GKE


Auf dieser Seite erfahren Sie, wie Sie Probleme mit GKE-Logging untersuchen und beheben.

Wenn Sie weitere Unterstützung benötigen, wenden Sie sich an den Cloud Customer Care.

Fehlende Cluster-Logs in Cloud Logging

Prüfen, ob das Logging im Projekt aktiviert ist

  1. Aktivierte Dienste auflisten:

    gcloud services list --enabled --filter="NAME=logging.googleapis.com"
    

    Die folgende Ausgabe zeigt an, dass das Logging für das Projekt aktiviert ist:

    NAME                    TITLE
    logging.googleapis.com  Cloud Logging API
    

    Optional: Prüfen Sie die Logs in der Loganzeige, um festzustellen, wer die API deaktiviert hat und wann sie deaktiviert wurde:

    protoPayload.methodName="google.api.serviceusage.v1.ServiceUsage.DisableService"
    protoPayload.response.services="logging.googleapis.com"
    
  2. Wenn das Logging deaktiviert ist, aktivieren Sie das Logging:

    gcloud services enable logging.googleapis.com
    

Prüfen, ob das Logging für den Cluster aktiviert ist

  1. Listen Sie die Cluster auf:

    gcloud container clusters list \
        --project=PROJECT_ID \
        '--format=value(name,loggingConfig.componentConfig.enableComponents)' \
        --sort-by=name | column -t
    

    Dabei gilt:

    • PROJECT_ID ist Ihre Google Cloud-Projekt-ID.

    Die Ausgabe sieht etwa so aus:

    cluster-1              SYSTEM_COMPONENTS
    cluster-2              SYSTEM_COMPONENTS;WORKLOADS
    cluster-3
    

    Wenn der Wert für Ihren Cluster leer ist, ist das Logging deaktiviert. Beispiel: In dieser Ausgabe ist fürcluster-3 das Logging deaktiviert.

  2. Aktivieren Sie das Cluster-Logging, wenn Sie auf NONE gesetzt sind:

    gcloud container clusters update CLUSTER_NAME  \
        --logging=SYSTEM,WORKLOAD \
        --location=COMPUTE_LOCATION
    

    Dabei gilt:

Prüfen, ob Knoten in den Knotenpools den Cloud Logging-Zugriffsbereich haben

Einer der folgenden Bereiche ist erforderlich, damit Knoten Logs in Cloud Logging schreiben können:

  • https://www.googleapis.com/auth/logging.write
  • https://www.googleapis.com/auth/cloud-platform
  • https://www.googleapis.com/auth/logging.admin
  1. Prüfen Sie die Bereiche, die in jedem Knotenpool im Cluster konfiguriert sind:

    gcloud container node-pools list --cluster=CLUSTER_NAME \
        --format="table(name,config.oauthScopes)" \
        --location COMPUTE_LOCATION
    

    Dabei gilt:

    Migrieren Sie Ihre Arbeitslasten vom alten Knotenpool zum neu erstellten Knotenpool und überwachen Sie den Fortschritt.

  2. Erstellen Sie neue Knotenpools mit dem richtigen Logging-Bereich:

    gcloud container node-pools create NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --location=COMPUTE_LOCATION \
        --scopes="gke-default"
    

    Dabei gilt:

Prüfen, ob das Dienstkonto des Knotenpools eine Rolle mit den richtigen IAM-Berechtigungen hat

Das Dienstkonto muss eine Rolle haben, die die Berechtigung logging.logEntries.create zum Erstellen von Logs enthält.

  1. Suchen Sie das Dienstkonto für jeden Knotenpool:

    gcloud container node-pools list \
        --cluster=CLUSTER_NAME \
        --format="table(name,config.serviceAccount)" \
        --location=COMPUTE_LOCATION
    

    Dabei gilt:

    Die Ausgabe sieht in etwa so aus:

    NAME          SERVICE_ACCOUNT
    default-pool  gke-cluster-sa@developer.gserviceaccount.com
    

    Wenn der Knotenpool das Compute Engine-Standarddienstkonto verwendet, können Sie es mit dem folgenden Befehl beschreiben. Verwenden Sie als Best Practice für Ihre Knotenpools ein benutzerdefiniertes Dienstkonto mit minimalen Berechtigungen. Das Compute Engine-Standarddienstkonto enthält mehr als die für die Ausführung Ihrer Cluster mindestens erforderlichen Berechtigungen.

    gcloud compute project-info describe --format="table(defaultServiceAccount)"
    
  2. Prüfen Sie, ob die IAM-Rollen über ausreichende Berechtigungen verfügen.

    Rufen Sie die Berechtigungen auf, die in Rollen enthalten sind, die einem bestimmten Dienstkonto zugewiesen sind:

    gcloud projects get-iam-policy PROJECT_ID \
        --flatten="bindings[]" \
        --filter="bindings.members=serviceAccount:SERVICE_ACCOUNT" \
        --format="table[box](bindings.role)"
    
  3. Gewähren Sie dem Dienstkonto eine Rolle mit der Berechtigung logging.logEntries.create. Sie können eine vordefinierte Rolle verwenden oder eine benutzerdefinierte Rolle erstellen.

Prüfen, dass die Cloud Logging Write-API-Kontingente nicht erreicht wurden

Überzeugen Sie sich, dass Sie die API-Write-kontingente für Cloud Logging nicht erreicht haben.

  1. Rufen Sie in der Google Cloud Console die Seite Kontingente auf.

    Kontingente aufrufen

  2. Filtern Sie die Tabelle nach "Cloud Logging API".

  3. Schauen Sie nach, dass Sie keines der Kontingente erreicht haben.

Nächste Schritte

Wenn Sie weitere Unterstützung benötigen, wenden Sie sich an den Cloud Customer Care.