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.

Ejecuta Ingress en minikube y su dirección mostrará localhost.

Soy nuevo en k8s. Desplegué un ingreso en minikube y descubrí que su dirección es ‘localhost’, lo cual no debería ser, supongo. Por esto, no sé cómo continuar, ya que debería editar /etc/hosts/ para agregar un elemento DNS, pero no pude.

Y este es mi archivo de configuración:

kiloson@ubuntu:~$ cat kubia-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: kubia
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  rules:
  - host: kubia.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: kubia-nodeport
            port:
              number: 80

Versión de minikube:

kiloson@ubuntu:~$ minikube version
minikube version: v1.24.0
commit: 76b94fb3c4e8ac5062daf70d60cf03ddcc0a741b

Información de Ubuntu:

kiloson@ubuntu:~$ neofetch
            .-/+oossssoo+/-.               kiloson@ubuntu
        `:+ssssssssssssssssss+:`           --------------
      -+ssssssssssssssssssyyssss+-         SO: Ubuntu 20.04.3 LTS x86_64
    .ossssssssssssssssssdMMMNysssso.       Host: Máquina Virtual 7.0
   /ssssssssssshdmmNNmmyNMMMMhssssss/      Kernel: 5.11.0-1022-azure
  +ssssssssshmydMMMMMMMNddddyssssssss+     Tiempo de actividad: 2 horas, 33 minutos
 /sssssssshNMMMyhhyyyyhmNMMMNhssssssss/    Paquetes: 648 (dpkg), 4 (snap)
.ssssssssdMMMNhsssssssssshNMMMdssssssss.   Shell: bash 5.0.17
+sssshhhyNMMNyssssssssssssyNMMMysssssss+   Terminal: /dev/pts/0
ossyNMMMNyMMhsssssssssssssshmmmhssssssso   CPU: Intel Xeon E5-2673 v4 (2) @ 2.294GHz
ossyNMMMNyMMhsssssssssssssshmmmhssssssso   GPU: 00:08.0 Microsoft Corporation Hyper-V Virtual VGA
+sssshhhyNMMNyssssssssssssyNMMMysssssss+   Memoria: 1493MiB / 7959MiB
.ssssssssdMMMNhsssssssssshNMMMdssssssss.
 /sssssssshNMMMyhhyyyyhdNMMMNhssssssss/
  +sssssssssdmydMMMMMMMMddddyssssssss+
   /ssssssssssshdmNNNNmyNMMMMhssssss/
    .ossssssssssssssssssdMMMNysssso.
      -+sssssssssssssssssyyyssss+-
        `:+ssssssssssssssssss+:`
            .-/+oossssoo/+-.'
Tags:  ,

Answer

  1. Avatar for davy.ai

    Solución:

    La razón por la cual la dirección de ingreso (ingress address) es localhost puede deberse al hecho de que estás utilizando un servicio de tipo NodePort. Cuando creas un servicio de tipo NodePort, Kubernetes automáticamente escucha en un puerto de alto número en cada nodo del clúster (el mismo puerto en cada nodo) y realiza una proxificación de ese puerto desde la IP externa de cada nodo hacia el mismo puerto en el pod asociado. Puedes verificar esto ejecutando el siguiente comando para obtener la IP del nodo y el puerto donde tu aplicación está expuesta:

    kubectl get nodes -o wide
    

    Verás una salida similar a la siguiente:

    NAME       STATUS   ROLES                  AGE     VERSION          INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION     CONTAINER-RUNTIME
    minikube   Ready    control-plane,master   4d23h   v1.22.2          192.168.49.2    <none>        Ubuntu 20.04.1 LTS   5.10.25-linuxkit   docker://20.10.8
    

    En este ejemplo, la dirección IP del nodo donde se está ejecutando Minikube es 192.168.49.2. Para acceder a tu aplicación, puedes utilizar esta dirección IP y el NodePort al cual el servicio está mapeado. Puedes obtener el valor de NodePort del servicio ejecutando:

    kubectl describe svc kubia-nodeport
    

    Aquí, kubia-nodeport es el nombre de tu servicio.

    Con el NodePort y la dirección IP, puedes acceder a tu aplicación utilizando la siguiente URL:

    http://NODE_IP:NODE_PORT
    

    Si deseas acceder a tu aplicación a través de un nombre de host específico (por ejemplo, kubia.example.com), puedes hacerlo agregando una entrada a tu archivo /etc/hosts. Sin embargo, dado que estás ejecutando Minikube localmente, necesitas actualizar el archivo /etc/hosts en la máquina virtual (VM) de Minikube. Puedes hacer esto ejecutando el siguiente comando:

    minikube ssh 'echo "NODE_IP kubia.example.com" | sudo tee -a /etc/hosts'
    

    Aquí, reemplaza NODE_IP con la dirección IP de tu nodo Minikube.

    Después de ejecutar este comando, deberías poder acceder a tu aplicación en `http://kubia.example.com:NODE_PORT`.

Comments are closed.