Soluciona problemas de registro en GKE


En esta página, se muestra cómo investigar y resolver problemas relacionados con el registro en GKE.

Faltan registros de clústeres en Cloud Logging

Verifica que el registro esté habilitado en el proyecto

  1. Enumera los servicios habilitados:

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

    En el siguiente resultado, se indica que el registro está habilitado para el proyecto:

    NAME                    TITLE
    logging.googleapis.com  Cloud Logging API
    

    Opcional: Revisa los registros en el visor de registros para determinar quién inhabilitó la API y cuándo la inhabilitó:

    protoPayload.methodName="google.api.serviceusage.v1.ServiceUsage.DisableService"
    protoPayload.response.services="logging.googleapis.com"
    
  2. Si el registro está inhabilitado, habilítalo:

    gcloud services enable logging.googleapis.com
    

Verifica que el registro esté habilitado en el clúster

  1. Enumera los clústeres:

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

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID de tu proyecto de Google Cloud.

    El resultado es similar a este:

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

    Si el valor de tu clúster está vacío, el registro se inhabilita. Por ejemplo, cluster-3 en esta salida tiene el registro inhabilitado.

  2. Habilita el registro del clúster si está configurado como NONE:

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

    Reemplaza lo siguiente:

Verifica que los nodos de los grupos de nodos tengan permiso de acceso a Cloud Logging

Se requiere uno de los siguientes permisos para que los nodos escriban registros en Cloud Logging:

  • https://www.googleapis.com/auth/logging.write
  • https://www.googleapis.com/auth/cloud-platform
  • https://www.googleapis.com/auth/logging.admin
  1. Verifica los permisos configurados en cada grupo de nodos en el clúster:

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

    Reemplaza lo siguiente:

    Migra tus cargas de trabajo del grupo de nodos anterior al grupo de nodos recién creado y supervisa el progreso.

  2. Crea grupos de nodos nuevos con el permiso de registro correcto:

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

    Reemplaza lo siguiente:

Verifica que la cuenta de servicio del grupo de nodos tenga un rol con los permisos de IAM correctos

La cuenta de servicio debe tener un rol que contenga el permiso logging.logEntries.create para crear registros.

  1. Busca la cuenta de servicio para cada grupo de nodos:

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

    Reemplaza lo siguiente:

    El resultado es similar a este:

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

    Si el grupo de nodos usa la cuenta de servicio predeterminada de Compute Engine, puedes describirla con el siguiente comando. Como práctica recomendada, usa una cuenta de servicio personalizada con privilegios mínimos para tus grupos de nodos. La cuenta de servicio predeterminada de Compute Engine contiene más que los permisos mínimos necesarios para ejecutar tus clústeres.

    gcloud compute project-info describe --format="table(defaultServiceAccount)"
    
  2. Verifica que los roles de IAM tengan suficientes permisos.

    Consulta los permisos que se encuentran en los roles que se otorgan a una cuenta de servicio específica:

    gcloud projects get-iam-policy PROJECT_ID \
        --flatten="bindings[]" \
        --filter="bindings.members=serviceAccount:SERVICE_ACCOUNT" \
        --format="table[box](bindings.role)"
    
  3. Otorga a la cuenta de servicio un rol que contenga el permiso logging.logEntries.create. Puedes usar un rol predefinido o crear un rol personalizado.

Verifica que no se hayan alcanzado las cuotas de la API de Write de Cloud Logging

Confirma que no alcanzaste las cuotas de escritura de API para Cloud Logging.

  1. Dirígete a la página Cuotas en la consola de Google Cloud.

    Ir a Cuotas

  2. Filtra la tabla por “API de Cloud Logging”.

  3. Confirma que no alcanzaste ninguna de las cuotas.