Olá Lauro.
Tudo bem?
Esse tipo de problema é bastante comum ao iniciar com Kubernetes, e pelo que você mostrou, seus arquivos YAML estão corretos do ponto de vista estrutural.
Normalmente, o problema não está no código, mas no ambiente onde o cluster está rodando.
- Verifique se o Pod está em execução
Execute:
kubectl get pods
O status do Pod deve estar como Running.
Caso não esteja, verifique os detalhes e os logs:
kubectl describe pod pod-alura-flix-api
kubectl logs pod pod-alura-flix-api
Se a aplicação Spring Boot não estiver subindo corretamente (por exemplo, erro de porta, configuração de perfil ou dependência externa), o Service não conseguirá expor a aplicação.
- Verifique se o Service foi criado corretamente
Execute:
kubectl get svc
Você deve ver algo semelhante a:
svc-alura-flix-api NodePort 10.x.x.x <none> 8080:30000/TCP
Depois, verifique os detalhes do Service:
kubectl describe svc svc-alura-flix-api
Confirme especialmente:
- O
NodePort configurado como 30000 - O
targetPort como 8080 - O
selector como app: alura-flix-api
O selector precisa corresponder exatamente ao label definido no Pod.
- Teste a aplicação a partir de dentro do cluster
Isso ajuda a identificar se o problema está na exposição externa ou na aplicação em si.
Execute:
kubectl exec -it pod-alura-flix-api -- curl http://localhost:8080
Se a chamada funcionar, a aplicação está respondendo corretamente dentro do container. Caso contrário, o problema está na aplicação Spring Boot.
- Verifique qual ambiente Kubernetes você está utilizando
Esse ponto é fundamental, pois o comportamento do NodePort muda conforme o ambiente.
Se estiver usando Minikube
O NodePort não funciona diretamente com o INTERNAL-IP do node.
Use um dos métodos abaixo:
minikube service svc-alura-flix-api
Ou:
minikube ip
E no Postman:
http://<IP_DO_MINIKUBE>:30000
Se estiver usando Docker Desktop com Kubernetes
Utilize diretamente:
http://localhost:30000
Nesse caso, o INTERNAL-IP retornado pelo Kubernetes geralmente não funciona para acesso externo.
Se estiver usando Kubernetes em uma VM ou na nuvem
Nesse cenário, o acesso via NodePort funciona com:
http://<INTERNAL-IP-DO-NODE>:30000
Mas é necessário garantir que:
- A porta 30000 esteja liberada no firewall da VM
- O Security Group (AWS, GCP, Azure) permita tráfego nessa porta
- Teste usando port-forward (para depuração)
Esse teste ajuda a isolar problemas de rede:
kubectl port-forward pod/pod-alura-flix-api 8080:8080
Depois, acesse no Postman:
http://localhost:8080
Se funcionar, o problema está exclusivamente na configuração de rede ou no uso do NodePort.
- Observação de boas práticas
Para estudos mais avançados ou ambientes reais, o ideal é:
- Usar um Deployment em vez de Pod diretamente
- Usar Service do tipo ClusterIP
- Expor externamente via Ingress
Para fins de aprendizado, o uso de Pod + NodePort está correto.
Seus arquivos YAML estão corretos.
O problema provavelmente está relacionado ao ambiente Kubernetes ou à forma de acesso ao NodePort.
Avise qualquer duvida.
Bons estudos.