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
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"
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
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ür
cluster-3
das Logging deaktiviert.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:
CLUSTER_NAME
: Der Name Ihres Clusters.COMPUTE_LOCATION
: der Compute Engine-Standort für Ihren Cluster.
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
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:
CLUSTER_NAME
: Der Name Ihres Clusters.COMPUTE_LOCATION
: der Compute Engine-Standort für Ihren Cluster.
Migrieren Sie Ihre Arbeitslasten vom alten Knotenpool zum neu erstellten Knotenpool und überwachen Sie den Fortschritt.
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:
CLUSTER_NAME
: Der Name Ihres Clusters.COMPUTE_LOCATION
: der Compute Engine-Standort für Ihren Cluster.
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.
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:
CLUSTER_NAME
: Der Name Ihres Clusters.COMPUTE_LOCATION
: der Compute Engine-Standort für Ihren Cluster.
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)"
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)"
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.
Rufen Sie in der Google Cloud Console die Seite Kontingente auf.
Filtern Sie die Tabelle nach "Cloud Logging API".
Schauen Sie nach, dass Sie keines der Kontingente erreicht haben.