Cette page vous explique comment examiner et résoudre les problèmes liés à la journalisation dans GKE.
Si vous avez besoin d'une aide supplémentaire, contactez Cloud Customer Care.Journaux de clusters manquants dans Cloud Logging
Vérifiez que la journalisation est activée dans le projet
Répertoriez les services activés :
gcloud services list --enabled --filter="NAME=logging.googleapis.com"
Le résultat suivant indique que la journalisation est activée pour le projet :
NAME TITLE logging.googleapis.com Cloud Logging API
Facultatif: Consultez les journaux dans la visionneuse de journaux pour déterminer qui a désactivé l'API et quand :
protoPayload.methodName="google.api.serviceusage.v1.ServiceUsage.DisableService" protoPayload.response.services="logging.googleapis.com"
Si la journalisation est désactivée, activez-là :
gcloud services enable logging.googleapis.com
Vérifiez que la journalisation est activée sur le cluster
Répertoriez les clusters :
gcloud container clusters list \ --project=PROJECT_ID \ '--format=value(name,loggingConfig.componentConfig.enableComponents)' \ --sort-by=name | column -t
Remplacez les éléments suivants :
PROJECT_ID
: ID de votre projet Google Cloud.
Le résultat ressemble à ce qui suit :
cluster-1 SYSTEM_COMPONENTS cluster-2 SYSTEM_COMPONENTS;WORKLOADS cluster-3
Si la valeur correspondant à votre cluster est vide, la journalisation est désactivée. Par exemple,
cluster-3
dans cette sortie a la journalisation désactivée.Activez la journalisation des clusters si elle est définie sur
NONE
:gcloud container clusters update CLUSTER_NAME \ --logging=SYSTEM,WORKLOAD \ --location=COMPUTE_LOCATION
Remplacez les éléments suivants :
CLUSTER_NAME
: nom du clusterCOMPUTE_LOCATION
: emplacement Compute Engine de votre cluster.
Vérifier que les nœuds des pools de nœuds disposent du niveau d'accès à Cloud Logging
L'un des champs d'application suivants est nécessaire pour que les nœuds écrivent des journaux dans Cloud Logging :
https://www.googleapis.com/auth/logging.write
https://www.googleapis.com/auth/cloud-platform
https://www.googleapis.com/auth/logging.admin
Vérifiez les champs d'application configurés sur chaque pool de nœuds du cluster :
gcloud container node-pools list --cluster=CLUSTER_NAME \ --format="table(name,config.oauthScopes)" \ --location COMPUTE_LOCATION
Remplacez les éléments suivants :
CLUSTER_NAME
: nom du clusterCOMPUTE_LOCATION
: emplacement Compute Engine de votre cluster.
Migrez vos charges de travail de l'ancien pool de nœuds vers le nouveau pool de nœuds et surveillez la progression.
Créez des pools de nœuds avec le champ d'application de journalisation approprié :
gcloud container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --location=COMPUTE_LOCATION \ --scopes="gke-default"
Remplacez les éléments suivants :
CLUSTER_NAME
: nom du clusterCOMPUTE_LOCATION
: emplacement Compute Engine de votre cluster.
Vérifiez que le compte de service du pool de nœuds dispose d'un rôle doté des autorisations IAM appropriées
Le compte de service doit disposer d'un rôle qui met en conteneur l'autorisation logging.logEntries.create
pour créer des journaux.
Recherchez le compte de service pour chaque pool de nœuds :
gcloud container node-pools list \ --cluster=CLUSTER_NAME \ --format="table(name,config.serviceAccount)" \ --location=COMPUTE_LOCATION
Remplacez les éléments suivants :
CLUSTER_NAME
: nom du clusterCOMPUTE_LOCATION
: emplacement Compute Engine de votre cluster.
Le résultat ressemble à ce qui suit :
NAME SERVICE_ACCOUNT default-pool gke-cluster-sa@developer.gserviceaccount.com
Si le pool de nœuds utilise le compte de service Compute Engine par défaut, vous pouvez le décrire en utilisant la commande suivante. Nous vous recommandons d'utiliser un compte de service personnalisé doté de privilèges minimaux pour vos pools de nœuds. Le compte de service Compute Engine par défaut contient plus d'autorisations que nécessaire pour exécuter vos clusters.
gcloud compute project-info describe --format="table(defaultServiceAccount)"
Vérifiez que les rôles IAM disposent des autorisations suffisantes.
Affichez les autorisations contenues dans les rôles attribués à un compte de service spécifique :
gcloud projects get-iam-policy PROJECT_ID \ --flatten="bindings[]" \ --filter="bindings.members=serviceAccount:SERVICE_ACCOUNT" \ --format="table[box](bindings.role)"
Attribuez un rôle contenant l'autorisation
logging.logEntries.create
au compte de service. Vous pouvez utiliser un rôle prédéfini ou créer un rôle personnalisé.
Vérifier que les quotas d'écriture de l'API Cloud Logging n'ont pas été atteints
Vérifiez que vous n'avez pas atteint les quotas d'écriture de l'API Cloud Logging.
Accédez à la page Quotas de la console Google Cloud.
Filtrez le tableau avec l'expression "Cloud Logging API".
Vérifiez que vous n'avez atteint aucun quota.
Résoudre les problèmes de journalisation GKE avec gcpdiag
Si vous ne recevez pas de journaux ou si ceux-ci sont incomplets à partir de votre cluster GKE, utilisez l'outilgcpdiag
pour le dépannage.
gcpdiag
est un outil Open Source. Il ne s'agit pas d'un produit Google Cloud faisant l'objet d'une assistance officielle.
Vous pouvez utiliser l'outil gcpdiag
pour vous aider à identifier et à résoudre les problèmes liés au projet Google Cloud. Pour plus d'informations, consultez le projet gcpdiag sur GitHub.
- Journalisation au niveau du projet : permet de s'assurer que l'API Cloud Logging est activée dans le projet Google Cloud qui héberge le cluster GKE.
- Journalisation au niveau du cluster : permet de vérifier que la journalisation est explicitement activée dans la configuration du cluster GKE.
- Autorisations du pool de nœuds : permet de confirmer que les nœuds des pools de nœuds du cluster ont bien l'option "Écriture dans Cloud Logging" activée, ce qui leur permet d'envoyer des données de journal.
- Autorisations du compte de service : permet de valider le fait que le compte de service utilisé par les pools de nœuds dispose des autorisations IAM nécessaires pour interagir avec Cloud Logging. Plus précisément, le rôle "roles/logging.logWriter" est généralement requis.
- Quotas d'écriture de l'API Cloud Logging : permet de vérifier que les quotas d'écriture de l'API Cloud Logging n'ont pas été dépassés dans le délai spécifié.
console Google Cloud
- Terminez l'exécution, puis copiez la commande suivante.
- Ouvrez la console Google Cloud et activez Cloud Shell. Ouvrir la console Cloud
- Collez la commande copiée.
- Exécutez la commande
gcpdiag
, qui télécharge l'image Dockergcpdiag
, puis effectue des vérifications de diagnostic. Le cas échéant, suivez les instructions de sortie pour corriger les échecs de vérification.
gcpdiag runbook gke/logs --project=PROJECT_ID \
--parameter name=GKE_NAME \
--parameter location=LOCATION
Docker
Vous pouvez exécuter gcpdiag
à l'aide d'un wrapper qui démarre gcpdiag
dans un conteneur Docker. Docker ou Podman doivent être installés.
- Copiez et exécutez la commande suivante sur votre station de travail locale :
curl https://gcpdiag.dev/gcpdiag.sh >gcpdiag && chmod +x gcpdiag
- Exécutez la commande
gcpdiag
../gcpdiag runbook gke/logs --project=PROJECT_ID \ --parameter name=GKE_NAME \ --parameter location=LOCATION
Affichez les paramètres disponibles pour ce runbook.
Remplacez les éléments suivants :
- PROJECT_ID : ID du projet contenant la ressource.
- GKE_NAME : nom du cluster GKE.
- LOCATION : zone ou région du cluster GKE.
Options utiles :
--project
: L'PROJECT_ID--universe-domain
: le cas échéant, le domaine cloud souverain du partenaire de confiance hébergeant la ressource.--parameter
ou-p
: paramètres du runbook
Pour obtenir la liste et la description de toutes les options de l'outil gcpdiag
, consultez les instructions d'utilisation de gcpdiag
.