Para diagnosticar a causa raiz dos problemas do Google Kubernetes Engine (GKE), muitas vezes é necessário inspecionar o estado ativo, a configuração e os eventos dos recursos do Kubernetes em detalhes. Para ir além dos sintomas superficiais, você precisa de ferramentas para consultar e interagir diretamente com o plano de controle do cluster.
Use esta página para aprender comandos essenciais do kubectl
para investigar o estado
ativo do cluster. Ao aprender esses comandos, você pode coletar informações detalhadas diretamente do plano de controle do Kubernetes, ajudando a entender por que um problema está ocorrendo.
Essas informações são importantes para administradores e operadores da plataforma que precisam realizar verificações detalhadas da integridade do cluster, gerenciar recursos e resolver problemas de infraestrutura em um nível granular. Também é essencial para desenvolvedores de aplicativos depurarem o comportamento do aplicativo, inspecionarem registros e eventos do pod e verificarem o estado exato das implantações no ambiente do Kubernetes. Para mais informações sobre os papéis comuns e as tarefas de exemplo referenciados no conteúdo do Google Cloud , consulte Funções e tarefas de usuário comuns do GKE.
Antes de começar
Antes de começar, faça o seguinte:
- Instale kubectl.
Configure a ferramenta de linha de comando
kubectl
para se comunicar com o cluster:gcloud container clusters get-credentials CLUSTER_NAME \ --location=LOCATION
Substitua:
CLUSTER_NAME
: o nome do cluster.LOCATION
: o local do Compute Engine do plano de controle do cluster. Forneça uma região para clusters regionais ou uma zona para clusters zonais.
Revise suas permissões. Para saber se você tem as permissões necessárias para executar comandos
kubectl
, use o comandokubectl auth can-i
. Por exemplo, para ver se você tem permissão para executarkubectl get nodes
, execute o comandokubectl auth can-i get nodes
.Se você tiver as permissões necessárias, o comando vai retornar
yes
. Caso contrário, ele vai retornarno
.Se você não tiver permissão para executar um comando
kubectl
, talvez veja uma mensagem de erro semelhante a esta: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 você não tiver as permissões necessárias, peça ao administrador do cluster para atribuir os papéis necessários a você.
Ter uma visão geral do que está em execução
O comando kubectl get
ajuda a ter uma visão geral do que está acontecendo
no cluster. Use os comandos a seguir para conferir o status de dois dos componentes mais importantes do cluster, nós e pods:
Para verificar se os nós estão íntegros, confira os detalhes sobre todos os nós e os respectivos status:
kubectl get nodes
O resultado será assim:
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 status que não seja
Ready
exige mais investigação.Para verificar se os pods estão íntegros, veja detalhes sobre todos os pods e os status deles:
kubectl get pods --all-namespaces
O resultado será assim:
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 status que não seja
Running
exige mais investigação. Confira alguns status comuns que você pode encontrar:Running
: um estado de execução íntegro.Pending
: o pod está aguardando para ser programado em um nó.CrashLoopBackOff
: os contêineres no pod falham repetidamente em um loop porque o app inicia, sai com um erro e é reiniciado pelo Kubernetes.ImagePullBackOff
: o pod não pode extrair a imagem do contêiner.
Os comandos anteriores são apenas dois exemplos de como usar o comando kubectl
get
. Você também pode usar o comando para saber mais sobre vários tipos de recursos do Kubernetes. Para uma lista completa dos recursos que você pode explorar, consulte
kubectl get
na documentação do Kubernetes.
Saiba mais sobre recursos específicos
Depois de identificar um problema, você precisa saber mais detalhes. Um exemplo de problema pode ser um pod que não tem o status Running
. Para 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:
POD_NAME
: o nome do pod com problemas.NAMESPACE_NAME
: o namespace em que o pod está. Se você não tiver certeza de qual é o namespace, revise a colunaNamespace
na saída do comandokubectl get pods
.
A saída do comando kubectl describe
inclui informações detalhadas sobre
seu recurso. Confira algumas das seções mais úteis para revisar ao
solucionar problemas de um pod:
Status
: o status atual do pod.Conditions
: a integridade e a prontidão geral do pod.Restart Count
: quantas vezes os contêineres no pod foram reiniciados. Números altos podem ser motivo de preocupação.Events
: um registro de eventos importantes que aconteceram com esse pod, como a programação em um nó, o pull da imagem do contêiner e se ocorreram erros. A seçãoEvents
geralmente é onde você encontra as pistas diretas de por que um pod está falhando.
Assim como o comando kubectl get
, é possível usar o comando kubectl describe
para
saber mais sobre vários tipos de recursos. Para uma lista completa dos recursos
que você pode explorar, consulte
kubectl describe
na documentação do Kubernetes.
A seguir
Leia Fazer análises históricas com o Cloud Logging (a próxima página desta série).
Confira esses conceitos aplicados no exemplo de cenário de solução de problemas.
Para receber conselhos sobre como resolver problemas específicos, consulte os guias de solução de problemas do GKE.
Se você não encontrar uma solução para seu problema na documentação, consulte Receber suporte para mais ajuda, incluindo conselhos sobre os seguintes tópicos:
- Abrir um caso de suporte entrando em contato com o Cloud Customer Care.
- Receber suporte da comunidade fazendo perguntas no StackOverflow e usando a tag
google-kubernetes-engine
para pesquisar problemas semelhantes. Você também pode participar do canal do Slack#kubernetes-engine
para receber mais suporte da comunidade. - Abrir bugs ou solicitações de recursos usando o Issue Tracker público.