Questa pagina mostra come esaminare e risolvere i problemi relativi al logging di GKE.
Se hai bisogno di ulteriore assistenza, contatta Assistenza clienti Google Cloud.Log del cluster mancanti in Cloud Logging
Verifica che il logging sia abilitato nel progetto
Elenca i servizi abilitati:
gcloud services list --enabled --filter="NAME=logging.googleapis.com"
Il seguente output indica che la registrazione è attivata 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 l'API è stata disabilitata:
protoPayload.methodName="google.api.serviceusage.v1.ServiceUsage.DisableService" protoPayload.response.services="logging.googleapis.com"
Se il logging è disabilitato, abilitalo:
gcloud services enable logging.googleapis.com
Verifica che il logging sia abilitato sul cluster
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
: il tuo ID 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, la registrazione è disattivata. Ad esempio,
cluster-3
in questo output ha il logging disabilitato.Abilita il logging del cluster se impostato su
NONE
:gcloud container clusters update CLUSTER_NAME \ --logging=SYSTEM,WORKLOAD \ --location=COMPUTE_LOCATION
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del tuo cluster.COMPUTE_LOCATION
: la posizione Compute Engine per il tuo cluster.
Verifica che i nodi nei pool di nodi abbiano l'ambito di accesso a Cloud Logging
Per i nodi in cui scrivere i log è necessario uno dei seguenti ambiti Cloud Logging:
https://www.googleapis.com/auth/logging.write
https://www.googleapis.com/auth/cloud-platform
https://www.googleapis.com/auth/logging.admin
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:
CLUSTER_NAME
: il nome del tuo cluster.COMPUTE_LOCATION
: il Località di Compute Engine per il tuo cluster.
Esegui la migrazione dei carichi di lavoro dal vecchio pool di nodi al pool di nodi appena creato e monitora lo stato di avanzamento.
Crea nuovi pool di nodi con l'ambito di registrazione corretto:
gcloud container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --location=COMPUTE_LOCATION \ --scopes="gke-default"
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del tuo cluster.COMPUTE_LOCATION
: la posizione Compute Engine per il tuo cluster.
Verifica che all'account di servizio del pool di nodi sia stato assegnato un ruolo con le autorizzazioni IAM corrette
L'account di servizio deve avere un ruolo che contenga l'autorizzazionelogging.logEntries.create
per creare i log.
Trova l'account di servizio per ciascun pool di nodi:
gcloud container node-pools list \ --cluster=CLUSTER_NAME \ --format="table(name,config.serviceAccount)" \ --location=COMPUTE_LOCATION
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del tuo cluster.COMPUTE_LOCATION
: il Località di Compute Engine per il tuo cluster.
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 tuoi pool di nodi. L'account di servizio predefinito di Compute Engine contiene più di le autorizzazioni minime necessari per eseguire i cluster.
gcloud compute project-info describe --format="table(defaultServiceAccount)"
Verifica che i ruoli IAM dispongano di autorizzazioni sufficienti.
Visualizzare le autorizzazioni contenute nei ruoli concessi a uno specifico account di servizio:
gcloud projects get-iam-policy PROJECT_ID \ --flatten="bindings[]" \ --filter="bindings.members=serviceAccount:SERVICE_ACCOUNT" \ --format="table[box](bindings.role)"
Concedi un ruolo che contenga l'autorizzazione
logging.logEntries.create
all'account di servizio. Puoi utilizzare uno dei seguenti ruolo predefinito o crea un ruolo personalizzato.
Verifica che le quote dell'API di scrittura di Cloud Logging non siano state raggiunte
Conferma di non aver raggiunto le quote di scrittura delle API per Cloud Logging.
Vai alla pagina Quote nella console Google Cloud.
Filtra la tabella per "API Cloud Logging".
Verifica di non aver raggiunto nessuna delle quote.
Eseguire il debug dei problemi di logging GKE con gcpdiag
Se mancano o ricevi log incompleti da GKE usa lo strumentogcpdiag
per la risoluzione dei problemi.
gcpdiag
è uno strumento open source. Non è un prodotto Google Cloud ufficialmente supportato.
Puoi utilizzare lo strumento gcpdiag
per identificare e risolvere i problemi relativi a Google Cloud
per risolvere i problemi
del progetto. Per ulteriori informazioni, consulta
progetto gcpdiag su GitHub.
- Logging a livello di progetto: garantisce che Google Cloud il progetto che ospita il cluster GKE include Cloud Logging API abilitata.
- Logging a livello di cluster: verifica che il logging sia esplicitamente abilitati all'interno della configurazione in un cluster Kubernetes.
- Autorizzazioni pool di nodi: verifica che i nodi all'interno dei pool di nodi del cluster abbiano attivato l'ambito "Scrittura di Cloud Logging", che consente loro di inviare i dati dei log.
- Autorizzazioni dell'account di servizio:convalida che il servizio utilizzato dai pool di nodi dispone delle autorizzazioni IAM necessarie per: a interagire con Cloud Logging. In particolare, in genere è richiesto il ruolo "roles/logging.logWriter".
- Quote di scrittura dell'API Cloud Logging: verifica che le quote di scrittura dell'API Cloud Logging non siano state superate nel periodo di tempo specificato.
Console Google Cloud
- Completa e poi copia il seguente comando.
- Apri la console Google Cloud e attiva Cloud Shell. Apri Cloud Console
- Incolla il comando copiato.
- Esegui il comando
gcpdiag
, che scarica l'immagine Dockergcpdiag
, ed esegue i controlli diagnostici. Se applicabile, segui le istruzioni dell'output per correggere i controlli non superati.
GOOGLE_AUTH_TOKEN=GOOGLE_AUTH_TOKEN \
gcpdiag runbook gke/logs \
--parameter project_id=PROJECT_ID \
--parameter name=GKE_NAME \
--parameter location=LOCATION \
--auto --reason=REASON
Docker
Puoi
eseguire gcpdiag
utilizzando un wrapper che inizia gcpdiag
in
Container Docker. Docker o
Podman deve essere installato.
- Copia ed esegui il seguente comando sulla tua workstation locale.
curl https://gcpdiag.dev/gcpdiag.sh >gcpdiag && chmod +x gcpdiag
- Esegui il comando
gcpdiag
../gcpdiag runbook gke/logs \ --parameter project_id=PROJECT_ID \ --parameter name=GKE_NAME \ --parameter location=LOCATION
Visualizza i parametri disponibili per questo runbook.
Sostituisci quanto segue:
- PROJECT_ID: l'ID del progetto che contiene la risorsa.
- GKE_NAME: il nome del cluster GKE.
- LOCATION: la zona o la regione del cluster GKE.
Flag utili:
--universe-domain
: se applicabile, il dominio Trusted Partner Sovereign Cloud che ospita la risorsa--parameter
o-p
: parametri del runbook
Per un elenco e una descrizione di tutti i gcpdiag
flag dello strumento, consulta le
Istruzioni per l'utilizzo di gcpdiag
.