Slide 1

Slide 1 text

Kubernetes Troubleshooting Um pequeno guia de sobrevivência Natália Granato nataliagranato.xyz

Slide 2

Slide 2 text

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 .

Slide 3

Slide 3 text

Juntos pela 3DCOMTECH https://www.catarse.me/juntospela3dcomtech

Slide 4

Slide 4 text

● 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.

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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 2 1 Entenda o problem a Obtenha a m aior quantidade de inform ação sobre o problem a para entendê-lo.

Slide 7

Slide 7 text

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.

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

Conflito entre kube-proxy e o cilium https://github.com/nataliagranato/kubernetes-troubleshooting/blob/main/post-mortem-report.md

Slide 10

Slide 10 text

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.

Slide 11

Slide 11 text

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.

Slide 12

Slide 12 text

Agora vamos praticar!

Slide 13

Slide 13 text

kubectl debug

Slide 14

Slide 14 text

Muito obrigada!