Resolução de problemas de início de sessão no GKE


Esta página ajuda a resolver problemas com o pipeline de registo do Google Kubernetes Engine (GKE), como registos que não aparecem no Cloud Logging. Para mais informações sobre como usar os registos para resolver problemas das suas cargas de trabalho e clusters, consulte o artigo Realize análises do histórico com o Cloud Logging.

Faltam registos de clusters no Cloud Logging

Verifique se o registo está ativado no projeto

  1. Liste os serviços ativados:

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

    O resultado seguinte indica que o registo está ativado para o projeto:

    NAME                    TITLE
    logging.googleapis.com  Cloud Logging API
    

    Opcional: verifique os registos no visualizador de registos para determinar quem desativou a API e quando a desativou:

    protoPayload.methodName="google.api.serviceusage.v1.ServiceUsage.DisableService"
    protoPayload.response.services="logging.googleapis.com"
    
  2. Se o registo estiver desativado, ative-o:

    gcloud services enable logging.googleapis.com
    

Verifique se o registo está ativado no cluster

  1. Indique os clusters:

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

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu Google Cloud projeto.

    O resultado é semelhante ao seguinte:

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

    Se o valor do cluster estiver vazio, o registo está desativado. Por exemplo, o registo está desativado em cluster-3 neste resultado.

  2. Ativar o registo de clusters se estiver definido como NONE:

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

    Substitua o seguinte:

Depois de verificar que ativou o registo no seu projeto e no cluster, considere usar as investigações do Gemini Cloud Assist para obter estatísticas adicionais sobre os seus registos e resolver problemas. Para mais informações sobre as diferentes formas de iniciar uma investigação através do Logs Explorer, consulte o artigo Resolva problemas com as investigações do Gemini Cloud Assist na documentação do Gemini.

Verifique se os nós nos conjuntos de nós têm o âmbito de acesso do Cloud Logging

Um dos seguintes âmbitos é necessário para que os nós escrevam registos no Cloud Logging:

  • https://www.googleapis.com/auth/logging.write
  • https://www.googleapis.com/auth/cloud-platform
  • https://www.googleapis.com/auth/logging.admin
  1. Verifique os âmbitos configurados em cada conjunto de nós no cluster:

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

    Substitua o seguinte:

    Migre as suas cargas de trabalho da pool de nós antiga para a pool de nós criada recentemente e monitorize o progresso.

  2. Crie novos node pools com o âmbito de registo correto:

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

    Substitua o seguinte:

Identifique clusters com contas de serviço de nós que não têm autorizações críticas

Para identificar clusters com contas de serviço de nós em que faltam autorizações críticas, use as recomendações do GKE do NODE_SA_MISSING_PERMISSIONS subtipo de recomendador:

  • Use a Google Cloud consola. Aceda à página Clusters do Kubernetes. Na coluna Notificações de clusters específicos, verifique se existe a recomendação Conceda autorizações críticas.
  • Use a CLI gcloud ou a API Recommender especificando o subtipo do recomendador NODE_SA_MISSING_PERMISSIONS.

    Para consultar esta recomendação, execute o seguinte comando:

    gcloud recommender recommendations list \
        --recommender=google.container.DiagnosisRecommender \
        --location LOCATION \
        --project PROJECT_ID \
        --format yaml \
        --filter="recommenderSubtype:NODE_SA_MISSING_PERMISSIONS"
    

Para implementar esta recomendação, conceda a função roles/container.defaultNodeServiceAccount à conta de serviço do nó.

Pode executar um script que procure pools de nós nos clusters padrão e do Autopilot do seu projeto para quaisquer contas de serviço de nós que não tenham as autorizações necessárias para o GKE. Este script usa a CLI gcloud e o utilitário jq. Para ver o script, expanda a secção seguinte:

Veja o guião

#!/bin/bash

# Set your project ID
project_id=PROJECT_ID
project_number=$(gcloud projects describe "$project_id" --format="value(projectNumber)")
declare -a all_service_accounts
declare -a sa_missing_permissions

