2
respostas

[Dúvida] Aplicando as Mudanças

No momento em que estou aplicando os meus scripts yaml estou percebendo que depois de um tempo ele começa a sofrer algumas reinicializações. Geralmente após cerca de 7 minutos ele começa a dar um status CrashLoopBackOff . Como resolver essa questão? Tentei modificar os recursos alocados que agora estão com "memory: "1024Mi" e "cpu: "1000m", e também modifiquei o livenessProbe com um "initialDelaySeconds: 30" e "periodSeconds: 10"

2 respostas

Olá, Matheus!

Essa ocorrência geralmente indica que há algo errado com a inicialização ou execução contínua do seu container. Podemos tentar algumas abordagens para diagnosticar e resolver o problema.

  1. Verificar Logs do Pod: Primeiramente, verifique os logs do pod para entender o que está causando a falha. Você pode fazer isso com o comando:

    kubectl logs <nome-do-pod>
    

    Se o seu pod tiver múltiplos containers, você pode especificar o container:

    kubectl logs <nome-do-pod> -c <nome-do-container>
    
  2. Descrever o Pod: Use o comando kubectl describe pod <nome-do-pod> para obter mais detalhes sobre o estado do pod e eventos recentes que podem indicar a causa do problema.

  3. Verificar Configuração do Liveness Probe: Certifique-se de que a configuração do livenessProbe está correta e que o endpoint que está sendo checado está realmente disponível e funcional. Um exemplo de configuração de livenessProbe pode ser:

    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 30
      periodSeconds: 10
    
  4. Revisar Recursos Alocados: Você mencionou que ajustou os recursos de memória e CPU. Verifique se esses valores são adequados para a sua aplicação. Às vezes, pode ser necessário aumentar esses valores ou ajustar conforme a demanda da aplicação.

  5. Verificar Dependências: Se sua aplicação depende de outros serviços (como banco de dados), certifique-se de que todos estão funcionando corretamente e que a aplicação consegue se conectar a eles sem problemas.

  6. Analisar Eventos do Kubernetes: Use o comando kubectl get events para ver eventos recentes no cluster que podem fornecer pistas sobre o que está acontecendo.

Aqui está um exemplo de como você pode verificar os logs e descrever um pod:

kubectl logs <nome-do-pod>
kubectl describe pod <nome-do-pod>
kubectl get events

Espero ter ajudado e bons estudos!

Boa tarde Lucas, realizei um describe em um dos Pods e obtive esse resultado:

Events:
  Type     Reason     Age                 From               Message
  ----     ------     ----                ----               -------
  Normal   Scheduled  2m26s               default-scheduler  Successfully assigned default/vollmed-deployment-857dffc649-c4zc8 to minikube
  Normal   Pulling    2m26s               kubelet            Pulling image "leonardosartorello/vollmed-api:1"
  Normal   Pulled     106s                kubelet            Successfully pulled image "leonardosartorello/vollmed-api:1" in 39.47s (39.47s including waiting). Image size: 1203204265 bytes.
  Warning  Unhealthy  46s (x2 over 66s)   kubelet            Liveness probe failed: Get "http://10.244.0.21:3000/paciente": dial tcp 10.244.0.21:3000: connect: connection refused
  Normal   Killing    46s                 kubelet            Container vollmed-container failed liveness probe, will be restarted
  Normal   Created    45s (x2 over 105s)  kubelet            Created container vollmed-container
  Normal   Started    45s (x2 over 105s)  kubelet            Started container vollmed-container
  Normal   Pulled     45s                 kubelet            Container image "leonardosartorello/vollmed-api:1" already present on machine
  Warning  Unhealthy  6s (x2 over 56s)    kubelet            Liveness probe failed: Get "http://10.244.0.21:3000/paciente": EOF

Ele diz que o problema está ocorrendo no meu livenessProbe mesmo, mas eu já fiz algumas mudanças nele, que atualmente se encontra assim:

livenessProbe:
          httpGet:
            path: /paciente
            port: 3000
          initialDelaySeconds: 30
          periodSeconds: 10 
          timeoutSeconds: 5  
          failureThreshold: 3 

E nos resources que está assim:

resources:
          limits:
            memory: "1024Mi"
            cpu: "1000m"