K8s em Exemplos: Services (NodePort)

NodePort expõe o Service em uma porta em todos os nodes do cluster. Acessível de fora do cluster via node-ip:node-port. Faixa de portas: 30000-32767 (configurável).

service-nodeport.yaml

Defina type: NodePort para expor em todos os nodes. Você pode especificar nodePort ou deixar o Kubernetes atribuir uma.

apiVersion: v1
kind: Service
metadata:
  name: my-app
spec:
  type: NodePort
  ports:
    - port: 80
      targetPort: 8080
      nodePort: 30080
  selector:
    app: my-app
terminal

NodePort raramente é usado em produção. Requer abrir portas no firewall e não tem balanceamento de carga entre nodes.

$ kubectl get svc my-app
NAME     TYPE       CLUSTER-IP    PORT(S)        AGE
my-app   NodePort   10.96.0.100   80:30080/TCP   5m

$ kubectl get nodes -o wide
NAME     STATUS   EXTERNAL-IP
node-1   Ready    192.168.1.10
node-2   Ready    192.168.1.11

$ curl http://192.168.1.10:30080
Hello from my-app!
terminal

NodePort é útil para desenvolvimento local com minikube ou kind. Use port-forward para acesso rápido sem NodePort.

$ minikube service my-app --url
http://192.168.49.2:30080

$ kubectl port-forward svc/my-app 8080:80
Forwarding from 127.0.0.1:8080 -> 8080

$ curl http://localhost:8080

Índice | GitHub | Use as setas do teclado para navegar |