# Function to check if a service account has a specific permission
# $1: project_id
# $2: service_account
# $3: permission
service_account_has_permission() {
  local project_id="$1"
  local service_account="$2"
  local permission="$3"

  local roles=$(gcloud projects get-iam-policy "$project_id" \
          --flatten="bindings[].members" \
          --format="table[no-heading](bindings.role)" \
          --filter="bindings.members:\"$service_account\"")

  for role in $roles; do
    if role_has_permission "$role" "$permission"; then
      echo "Yes" # Has permission
      return
    fi
  done

  echo "No" # Does not have permission
}

# Function to check if a role has the specific permission
# $1: role
# $2: permission
role_has_permission() {
  local role="$1"
  local permission="$2"
  gcloud iam roles describe "$role" --format="json" | \
  jq -r ".includedPermissions" | \
  grep -q "$permission"
}

# Function to add $1 into the service account array all_service_accounts
# $1: service account
add_service_account() {
  local service_account="$1"
  all_service_accounts+=( ${service_account} )
}

# Function to add service accounts into the global array all_service_accounts for a Standard GKE cluster
# $1: project_id
# $2: location
# $3: cluster_name
add_service_accounts_for_standard() {
  local project_id="$1"
  local cluster_location="$2"
  local cluster_name="$3"

  while read nodepool; do
    nodepool_name=$(echo "$nodepool" | awk '{print $1}')
    if [[ "$nodepool_name" == "" ]]; then
      # skip the empty line which is from running `gcloud container node-pools list` in GCP console
      continue
    fi
    while read nodepool_details; do
      service_account=$(echo "$nodepool_details" | awk '{print $1}')

      if [[ "$service_account" == "default" ]]; then
        service_account="${project_number}-compute@developer.gserviceaccount.com"
      fi
      if [[ -n "$service_account" ]]; then
        printf "%-60s| %-40s| %-40s| %-10s| %-20s\n" $service_account $project_id  $cluster_name $cluster_location $nodepool_name
        add_service_account "${service_account}"
      else
        echo "cannot find service account for node pool $project_id\t$cluster_name\t$cluster_location\t$nodepool_details"
      fi
    done <<< "$(gcloud container node-pools describe "$nodepool_name" --cluster "$cluster_name" --zone "$cluster_location" --project "$project_id" --format="table[no-heading](config.serviceAccount)")"
  done <<< "$(gcloud container node-pools list --cluster "$cluster_name" --zone "$cluster_location" --project "$project_id" --format="table[no-heading](name)")"

}

# Function to add service accounts into the global array all_service_accounts for an Autopilot GKE cluster
# Autopilot cluster only has one node service account.
# $1: project_id
# $2: location
# $3: cluster_name
add_service_account_for_autopilot(){
  local project_id="$1"
  local cluster_location="$2"
  local cluster_name="$3"

  while read service_account; do
      if [[ "$service_account" == "default" ]]; then
        service_account="${project_number}-compute@developer.gserviceaccount.com"
      fi
      if [[ -n "$service_account" ]]; then
        printf "%-60s| %-40s| %-40s| %-10s| %-20s\n" $service_account $project_id  $cluster_name $cluster_location $nodepool_name
        add_service_account "${service_account}"
      else
        echo "cannot find service account" for cluster  "$project_id\t$cluster_name\t$cluster_location\t"
      fi
  done <<< "$(gcloud container clusters describe "$cluster_name" --location "$cluster_location" --project "$project_id" --format="table[no-heading](autoscaling.autoprovisioningNodePoolDefaults.serviceAccount)")"
}


# Function to check whether the cluster is an Autopilot cluster or not
# $1: project_id
# $2: location
# $3: cluster_name
is_autopilot_cluster() {
  local project_id="$1"
  local cluster_location="$2"
  local cluster_name="$3"
  autopilot=$(gcloud container clusters describe "$cluster_name" --location "$cluster_location" --format="table[no-heading](autopilot.enabled)")
  echo "$autopilot"
}


echo "--- 1. List all service accounts in all GKE node pools"
printf "%-60s| %-40s| %-40s| %-10s| %-20s\n" "service_account" "project_id" "cluster_name" "cluster_location" "nodepool_name"
while read cluster; do
  cluster_name=$(echo "$cluster" | awk '{print $1}')
  cluster_location=$(echo "$cluster" | awk '{print $2}')
  # how to find a cluster is a Standard cluster or an Autopilot cluster
  autopilot=$(is_autopilot_cluster "$project_id" "$cluster_location" "$cluster_name")
  if [[ "$autopilot" == "True" ]]; then
    add_service_account_for_autopilot "$project_id" "$cluster_location"  "$cluster_name"
  else
    add_service_accounts_for_standard "$project_id" "$cluster_location"  "$cluster_name"
  fi
