Simular e Diagnosticar Falhas de Atualização
Nesta etapa, você aprenderá como diagnosticar potenciais falhas de atualização de deployment, simulando uma atualização de imagem problemática e usando ferramentas de diagnóstico Kubernetes.
Primeiro, navegue até o diretório do projeto:
cd ~/project/k8s-manifests
Crie um manifesto de deployment com uma imagem inválida:
nano problematic-deployment.yaml
Adicione o seguinte conteúdo:
apiVersion: apps/v1
kind: Deployment
metadata:
name: troubleshoot-app
labels:
app: troubleshoot
spec:
replicas: 3
selector:
matchLabels:
app: troubleshoot
template:
metadata:
labels:
app: troubleshoot
spec:
containers:
- name: nginx
image: nginx:non-existent-tag
ports:
- containerPort: 80
Aplique o deployment problemático:
kubectl apply -f problematic-deployment.yaml
Exemplo de saída:
deployment.apps/troubleshoot-app created
Verifique o status do deployment:
kubectl rollout status deployment troubleshoot-app
Exemplo de saída:
Waiting for deployment "troubleshoot-app" to roll out...
Pressione Ctrl+C para sair do status de rollout.
Verifique os eventos e o status do pod:
kubectl get pods -l app=troubleshoot
Exemplo de saída:
NAME READY STATUS RESTARTS AGE
troubleshoot-app-6b8986c555-gcjj9 0/1 ImagePullBackOff 0 2m56s
troubleshoot-app-6b8986c555-p29dp 0/1 ImagePullBackOff 0 2m56s
troubleshoot-app-6b8986c555-vpv5q 0/1 ImagePullBackOff 0 2m56s
Examine os detalhes e logs do pod:
## Replace 'xxx-yyy' with your actual pod name
POD_NAME=$(kubectl get pods -l app=troubleshoot -o jsonpath='{.items[0].metadata.name}')
kubectl describe pod $POD_NAME
kubectl logs $POD_NAME
Você verá o status do pod e os logs indicando a falha na busca da imagem.
Failed to pull image "nginx:non-existent-tag"
Solucione o problema corrigindo a imagem:
nano problematic-deployment.yaml
Atualize a imagem para uma tag válida:
image: nginx:1.24.0-alpine
Reaplique o deployment corrigido:
kubectl apply -f problematic-deployment.yaml
Verifique o status do pod novamente:
kubectl get pods -l app=troubleshoot
Exemplo de saída:
NAME READY STATUS RESTARTS AGE
troubleshoot-app-5dc9b58d57-bvqbr 1/1 Running 0 5s
troubleshoot-app-5dc9b58d57-tdksb 1/1 Running 0 8s
troubleshoot-app-5dc9b58d57-xdq5n 1/1 Running 0 6s
Pontos-chave sobre o diagnóstico de falhas:
- Use
kubectl describe para visualizar eventos de deployment e pod.
- Verifique o status do pod para
ImagePullBackOff ou outros estados de erro.
- Examine os logs do pod para obter informações detalhadas sobre o erro.
- Verifique a disponibilidade da imagem e a correção da tag.