Resolva problemas comuns

Esta página mostra-lhe como resolver problemas comuns com o GKE no Azure.

Se precisar de assistência adicional, contacte o apoio ao cliente do Google Cloud.

Mensagens de erro comuns

As secções seguintes explicam as causas e as resoluções de algumas mensagens de erro comuns.

O servidor não tem um recurso

Podem ocorrer erros, como error: the server doesn't have a resource type "services", quando um cluster não tem pools de nós em execução ou o gateway Connect não consegue estabelecer ligação a um pool de nós. Para verificar o estado dos seus pools de nós, execute o seguinte comando:

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

Substitua o seguinte:

  • CLUSTER_NAME: o nome do cluster
  • LOCATION: a localização que gere o seu cluster Google Cloud

O resultado inclui o estado dos conjuntos de nós do cluster. Se não tiver um node pool listado, crie um node pool.

Utilizador proibido

O seguinte erro ocorre quando o seu nome de utilizador 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

Pode configurar utilizadores adicionais transmitindo a flag --admin-users quando cria um cluster.

Se usar o gateway Connect e não conseguir estabelecer ligação ao cluster, experimente os seguintes passos:

  1. Obtenha os utilizadores autorizados para o seu cluster.

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

    Substitua CLUSTER_NAME pelo nome do cluster.

    O resultado inclui os nomes de utilizador com acesso de administrador ao cluster. Por exemplo:

    {'username': 'administrator@example.com'}
    
  2. Obtenha o nome de utilizador atualmente autenticado com a CLI do Google Cloud.

    gcloud config get-value account
    

    O resultado inclui a conta autenticada com a CLI Google Cloud. Se o resultado de gcloud containers azure clusters describe e gcloud config get-value account não corresponder, execute gcloud auth login e autentique-se como o nome de utilizador com acesso administrativo ao cluster.

Problemas com comandos kubectl

As secções seguintes fornecem orientações sobre como resolver problemas com comandos kubectl que não respondem ou falham.

Os comandos kubectl deixam de responder

Se o cluster executar uma versão do Kubernetes anterior à 1.25 e os kubectl comandos não responderem ou excederem o tempo limite, o motivo mais comum é que ainda não criou um conjunto de nós. Por predefinição, o GKE no Azure gera ficheiros kubeconfig que usam o gateway do Connect como um ponto final acessível através da Internet. Para que isto funcione, a implementação gke-connect-agent tem de estar a ser executada num conjunto de nós no cluster.

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

kubectl cluster-info -v=9

Se não existirem pools de nós em execução, vê pedidos para connectgateway.googleapis.com falharem com um erro 404 cannot find active connections for cluster.

Para clusters com uma versão do Kubernetes 1.25 ou posterior, o gke-connect-agent é executado no plano de controlo e não é necessário um conjunto de nós. Se o comando kubectl não responder, verifique os registos dos componentes do plano de controlo com o Cloud Logging.

Os comandos kubectl exec, attach e port-forward falham

Os comandos kubectl exec, kubectl attach e kubectl port-forward podem falhar com a mensagem error: unable to upgrade connection quando usar o gateway Connect. Esta é uma limitação quando usa o gateway Connect como o ponto final do servidor da API Kubernetes.

Para contornar esta situação, use um kubeconfig que especifique o ponto final privado do cluster. Para obter instruções sobre como aceder ao cluster através do respetivo ponto final privado, consulte o artigo Configure o acesso ao cluster para o kubectl.

Resolução de problemas genérica do kubectl

Se usar o gateway do Connect:

  • Certifique-se de que ativou o gateway Connect no seu Google Cloud projeto:

    gcloud services enable connectgateway.googleapis.com
    
  • Para clusters com uma versão do Kubernetes anterior à 1.25, certifique-se de que tem, pelo menos, um pool de nós do Linux em execução e que o gke-connect-agent está em execução. Para obter detalhes, consulte o artigo Resolva problemas de ligações de clusters.

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

O que se segue?