Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kubernetes Troubleshooting

Kubernetes Troubleshooting

Um pequeno guia de sobrevivência para administradores de clusters Kubernetes.

Natália Granato

February 09, 2025
Tweet

More Decks by Natália Granato

Other Decks in Programming

Transcript

  1. nataliagranato.xyz Natália Granato Platform Engineer at Magalu Cloud, CNCF Ambassador,

    Kubernetes, CNCF Cloud Native Glossary Contributor e Cloud Native Juiz de Fora Organizer kubectl apply -f .
  2. • Devido à sua natureza distribuída e à variedade de

    componentes envolvidos no Kubernetes, a solução de problemas pode ser complexa. • Para Entender o problema, precisamos reunir o máximo de informações possível sobre o problema. Isso inclui mensagens de erro, logs e o comportamento específico observado. Entender os sintomas e determinar se o problema está isolado em um aplicativo específico, nó ou está afetando todo o cluster ajuda a reduzir as possíveis causas.
  3. Componentes críticos do Kubernetes • API Server: É o "cérebro"

    do Kubernetes. Ele expõe a API que permite interações com o cluster (via kubectl, por exemplo). • Scheduler: Decide onde os Pods serão executados com base em recursos disponíveis e requisitos (CPU, memória, etc.). • Controller Manager: Mantém o estado desejado do cluster (ex.: número de réplicas de um Deployment). • Etcd: Banco de dados distribuído que armazena todo o estado do cluster. • Kubelet: agente que roda em todos os worker, responsável por se comunicar com o control plane e garantir que os containers estão rodando conforme o instruído pelo próprio control plane. • Kube-proxy: Atua como um proxy de rede para tráfego interno e externo. • Container Runtime: Interage diretamente com o sistema operacional para criar e gerenciar containers (ex.: Docker, containerd). © 2022 Cloud Native Computing Foundation 5
  4. Siga uma linha de raciocínio nataliagranato.xyz 5 Depure com ponentes

    do Kubernetes Certifique-se de que os serviços estão configurados corretam ente e que seus endpoints correspondentes estão disponíveis. 4 Investigue problem as de rede Faça testes de com unicação entre pods, verifique sua CN I, portas corretas expostas nos services, serviço DN S funcionando? 3 Exam ine a saúde do nó Um nó que não está "Ready" pode indicar problem as de rede, restrições de recursos ou outros problem as subjacentes. Verifique o status do pod kubectl get pods e kubectl describe pod <nom e-do-pod> 2 1 Entenda o problem a Obtenha a m aior quantidade de inform ação sobre o problem a para entendê-lo.
  5. Dois problemas na preparação da palestra • O metrics-server apresentou

    dois erros: Readiness probe failed: HTTP probe failed with statuscode: 500 e tls: failed to verify certificate: x509: cannot validate certificate for 172.18.0.X because it doesn't contain any IP SANs.
  6. kubectl logs -f foi meu aliado • Verifiquei os logs

    do container e obtive: E0203 21:19:19.051931 1 scraper.go:149] "Failed to scrape node" err="Get \"https://172.18.0.5:10250/metrics/resource\": tls: failed to verify certificate: x509: cannot validate certificate for 172.18.0.5 because it doesn't contain any IP SANs" node="kind-control-plane" • Ou seja, os logs me mostraram que havia um problema com a validação dos certificados TLS utilizados pelo kubelet. • Adicionei a flag --kubelet-insecure-tls, as probes funcionaram corretamente e o pod subiu. https://github.com/kubernetes-sigs/metrics-server/issues/1025
  7. Lidando com a complexidade Isolamento do problema • Sabendo da

    natureza distribuída do Kubernetes e a variedade de componentes envolvidos é preciso dividir o sistema em partes menores para identificar qual componente está falhando, reduzindo a complexidade da análise.
  8. Comandos fundamentais Para coletar informações sobre o estado do clusters,

    seus recursos e eventos use: kubectl cluster-info dump, kubectl events -A, kubectl get, kubectl describe, kubectl logs -f, kubectl api-resources, entre outros.