Acceder a tus aplicaciones en Kubernetes a través de NodePort

Creo que está bien entender todas las posibilidades que Kubernetes te ofrece para exponer tus pods, antes de tomar una decisión. Ayer te conté cómo acceder a ellos a través de kubectl proxy, aunque ya te dije que este tipo de acceso es más para un modo depuración o bien el acceso interno a dashboards, como puede ser el caso de Kubernetes Dashboard. Hoy quiero explorar contigo una de las opciones más primitivas que es a través de NodePort.

NodePort

Como su propio nombre indica, NodePort es el acceso a través de un puerto de los nodos, que son las máquinas que forman tu clúster. Vamos a verlo con un ejemplo:

Hoy vamos a utilizar la imagen aspnetapp que está en la cuenta de Microsoft de Docker Hub. Creamos un pod con dos réplicas que escuchan por el puerto 80.

kubectl run aspnetapp \
--image=mcr.microsoft.com/dotnet/core/samples:aspnetapp \
--port=80 \
--replicas=2

Una vez que el despliegue se está ejecutando correctamente, (puedes comprobarlo a través de kubectl get deployments) vamos a exponer la aplicación a través de un servicio del tipo NodePort:

kubectl expose deployment aspnetapp --type=NodePort

Cuando exponemos un servicio utilizando este tipo, nuestro clúster nos asignará un puerto entre el rango 30000–32767. Para saber qué puerto nos ha sido asignado en los nodos, podemos lanzar el comando kubectl get services.

En mi caso estoy trabajando con las IPs 192.168.1.48 (master), 192.168.1.49 (nodo1) y 192.168.1.51 (nodo2) para mis nodos. Si ahora accedo a través del navegador a cualquiera de ellos, especificando el puerto 30207 accederé a mi aplicación aspnetapp.

Accediendo a mi app a través de NodePort – puerto 30207

¡Saludos!