Já ficou olhando para um CrashLoopBackOff sem saber o que deu errado?

Todos nós já passamos por isso: olhando para um pod falhando sem ter ideia do porquê ele não está iniciando. Os logs estão vazios e você está quase perdendo a cabeça.
Conheça o container de debug efêmero
O Kubernetes 1.23+ tem um recurso que vai mudar sua vida de debugging para sempre:
kubectl debug -it failing-pod-xyz --image=busybox --target=failing-container
Isso anexa um container de debug ao seu pod existente sem reiniciá-lo! Agora você pode inspecionar o sistema de arquivos, verificar variáveis de ambiente e ver o que está realmente acontecendo.
Mas e se o pod nem sequer iniciar?
Experimente este comando mágico para criar um clone com os mesmos volumes, mas uma imagem diferente:
kubectl debug failing-pod-xyz -it --copy-to=debug-pod --container=debug-container --image=ubuntu
O kit de ferramentas definitivo para debug
Crie este YAML e mantenha-o sempre à mão:
apiVersion: v1
kind: Pod
metadata:
name: debug-toolkit
spec:
containers:
- name: debug
image: nicolaka/netshoot
command: ['sleep', '999999']
tolerations:
- operator: "Exists"
Aplique com:
pbpaste | kubectl apply -f-
Agora você tem um pod com todas as ferramentas de rede e debugging imagináveis que pode rodar em qualquer nó.
Dica pro: Use o plugin kubectl-debug
kubectl krew install debug
kubectl debug pod failing-pod-xyz
Chega de adivinhar o que está acontecendo dentro dos seus pods!