es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Hay algunas cosas que podrían estar causando el error de conexión rechazada. Aquí hay algunas sugerencias para probar:

    1. Verifique que la máquina virtual de minikube esté en ejecución ejecutando el comando minikube status. Si no está en ejecución, iníciela con minikube start.
    2. Verifique que el servicio expose-nginx esté en ejecución ejecutando el comando kubectl get services. Asegúrese de que el campo EXTERNAL-IP no esté vacío.

    3. Verifique que el puerto de nodo 32000 esté abierto ejecutando el comando netstat -an | grep 32000. Si no está abierto, intente especificar un puerto de nodo diferente en el manifiesto del servicio.

    4. 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.

    5. 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!

Comments are closed.