Résoudre les problèmes de journalisation dans GKE


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

  1. 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"
    
  2. 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

  1. 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.

  2. 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 :

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
  1. 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 :

    Migrez vos charges de travail de l'ancien pool de nœuds vers le nouveau pool de nœuds et surveillez la progression.

  2. 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 :

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.

  1. 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 :

    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)"
    
  2. 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)"
    
  3. 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.

  1. Accédez à la page Quotas de la console Google Cloud.

    Accéder à la section "Quotas"

  2. Filtrez le tableau avec l'expression "Cloud Logging API".

  3. Vérifiez que vous n'avez atteint aucun quota.

Étapes suivantes

Si vous avez besoin d'une aide supplémentaire, contactez Cloud Customer Care.