Risoluzione dei problemi di logging in GKE


Questa pagina mostra come indagare e risolvere i problemi relativi al logging di GKE.

Log del cluster mancanti in Cloud Logging

Verifica che il logging sia abilitato nel progetto

  1. Elenca i servizi abilitati:

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

    L'output seguente indica che il logging è abilitato per il progetto:

    NAME                    TITLE
    logging.googleapis.com  Cloud Logging API
    

    (Facoltativo) Controlla i log nel visualizzatore log per determinare chi ha disabilitato l'API e quando:

    protoPayload.methodName="google.api.serviceusage.v1.ServiceUsage.DisableService"
    protoPayload.response.services="logging.googleapis.com"
    
  2. Se il logging è disabilitato, abilita il logging:

    gcloud services enable logging.googleapis.com
    

Verifica che il logging sia abilitato sul cluster

  1. Elenca i cluster:

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

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo progetto Google Cloud.

    L'output è simile al seguente:

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

    Se il valore per il cluster è vuoto, il logging è disabilitato. Ad esempio, cluster-3 in questo output ha il logging disabilitato.

  2. Abilita il logging del cluster se impostato su NONE:

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

    Sostituisci quanto segue:

Verifica che i nodi nei pool di nodi abbiano l'ambito di accesso di Cloud Logging

Uno dei seguenti ambiti è obbligatorio affinché i nodi scrivano log in Cloud Logging:

  • https://www.googleapis.com/auth/logging.write
  • https://www.googleapis.com/auth/cloud-platform
  • https://www.googleapis.com/auth/logging.admin
  1. Controlla gli ambiti configurati su ciascun pool di nodi nel cluster:

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

    Sostituisci quanto segue:

    Esegui la migrazione dei carichi di lavoro dal vecchio pool di nodi a quello appena creato e monitora l'avanzamento.

  2. Crea nuovi pool di nodi con l'ambito di logging corretto:

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

    Sostituisci quanto segue:

Verifica che l'account di servizio del pool di nodi disponga di un ruolo con le autorizzazioni IAM corrette

L'account di servizio deve avere un ruolo contenente l'autorizzazione logging.logEntries.create per creare log.

  1. Trova l'account di servizio per ogni pool di nodi:

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

    Sostituisci quanto segue:

    L'output è simile al seguente:

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

    Se il pool di nodi utilizza l'account di servizio Compute Engine predefinito, puoi descriverlo utilizzando il seguente comando. Come best practice, utilizza un account di servizio personalizzato con privilegi minimi per i pool di nodi. L'account di servizio Compute Engine predefinito contiene più delle autorizzazioni minime necessarie per eseguire i cluster.

    gcloud compute project-info describe --format="table(defaultServiceAccount)"
    
  2. Verifica che i ruoli IAM dispongano di autorizzazioni sufficienti.

    Visualizza le autorizzazioni contenute nei ruoli concessi a un account di servizio specifico:

    gcloud projects get-iam-policy PROJECT_ID \
        --flatten="bindings[]" \
        --filter="bindings.members=serviceAccount:SERVICE_ACCOUNT" \
        --format="table[box](bindings.role)"
    
  3. Concedi all'account di servizio un ruolo che contiene l'autorizzazione logging.logEntries.create. Puoi utilizzare un ruolo predefinito o creare un ruolo personalizzato.

Verifica che non siano state raggiunte le quote dell'API Cloud Logging

Verifica di non aver raggiunto le quote di scrittura dell'API per Cloud Logging.

  1. Vai alla pagina Quote nella console Google Cloud.

    Vai a Quote

  2. Filtra la tabella per "API Cloud Logging".

  3. Verifica di non aver raggiunto nessuna delle quote.