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.
Container de debug efêmero
O Kubernetes 1.23+ tem um recurso bem útil pra isso:
kubectl debug -it failing-pod-xyz --image=busybox --target=failing-container
Isso anexa um container de debug ao seu pod existente sem reiniciá-lo. Você consegue inspecionar o sistema de arquivos, checar variáveis de ambiente e rodar comandos dentro do contexto do container.
Mas e se o pod nem sequer iniciar?
Esse comando cria um clone com os mesmos volumes, mas com uma imagem diferente:
kubectl debug failing-pod-xyz -it --copy-to=debug-pod --container=debug-container --image=ubuntu
Kit de ferramentas de 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-
Com isso você tem um pod com ferramentas de rede e debugging que roda em qualquer nó.
Dica pro: Use o plugin kubectl-debug
kubectl krew install debug
kubectl debug pod failing-pod-xyz
Com isso você já tem o que precisa pra parar de adivinhar.