DEV Community

rafaelbonilha
rafaelbonilha

Posted on

Comandos Kubectl para Resolução de Problemas

Vamos falar neste artigo de comandos que podem te ajudar a solucionar problemas no Kubernetes. Estamos considerando um cenário de falha em deploys de uma aplicação. Um cenário comum no dia a dia de um profissional DevOps/SRE/Engenheiro de Plataformas.
Antes é necessário conhecer o que compõe um deployment no Kubernetes, para facilitar o entendimento do que será abordado logo mais.

Componentes Do Deployment

Pod.: Menor unidade gerenciada no Kubernetes, onde carrega os containeres com a aplicação.
Deployments.: Controlador responsável por gerenciar o pod ou pods da aplicação.
Services.: É a camada de abstração para definir políticas de exposição de um conjunto lógico de Pods.
ConfigMaps e Secrets.: São os locais onde ficam os dados de configuração e segurança da aplicação. Vamos agora aos problemas relacionados a Deploys no Kubernetes.

Pods Não Iniciam

Por alguma razão, o pod não consegue ficar disponível, para entender o que está acontecendo, o ideal é identificar
o que está acontecendo com ele.:

  • Status do Pod.: Valide o status do Pod usando o comando kubectl get pods, atenção aos que estiverem com o status CrashLoopBackOff ou Pending.
  • Veja os logs do seu Pod.: Sim, os Pods registram as ações que são executadas neles, para isso use o comando kubectl describe pod nomedopod para identificar possíveis mensagens de erro ou eventos que podem ajudar na identificação do problema.

Erro de Pull Image

Tem casos que simplesmente não é possível puxar a imagem do container de forma correta, para este cenário vale a pena verificar os possíveis casos abaixo.:

Nome da Imagem.: Valide se o nome da imagem está correto no seu arquivo dockerfile ou no deployment.
Registro da Imagem.: Importante garantir que a imagem esteja no local correto e que seus nós estão com acesso a ela. Teste as rotas entre seus nós e o registro da imagem para verificar possíveis problemas de bloqueio por regra de firewall também deve ser considerado.

Erros de Configuração

Este tópico normalmente costuma nos trazer algumas dores de cabeça para descobrir que faltou alguma config ou deixamos de passar o valor de uma variável. Para ajudar a identificar as causas de problemas, comece olhando com atenção aos itens abaixo.:

ConfigMaps e Secrets.: Analise se ambos estão corretamente configurados. Para isso, o Kubernetes possui deixamos comandos que são úteis para estes casos.
Verificando Configmaps.: Execute o kubectl describe configmap nomedoconfigmap.
Verificando Secres.: Use o comando kubectl desccribe secret nomedasecret.
Variáveis de Ambiente (ENVs).: Valide se as variáveis de ambiente estão com os valores corretos no manifesto do deployment.

Comandos Úteis

A seguir uma lista de comandos que ajudam a diagnosticar e identificar problemas.:

kubectl get namespaces.: valida os namespaces do cluster.

kubectl get deployment -n namespace.: verifique o status dos deployments de um namespace especifíco.

kubectl get pods -n namespace.: mostra todos os pods do namespace e seus status.

kubectl logs.: esse comando permite acessar logs do seus recursos no kubernetes, por exemplo.:
kubectl logs nomedopod
kubectl logs -f -l app=aplicacao -n namespace-prd --all-containers=true -> para verificar os logs de uma aplicação específica

kubectl get events.: para ver os eventos do cluster.

kubectl describe.: mostramos bastante esse comando no nosso artigo, ele detalha as informações de um recurso,
permitindo verificar uma possível configuração incorreta ou problemas.

kubectl exec.: este comando permite acessar um pod em execução para executar comandos dentro dele para diagnóstico.
ou solução de problemas. Por exemplo.: kubectl exec -it nomedopod /bin/bash (para usar comandos shells no pod).

kubectl get nodes.: retorna as informações sobre os nós do cluster, você pode usar ele com o argumento --wide ou -w para retornar informações adicionais.

Referências

https://kubernetes.io/docs/tasks/debug/debug-cluster/kubectl-node-debug/
https://kubernetes.io/docs/tasks/debug/debug-application/determine-reason-pod-failure/
https://kubernetes.io/docs/tasks/debug/debug-application/debug-pods/
https://medium.com/totvsdevelopers/comandos-uteis-e-mais-usados-no-kubernetes-cc764f1a9450
Ebook Resiliência No Kubernetes na Veia - Jeferson Fernando - https://linuxtips.io/ebooks/

Top comments (0)