Investigue o estado de um cluster com o kubectl


O diagnóstico da causa principal dos problemas do Google Kubernetes Engine (GKE) requer frequentemente a inspeção detalhada do estado ativo, da configuração e dos eventos dos seus recursos do Kubernetes. Para ir além dos sintomas ao nível da superfície, precisa de ferramentas para consultar e interagir diretamente com o plano de controlo do cluster.

Use esta página para aprender os comandos essenciais para investigar o estado em direto do seu cluster.kubectl A aprendizagem destes comandos permite-lhe recolher informações detalhadas diretamente do plano de controlo do Kubernetes, o que ajuda a compreender por que motivo está a ocorrer um problema.

Estas informações são importantes para os administradores e os operadores da plataforma que precisam de realizar verificações de funcionamento detalhadas do cluster, gerir recursos e resolver problemas de infraestrutura a um nível detalhado. Também é essencial para os programadores de aplicações depurarem o comportamento das aplicações, inspecionarem os registos e os eventos dos pods e verificarem o estado exato das respetivas implementações no ambiente do Kubernetes. Para mais informações sobre as funções comuns e exemplos de tarefas que referimos no conteúdo, consulte o artigo Funções e tarefas comuns do utilizador do GKE. Google Cloud

Antes de começar

Antes de começar, execute as seguintes tarefas:

  • Instale o kubectl.
  • Configure a ferramenta de linha de comandos kubectl para comunicar com o cluster:

    gcloud container clusters get-credentials CLUSTER_NAME \
        --location=LOCATION
    

    Substitua o seguinte:

    • CLUSTER_NAME: o nome do cluster.
    • LOCATION: a localização do Compute Engine do plano de controlo do cluster. Indique uma região para clusters regionais ou uma zona para clusters zonais.
  • Reveja as suas autorizações. Para ver se tem as autorizações necessárias para executar comandos kubectl, use o comando kubectl auth can-i. Por exemplo, para saber se tem autorização para executar o comando kubectl get nodes, execute o comando kubectl auth can-i get nodes.

    Se tiver as autorizações necessárias, o comando devolve yes; caso contrário, o comando devolve no.

    Se não tiver autorização para executar um comando kubectl, pode ver uma mensagem de erro semelhante à seguinte:

    Error from server (Forbidden): pods "POD_NAME" is forbidden: User
    "USERNAME@DOMAIN.com" cannot list resource "pods" in API group "" in the
    namespace "default"
    

    Se não tiver as autorizações necessárias, peça ao administrador do cluster para lhe atribuir as funções necessárias.

Obtenha uma vista geral do que está em execução

O comando kubectl get ajuda a ver uma vista geral do que está a acontecer no cluster. Use os seguintes comandos para ver o estado de dois dos componentes de cluster mais importantes, os nós e os pods:

  1. Para verificar se os seus nós estão em bom estado, veja os detalhes sobre todos os nós e os respetivos estados:

    kubectl get nodes
    

    O resultado é semelhante ao seguinte:

    NAME                                        STATUS   ROLES    AGE     VERSION
    
    gke-cs-cluster-default-pool-8b8a777f-224a   Ready    <none>   4d23h   v1.32.3-gke.1785003
    gke-cs-cluster-default-pool-8b8a777f-egb2   Ready    <none>   4d22h   v1.32.3-gke.1785003
    gke-cs-cluster-default-pool-8b8a777f-p5bn   Ready    <none>   4d22h   v1.32.3-gke.1785003
    

    Qualquer outro estado que não seja Ready requer uma investigação adicional.

  2. Para verificar se os seus Pods estão em bom estado, veja os detalhes sobre todos os Pods e os respetivos estados:

    kubectl get pods --all-namespaces
    

    O resultado é semelhante ao seguinte:

    NAMESPACE   NAME       READY   STATUS      RESTARTS   AGE
    kube-system netd-6nbsq 3/3     Running     0          4d23h
    kube-system netd-g7tpl 3/3     Running     0          4d23h
    

    Qualquer outro estado que não seja Running requer uma investigação adicional. Seguem-se alguns estados comuns que pode ver:

    • Running: um estado de funcionamento saudável.
    • Pending: o agrupamento está à espera de ser agendado num nó.
    • CrashLoopBackOff: os contentores no pod falham repetidamente num ciclo porque a app é iniciada, termina com um erro e, em seguida, é reiniciada pelo Kubernetes.
    • ImagePullBackOff: o pod não consegue extrair a imagem do contentor.

Os comandos anteriores são apenas dois exemplos de como pode usar o comando kubectl get. Também pode usar o comando para saber mais sobre muitos tipos de recursos do Kubernetes. Para ver uma lista completa dos recursos que pode explorar, consulte o comando kubectl get na documentação do Kubernetes.

Saiba mais sobre recursos específicos

Depois de identificar um problema, tem de obter mais detalhes. Um exemplo de um problema pode ser um agrupamento que não tenha o estado Running. Para ver mais detalhes, use o comando kubectl describe.

Por exemplo, para descrever um pod específico, execute o seguinte comando:

kubectl describe pod POD_NAME -n NAMESPACE_NAME

Substitua o seguinte:

  • POD_NAME: o nome do agrupamento com problemas.
  • NAMESPACE_NAME: o espaço de nomes em que o Pod se encontra. Se não tiver a certeza do que é o espaço de nomes, reveja a coluna Namespace do resultado do comando kubectl get pods.

O resultado do comando kubectl describe inclui informações detalhadas sobre o seu recurso. Seguem-se algumas das secções mais úteis para rever quando resolve problemas de um Pod:

  • Status: o estado atual do agrupamento.
  • Conditions: o estado geral e a disponibilidade do Pod.
  • Restart Count: o número de vezes que os contentores no agrupamento foram reiniciados. Os números elevados podem ser motivo de preocupação.
  • Events: um registo de coisas importantes que aconteceram a este Pod, como a agendamento para um nó, a obtenção da respetiva imagem do contentor e se ocorreram erros. A secção Events é frequentemente onde pode encontrar as pistas diretas sobre o motivo pelo qual um Pod está a falhar.

Tal como o comando kubectl get, pode usar o comando kubectl describe para saber mais sobre vários tipos de recursos. Para ver uma lista completa dos recursos que pode explorar, consulte kubectl describe na documentação do Kubernetes.

O que se segue?