done <<< "$(gcloud container clusters list --project "$project_id" --format="value(name,location)")"

echo "--- 2. Check if service accounts have permissions"
unique_service_accounts=($(echo "${all_service_accounts[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' '))

echo "Service accounts: ${unique_service_accounts[@]}"
printf "%-60s| %-40s| %-40s| %-20s\n" "service_account" "has_logging_permission" "has_monitoring_permission" "has_performance_hpa_metric_write_permission"
for sa in "${unique_service_accounts[@]}"; do
  logging_permission=$(service_account_has_permission "$project_id" "$sa" "logging.logEntries.create")
  time_series_create_permission=$(service_account_has_permission "$project_id" "$sa" "monitoring.timeSeries.create")
  metric_descriptors_create_permission=$(service_account_has_permission "$project_id" "$sa" "monitoring.metricDescriptors.create")
  if [[ "$time_series_create_permission" == "No" || "$metric_descriptors_create_permission" == "No" ]]; then
    monitoring_permission="No"
  else
    monitoring_permission="Yes"
  fi
  performance_hpa_metric_write_permission=$(service_account_has_permission "$project_id" "$sa" "autoscaling.sites.writeMetrics")
  printf "%-60s| %-40s| %-40s| %-20s\n" $sa $logging_permission $monitoring_permission $performance_hpa_metric_write_permission

  if [[ "$logging_permission" == "No" || "$monitoring_permission" == "No" || "$performance_hpa_metric_write_permission" == "No" ]]; then
    sa_missing_permissions+=( ${sa} )
  fi
done

echo "--- 3. List all service accounts that don't have the above permissions"
if [[ "${#sa_missing_permissions[@]}" -gt 0 ]]; then
  printf "Grant roles/container.defaultNodeServiceAccount to the following service accounts: %s\n" "${sa_missing_permissions[@]}"
else
  echo "All service accounts have the above permissions"
fi

Identifique contas de serviço de nós que não têm autorizações críticas num cluster

O GKE usa contas de serviço da IAM anexadas aos seus nós para executar tarefas do sistema, como registo e monitorização. No mínimo, estas contas de serviço de nós têm de ter a função Conta de serviço de nós predefinida do Kubernetes Engine (roles/container.defaultNodeServiceAccount) no seu projeto. Por predefinição, o GKE usa a conta de serviço predefinida do Compute Engine, que é criada automaticamente no seu projeto, como a conta de serviço do nó.

Se a sua organização aplicar a restrição da política da organização iam.automaticIamGrantsForDefaultServiceAccounts, a conta de serviço do Compute Engine predefinida no seu projeto pode não receber automaticamente as autorizações necessárias para o GKE.

  • Para verificar se faltam autorizações de registo, procure erros 401 no registo do cluster:

    [[ $(kubectl logs -l k8s-app=fluentbit-gke -n kube-system -c fluentbit-gke | grep -cw "Received 401") -gt 0 ]] && echo "true" || echo "false"
    

    Se o resultado for true, significa que a carga de trabalho do sistema está a ter 401 erros, o que indica uma falta de autorizações. Se o resultado for false, ignore os restantes passos e experimente um procedimento de resolução de problemas diferente.Para identificar todas as autorizações críticas em falta, verifique o script.

  1. Encontre o nome da conta de serviço que os seus nós usam:

    Consola

    1. Aceda à página Clusters do Kubernetes:

      Aceda aos clusters do Kubernetes

    2. Na lista de clusters, clique no nome do cluster que quer inspecionar.
    3. Consoante o modo de funcionamento do cluster, faça uma das seguintes ações:
      • Para clusters do modo de piloto automático, na secção Segurança, encontre o campo Conta de serviço.
      • Para clusters do modo padrão, faça o seguinte:
        1. Clique no separador Nós.
        2. Na tabela Conjuntos de nós, clique no nome de um conjunto de nós. É apresentada a página Detalhes do conjunto de nós.
        3. Na secção Segurança, encontre o campo Conta de serviço.

    Se o valor no campo Conta de serviço for default, os seus nós usam a conta de serviço predefinida do Compute Engine. Se o valor neste campo não for default, os seus nós usam uma conta de serviço personalizada. Para conceder a função necessária a uma conta de serviço personalizada, consulte o artigo Use contas de serviço da IAM com o menor número de privilégios.

    gcloud

    Para clusters no modo Autopilot, execute o seguinte comando:

    gcloud container clusters describe CLUSTER_NAME \
        --location=LOCATION \
        --flatten=autoscaling.autoprovisioningNodePoolDefaults.serviceAccount

    Para clusters no modo padrão, execute o seguinte comando:

    gcloud container clusters describe CLUSTER_NAME \
        --location=LOCATION \
        --format="table(nodePools.name,nodePools.config.serviceAccount)"

    Se o resultado for default, os seus nós usam a conta de serviço predefinida do Compute Engine. Se o resultado não for default, os seus nós usam uma conta de serviço personalizada. Para conceder a função necessária a uma conta de serviço personalizada, consulte o artigo Use contas de serviço da IAM com o menor número de privilégios.

  2. Para conceder a função roles/container.defaultNodeServiceAccount à conta de serviço predefinida do Compute Engine, conclua os passos seguintes:

    consola

    1. Aceda à página Boas-vindas:

      Aceder a Boas-vindas

    2. No campo Número do projeto, clique em Copiar para a área de transferência.
    3. Aceda à página IAM:

      Aceda ao IAM

    4. Clique em Conceder acesso.
    5. No campo Novos responsáveis, especifique o seguinte valor:
      PROJECT_NUMBER-compute@developer.gserviceaccount.com
      Substitua PROJECT_NUMBER pelo número do projeto que copiou.
    6. No menu Selecionar uma função, selecione a função Conta de serviço do nó predefinido do Kubernetes Engine.
    7. Clique em Guardar.

    gcloud

    1. Encontre o seu Google Cloud número do projeto:
      gcloud projects describe PROJECT_ID \
          --format="value(projectNumber)"

      Substitua PROJECT_ID pelo ID do seu projeto.

      O resultado é semelhante ao seguinte:

      12345678901
      
    2. Conceda a função roles/container.defaultNodeServiceAccount à conta de serviço predefinida do Compute Engine:
      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
          --role="roles/container.defaultNodeServiceAccount"

      Substitua PROJECT_NUMBER pelo número do projeto do passo anterior.

  • Verifique se as contas de serviço do nó têm as autorizações necessárias. Verifique o script para validar.

Um script para identificar autorizações em falta para a conta de serviço do nó do GKE

Pode executar um script que procure pools de nós nos clusters padrão e do Autopilot do seu projeto para quaisquer contas de serviço de nós que não tenham as autorizações necessárias para o GKE. Este script usa a CLI gcloud e o utilitário jq. Para ver o script, expanda a secção seguinte:

Veja o guião

#!/bin/bash

# Set your project ID
project_id=PROJECT_ID
project_number=$(gcloud projects describe "$project_id" --format="value(projectNumber)")
declare -a all_service_accounts
declare -a sa_missing_permissions

# Function to check if a service account has a specific permission
# $1: project_id
# $2: service_account
# $3: permission
service_account_has_permission() {
  local project_id="$1"
  local service_account="$2"
  local permission="$3"

  local roles=$(gcloud projects get-iam-policy "$project_id" \
          --flatten="bindings[].members" \
          --format="table[no-heading](bindings.role)" \
          --filter="bindings.members:\"$service_account\"")

  for role in $roles; do
    if role_has_permission "$role" "$permission"; then
      echo "Yes" # Has permission
      return
    fi
  done

  echo "No" # Does not have permission
}

# Function to check if a role has the specific permission
# $1: role
# $2: permission
role_has_permission() {
  local role="$1"
  local permission="$2"
  gcloud iam roles describe "$role" --format="json" | \
  jq -r ".includedPermissions" | \
  grep -q "$permission"
}

# Function to add $1 into the service account array all_service_accounts
# $1: service account
add_service_account() {
  local service_account="$1"
  all_service_accounts+=( ${service_account} )
}

# Function to add service accounts into the global array all_service_accounts for a Standard GKE cluster
# $1: project_id
# $2: location
# $3: cluster_name
add_service_accounts_for_standard() {
  local project_id="$1"
  local cluster_location="$2"
  local cluster_name="$3"

  while read nodepool; do
    nodepool_name=$(echo "$nodepool" | awk '{print $1}')
    if [[ "$nodepool_name" == "" ]]; then
      # skip the empty line which is from running `gcloud container node-pools list` in GCP console
      continue
    fi
    while read nodepool_details; do
      service_account=$(echo "$nodepool_details" | awk '{print $1}')

      if [[ "$service_account" == "default" ]]; then
        service_account="${project_number}-compute@developer.gserviceaccount.com"
      fi
      if [[ -n "$service_account" ]]; then
        printf "%-60s| %-40s| %-40s| %-10s| %-20s\n" $service_account $project_id  $cluster_name $cluster_location $nodepool_name
        add_service_account "${service_account}"
      else
        echo "cannot find service account for node pool $project_id\t$cluster_name\t$cluster_location\t$nodepool_details"
      fi
    done <<< "$(gcloud container node-pools describe "$nodepool_name" --cluster "$cluster_name" --zone "$cluster_location" --project "$project_id" --format="table[no-heading](config.serviceAccount)")"
  done <<< "$(gcloud container node-pools list --cluster "$cluster_name" --zone "$cluster_location" --project "$project_id" --format="table[no-heading](name)")"

}

# Function to add service accounts into the global array all_service_accounts for an Autopilot GKE cluster
# Autopilot cluster only has one node service account.
# $1: project_id
# $2: location
# $3: cluster_name
add_service_account_for_autopilot(){
  local project_id="$1"
  local cluster_location="$2"
  local cluster_name="$3"

  while read service_account; do
      if [[ "$service_account" == "default" ]]; then
        service_account="${project_number}-compute@developer.gserviceaccount.com"
      fi
      if [[ -n "$service_account" ]]; then
        printf "%-60s| %-40s| %-40s| %-10s| %-20s\n" $service_account $project_id  $cluster_name $cluster_location $nodepool_name
        add_service_account "${service_account}"
      else
        echo "cannot find service account" for cluster  "$project_id\t$cluster_name\t$cluster_location\t"
      fi
  done <<< "$(gcloud container clusters describe "$cluster_name" --location "$cluster_location" --project "$project_id" --format="table[no-heading](autoscaling.autoprovisioningNodePoolDefaults.serviceAccount)")"
}


# Function to check whether the cluster is an Autopilot cluster or not
# $1: project_id
# $2: location
# $3: cluster_name
is_autopilot_cluster() {
  local project_id="$1"
  local cluster_location="$2"
  local cluster_name="$3"
  autopilot=$(gcloud container clusters describe "$cluster_name" --location "$cluster_location" --format="table[no-heading](autopilot.enabled)")
  echo "$autopilot"
}


echo "--- 1. List all service accounts in all GKE node pools"
printf "%-60s| %-40s| %-40s| %-10s| %-20s\n" "service_account" "project_id" "cluster_name" "cluster_location" "nodepool_name"
while read cluster; do
  cluster_name=$(echo "$cluster" | awk '{print $1}')
  cluster_location=$(echo "$cluster" | awk '{print $2}')
  # how to find a cluster is a Standard cluster or an Autopilot cluster
  autopilot=$(is_autopilot_cluster "$project_id" "$cluster_location" "$cluster_name")
  if [[ "$autopilot" == "True" ]]; then
    add_service_account_for_autopilot "$project_id" "$cluster_location"  "$cluster_name"
  else
    add_service_accounts_for_standard "$project_id" "$cluster_location"  "$cluster_name"
  fi
done <<< "$(gcloud container clusters list --project "$project_id" --format="value(name,location)")"

echo "--- 2. Check if service accounts have permissions"
unique_service_accounts=($(echo "${all_service_accounts[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' '))

echo "Service accounts: ${unique_service_accounts[@]}"
printf "%-60s| %-40s| %-40s| %-20s\n" "service_account" "has_logging_permission" "has_monitoring_permission" "has_performance_hpa_metric_write_permission"
for sa in "${unique_service_accounts[@]}"; do
  logging_permission=$(service_account_has_permission "$project_id" "$sa" "logging.logEntries.create")
  time_series_create_permission=$(service_account_has_permission "$project_id" "$sa" "monitoring.timeSeries.create")
  metric_descriptors_create_permission=$(service_account_has_permission "$project_id" "$sa" "monitoring.metricDescriptors.create")
  if [[ "$time_series_create_permission" == "No" || "$metric_descriptors_create_permission" == "No" ]]; then
    monitoring_permission="No"
  else
    monitoring_permission="Yes"
  fi
  performance_hpa_metric_write_permission=$(service_account_has_permission "$project_id" "$sa" "autoscaling.sites.writeMetrics")
  printf "%-60s| %-40s| %-40s| %-20s\n" $sa $logging_permission $monitoring_permission $performance_hpa_metric_write_permission

  if [[ "$logging_permission" == "No" || "$monitoring_permission" == "No" || "$performance_hpa_metric_write_permission" == "No" ]]; then
    sa_missing_permissions+=( ${sa} )
  fi
done

echo "--- 3. List all service accounts that don't have the above permissions"
if [[ "${#sa_missing_permissions[@]}" -gt 0 ]]; then
  printf "Grant roles/container.defaultNodeServiceAccount to the following service accounts: %s\n" "${sa_missing_permissions[@]}"
else
  echo "All service accounts have the above permissions"
fi

Verifique se não atingiu as quotas da API de gravação do Cloud Logging

Confirme que não atingiu as quotas de gravação da API para o Cloud Logging.

  1. Aceda à página Quotas na Google Cloud consola.

    Aceder a Quotas

  2. Filtre a tabela por "API Cloud Logging".

  3. Confirme que não atingiu nenhuma das quotas.

Depurar problemas de registo do GKE com o gcpdiag

Se estiverem em falta ou receber registos incompletos do seu cluster do GKE, use a ferramenta gcpdiag para a resolução de problemas.

gcpdiag é uma ferramenta de código aberto. Não é um produto Google Cloud suportado oficialmente. Pode usar a ferramenta gcpdiag para ajudar a identificar e corrigir Google Cloud problemas do projeto. Para mais informações, consulte o projeto gcpdiag no GitHub.

Quando os registos do cluster do GKE estão em falta ou incompletos, investigue as potenciais causas concentrando-se nas seguintes definições de configuração principais que são essenciais para as funções de registo adequadas:

  • Registo ao nível do projeto: garante que o projeto que aloja o cluster do GKE tem a API Cloud Logging ativada. Google Cloud
  • Registo ao nível do cluster: verifica se o registo está explicitamente ativado na configuração do cluster do GKE.
  • Autorizações do conjunto de nós: confirma que os nós nos conjuntos de nós do cluster têm o âmbito "Gravação do Cloud Logging" ativado, o que lhes permite enviar dados de registo.
  • Autorizações da conta de serviço: valida se a conta de serviço usada pelos conjuntos de nós tem as autorizações do IAM necessárias para interagir com o Cloud Logging. Especificamente, a função "roles/logging.logWriter" é normalmente necessária.
  • Quotas de gravação da API Cloud Logging: verifica se as quotas de gravação da API Cloud Logging não foram excedidas no período especificado.

Docker

Pode executar o gcpdiag usando um wrapper que inicia o gcpdiag num contentor do Docker. O Docker ou o Podman têm de estar instalados.

  1. Copie e execute o seguinte comando na sua estação de trabalho local.
    curl https://gcpdiag.dev/gcpdiag.sh >gcpdiag && chmod +x gcpdiag
  2. Execute o comando gcpdiag.
    ./gcpdiag runbook gke/logs \
        --parameter project_id=PROJECT_ID \
        --parameter name=GKE_NAME \
        --parameter location=LOCATION

Veja os parâmetros disponíveis para este manual de procedimentos.

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto que contém o recurso.
  • GKE_NAME: o nome do cluster do GKE.
  • LOCATION: A zona ou a região do cluster do GKE.

Sinalizações úteis:

Para ver uma lista e uma descrição de todas as flags da ferramenta gcpdiag, consulte as gcpdiag instruções de utilização.

O que se segue?