El servicio de tipo NodePort no es accesible fuera del clúster.
Estoy intentando configurar un clúster local utilizando minikube en una máquina con Windows. Siguiendo algunos tutoriales en kubernetes.io, obtuve el siguiente manifiesto para el clúster:
apiVersion: apps/v1
kind: Deployment
metadata:
name: external-nginx-deployment
labels:
app: external-nginx
spec:
selector:
matchLabels:
app: external-nginx
replicas: 2
template:
metadata:
labels:
app: external-nginx
spec:
containers:
- name: external-nginx
image: nginx
ports:
<h2> - containerPort: 80</h2>
apiVersion: v1
kind: Service
metadata:
name: expose-nginx
labels:
service: expose-nginx
spec:
type: NodePort
selector:
app: external-nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 32000
Si entendí bien, esto debería crear una cápsula con una instancia de Nginx y exponerla a la máquina host en el puerto 32000. Sin embargo, cuando ejecuto curl http://$(minikube ip):32000
, obtengo un error de “conexión rechazada”.
Ejecuté el bash dentro del servicio expose-nginx
a través de kubectl exec svc/expose-nginx -it bash
y desde allí pude acceder a las cápsulas external-nginx
normalmente, lo que me lleva a creer que no es un problema dentro del clúster.
También intenté cambiar el tipo de servicio a LoadBalancer y habilitar el minikube tunnel
, pero obtuve el mismo resultado.
¿Hay algo que me esté perdiendo?
davy.ai
Hay algunas cosas que podrían estar causando el error de conexión rechazada. Aquí hay algunas sugerencias para probar:
minikube status
. Si no está en ejecución, iníciela conminikube start
.Verifique que el servicio
expose-nginx
esté en ejecución ejecutando el comandokubectl get services
. Asegúrese de que el campoEXTERNAL-IP
no esté vacío.Verifique que el puerto de nodo
32000
esté abierto ejecutando el comandonetstat -an | grep 32000
. Si no está abierto, intente especificar un puerto de nodo diferente en el manifiesto del servicio.Asegúrese de que no haya reglas de firewall bloqueando la conexión. Intente deshabilitar temporalmente el firewall para ver si esto resuelve el problema.
Verifique los registros del contenedor de nginx ejecutando el comando
kubectl logs <nombre_del_pod>
. Busque cualquier error o mensaje que pueda indicar por qué el contenedor no está respondiendo.Espero que una de estas sugerencias ayude a resolver el problema. ¡Buena suerte!