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 comandokubectl auth can-i
. Por exemplo, para saber se tem autorização para executar o comandokubectl get nodes
, execute o comandokubectl auth can-i get nodes
.Se tiver as autorizações necessárias, o comando devolve
yes
; caso contrário, o comando devolveno
.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:
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.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 colunaNamespace
do resultado do comandokubectl 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çãoEvents
é 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?
Leia o artigo Realize análises históricas com o Cloud Logging (a página seguinte desta série).
Veja estes conceitos aplicados no cenário de resolução de problemas de exemplo.
Para obter aconselhamento sobre a resolução de problemas específicos, reveja os guias de resolução de problemas do GKE.
Se não conseguir encontrar uma solução para o seu problema na documentação, consulte a secção Obtenha apoio técnico para receber mais ajuda, incluindo aconselhamento sobre os seguintes tópicos:
- Abrindo um registo de apoio ao cliente através do contacto com o Cloud Customer Care.
- Receber apoio técnico da comunidade fazendo perguntas no StackOverflow e usando a etiqueta
google-kubernetes-engine
para pesquisar problemas semelhantes. Também pode juntar-se ao#kubernetes-engine
canal do Slack para receber mais apoio técnico da comunidade. - Abrir erros ou pedidos de funcionalidades através do rastreador de problemas público.