Resolver problemas comuns

Nesta página, mostramos como resolver problemas comuns com o GKE no Azure.

Se precisar de mais ajuda, entre em contato com o Cloud Customer Care.

Mensagens de erro comuns

As seções a seguir explicam as causas e as soluções de algumas mensagens de erro comuns.

O servidor não tem um recurso

Erros como error: the server doesn't have a resource type "services" podem acontecer quando um cluster não tem pools de nós em execução ou o gateway do Connect não pode se conectar a um pool de nós. Para verificar o status dos pools de nós, execute o seguinte comando:

gcloud container azure node-pools list \
    --cluster-name CLUSTER_NAME \
    --location LOCATION

Substitua:

  • CLUSTER_NAME: o nome do cluster.
  • LOCATION: o local do Google Cloud que gerencia o cluster

A saída inclui o status dos pools de nós do cluster. Se você não tiver um pool de nós listado, crie um pool de nós.

Usuário proibido

O seguinte erro ocorre quando seu nome de usuário não tem acesso de administrador ao cluster:

Error from server (Forbidden): users "administrator@example.com" is forbidden:
User "system:serviceaccount:gke-connect:connect-agent-sa" cannot impersonate
resource "users" in API group "" at the cluster scope

É possível configurar mais usuários transmitindo a sinalização --admin-users ao criar um cluster.

Se você usa o gateway do Connect e não consegue se conectar ao cluster, siga estas etapas:

  1. Consiga os usuários autorizados para o cluster.

    gcloud container azure clusters describe CLUSTER_NAME \
        --format 'value(authorization.admin_users)'
    

    Substitua CLUSTER_NAME pelo nome do cluster.

    A saída inclui os nomes de usuário com acesso de administrador ao cluster. Exemplo:

    {'username': 'administrator@example.com'}
    
  2. Consiga o nome de usuário autenticado no momento com a Google Cloud CLI.

    gcloud config get-value account
    

    A saída inclui a conta autenticada com a Google Cloud CLI. Se as saídas de gcloud containers azure clusters describe e gcloud config get-value account forem diferentes, execute gcloud auth login e faça a autenticação com o nome de usuário que tem acesso administrativo ao cluster.

Problemas com comandos kubectl

As seções a seguir fornecem orientações sobre como resolver problemas com comandos kubectl que não respondem ou com falha.

Comandos kubectl param de responder

Se o cluster executar uma versão do Kubernetes anterior à 1.25 e os comandos kubectl não responderem ou expirarem, o motivo mais comum é você ainda não ter criado um pool de nós. Por padrão, o GKE no Azure gera arquivos kubeconfig que usam o gateway do Connect como um endpoint acessível pela Internet. Para que isso funcione, a implantação gke-connect-agent precisa ser executada em um pool de nós no cluster.

Para mais informações de diagnóstico, execute o seguinte comando:

kubectl cluster-info -v=9

Se não houver pools de nós em execução, as solicitações para connectgateway.googleapis.com falharão com um erro 404 cannot find active connections for cluster.

Para clusters com uma versão do Kubernetes 1.25 ou mais recente, o gke-connect-agent é executado no plano de controle e um pool de nós não é necessário. Se o comando kubectl não responder, verifique os registros do componente do plano de controle com o Cloud Logging.

Falha nos comandos kubectl exec, attach e port-forward

Os comandos kubectl exec, kubectl attach e kubectl port-forward podem apresentar falha com a mensagem error: unable to upgrade connection ao usar o gateway Connect. Essa é uma limitação ao usar o gateway do Connect como o endpoint do servidor da API Kubernetes.

Para contornar esse problema, use um kubeconfig que especifique o endpoint particular do cluster. Para instruções sobre como acessar o cluster usando o endpoint particular, consulte Configurar o acesso ao cluster para o kubectl.

Solução de problemas genérica do kubectl

Se você usar o gateway do Connect:

  • Verifique se você ativou o gateway do Connect no seu projeto do Google Cloud:

    gcloud services enable connectgateway.googleapis.com
    
  • Para clusters com uma versão do Kubernetes anterior à 1.25, verifique se você tem pelo menos um pool de nós do Linux em execução e se o gke-connect-agent está em execução. Para mais detalhes, consulte Resolver problemas de conexões de cluster.

  • Para clusters com a versão 1.25 ou posterior do Kubernetes, verifique os registros gke-connect-agent com o Cloud Logging.

A seguir