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.

Accede a la IP externa de Kubernetes desde internet.

Actualmente estoy configurando un clúster de Kubernetes (servidores Ubuntu básicos). Desplegué Metallb e Ingress-Nginx para manejar las direcciones IP y el enrutamiento de servicios. Esto parece funcionar bien. Recibo una respuesta de Nginx cuando uso wget con la IP externa del servicio del controlador de Ingress-Nginx (funciona en cada nodo). Pero esto solo funciona dentro de la red del clúster. ¿Cómo puedo acceder a mis servicios (el controlador de Ingress-Nginx, ya que es quien hace el enrutamiento) desde Internet a través de la dirección IP de un nodo/servidor maestro? Intenté configurar el enrutamiento con iptables, pero parece que no funciona. ¿Qué estoy haciendo mal y cuál es la mejor práctica?

echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

iptables -t nat -A PREROUTING -i eth0 -p tcp -d <dirección ip="" del="" servidor=""> --dport 80 -j DNAT --to <ip externa="" de="" nginx="">:80

iptables -A FORWARD -p tcp -d <ip externa="" de="" nginx=""> --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

iptables -F

Aquí hay más información:

kubectl get services -n ingress-nginx

NAME                                 TYPE           CLUSTER-IP       EXTERNAL-IP    PORT(S)                      AGE
ingress-nginx-controller             LoadBalancer   10.103.219.111   198.51.100.1   80:31872/TCP,443:31897/TCP   41h
ingress-nginx-controller-admission   ClusterIP      10.108.194.136   <ninguno>         443/TCP                      41h

Por favor, comparte algunas ideas.

Jonas</dirección>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Hola Jonas,

    Parece que ya has configurado correctamente Metallb e Ingress-Nginx y ahora estás buscando acceder a tus servicios desde internet a través de la dirección IP de un nodo/servidor principal. Para lograr esto, puedes usar iptables para enrutar el tráfico al servicio “ingress-nginx-controller”.

    Según los comandos que proporcionaste, parece que estás intentando configurar la ruta de iptables, pero estás encontrando algunos problemas. Aquí hay algunas sugerencias que pueden ayudarte:

    • Verifica que la externalIP del servicio “ingress-nginx-controller” esté configurada correctamente.
    • Verifica que las reglas de iptables que has configurado se estén aplicando correctamente. Puedes revisar la salida de iptables -L para ver las reglas configuradas actualmente.
    • Revisa la configuración de red de tu servidor. Asegúrate de que la dirección IP del servidor sea accesible desde internet y de que las configuraciones de tu cortafuegos permitan el tráfico entrante en el puerto 80.

    En cuanto a si la ruta de iptables es la mejor práctica, es posible que no sea el método más ideal debido a posibles problemas de seguridad. Exponer directamente tu servicio “ingress-nginx-controller” a internet puede representar un riesgo de seguridad, ya que permite a los atacantes potencialmente aprovechar las vulnerabilidades de tu controlador de ingreso.

    Un enfoque alternativo sería utilizar un balanceador de carga externo, como un balanceador de carga en la nube o un balanceador de carga físico. Esto te permitiría exponer tus servicios a internet sin exponer directamente tu controlador de ingreso.

    ¡Espero que esto te ayude! Avísame si tienes alguna pregunta adicional.

    Saludos cordiales,
    [Tu Nombre]

Comments are closed.