¿Cómo exportar puertos de Kubernetes al host macOS?

¿Cómo exportar puertos de Kubernetes al host macOS?

Quiero configurar un clúster de Kubernetes local para realizar pruebas en macOS. Yo seleccionémicrok8sproporcionado por Canonical. Kubernetes no se ejecuta de forma nativa en macOS, pero utiliza una máquina virtual Linux proporcionada pormultipaso.

La instalación fue fluida y el despliegue delbootcamp de kubernetesparecía haber funcionado. Este es el resultado que obtuve hasta ahora:

microk8s kubectl get services

NAME                  TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
kubernetes            ClusterIP   10.152.183.1     <none>        443/TCP          5h9m
kubernetes-bootcamp   NodePort    10.152.183.226   <none>        8080:31004/TCP   4h10m

multipass list

Name                    State             IPv4             Image
microk8s-vm             Running           192.168.64.2     Ubuntu 18.04 LTS

Hacer ping a la instancia ping 192.168.64.2funciona como se esperaba.

Actualizar: Probé más a fondo la conectividad instalando nginx dentro de la VM. El uso de curl http://192.168.64.2la página de inicio de nginx dentro de la VM apareció en macOS.

Ahora, cuando conecto la máquina virtual usando multipass exec microk8s-vm -- bash, puedo curlingresar a mi servicio implementado como se esperaba con ambos:

  • curl http://127.0.0.1:31004
  • curl http://10.152.183.226:8080

Obteniendo el resultado esperado de:

Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-57978f5f5d-d977w | v=1

Sin embargo, me falta el paso para acceder a estas URL desde macOS (tanto curl como un navegador). Lo intenté sin éxito:

  • curl http://10.152.183.226:8080
  • curl http://10.152.183.226:31004
  • curl http://192.168.64.2:8080
  • curl http://192.168.64.2:31004

Obviamente me falta un paso para que los servicios en ejecución sean accesibles desde el host de macOS. ¿Qué me perdí? ¡Se aprecia mucho la ayuda!

Respuesta1

Esa 192.168.64.2 parece una red de solo host y puede ser una red de solo host interna. ¿Puedes hacer ping a 192.168.64.2 desde la terminal Mac? multipass tiene como valor predeterminado NAT para la red y no ofrece la opción de cambiarlo a puente hasta multipass 1.6. Que en este momento es sólo fuente. Veo 1.5 cuando escribo multipass --version.

Puedes solucionar esto de todos modos usando ssh para reenviar el puerto multipaso al host de Mac. Desde el shell multipaso, también multipass shellconocido como primario, ejecute . Agregue si desea que el comando ssh port forward se ejecute en segundo plano y agregue si desea permitir conexiones desde otros hosts en la misma red que su Mac. Si ssh no está disponible en su Mac, habilite el acceso remoto o simplemente los inicios de sesión ssh (servidor ssh) para su nombre de usuario en el panel de control compartido en la configuración de su Mac.ssh -R 8080 -R 31004 [email protected]-f-g

información relacionada