Cómo implementar nginx en un clúster de Kubernetes

Cómo implementar nginx en un clúster de Kubernetes

En nuestro último artículo, hemos discutido cómo configurar y ejecutar un clúster de Kubernetes, discutamos cómo podemos implementar Nginx servicio en nuestro clúster.

Ejecutaré esta implementación en una máquina virtual alojada por un proveedor de nube pública. Como es con muchos servicios públicos en la nube, muchos generalmente mantienen un esquema de IP público y privado para sus máquinas virtuales.

Entorno de prueba

Master Node - Public IP: 104.197.170.99 y IP privada: 10.128.15.195 del nodo de trabajadores 1 - IP público: 34.67.149.37 y IP privada: 10.128.15.196 Worker Node 2 - IP pública: 35.232.161.178 y IP privada: 10.128.15.197 

Implementar Nginx en un clúster de Kubernetes

Ejecutaremos esta implementación desde el nodo maestro.

Comencemos por verificar el estado del clúster. Todos tus nodos deberían estar en un LISTO estado.

# kubectl obtener nodos 
Verifique el estado del clúster de Kubernetes

Creamos una implementación de Nginx utilizando el Nginx imagen.

# Kubectl Crear implementación nginx --image = nginx 
Implementar Nginx en Kubernetes

Ahora puede ver el estado de su implementación.

# kubectl obtener implementaciones 
Verifique el despliegue de Nginx en Kubernetes

Si desea ver más detalles sobre su implementación, puede ejecutar el describir dominio. Por ejemplo, es posible determinar cuántas réplicas de la implementación se ejecutan. En nuestro caso, esperamos ver una réplica de 1 en ejecución (yo.mi 1/1 réplicas).

# Kubectl Describa la implementación Nginx 
Verifique los detalles de la implementación de Nginx

Ahora su implementación de Nginx está activa, es posible que desee exponer el Nginx Servicio a una IP pública accesible en Internet.

Exponer su servicio Nginx a la red pública

Kubernetes ofrece varias opciones al exponer su servicio en función de una función llamada Kubernetes Types y son:

  1. Clúster - Este tipo de servicio generalmente expone el servicio en una IP interna, accesible solo dentro del clúster, y posiblemente solo dentro de los nodos de clúster.
  2. Nodo - Esta es la opción más básica de exponer que su servicio sea accesible fuera de su clúster, en un puerto específico (llamado el Nodo) en cada nodo del clúster. Ilustraremos esta opción en breve.
  3. Quilancista - Esta opción aprovecha los servicios externos de equilibrio de carga ofrecidos por varios proveedores para permitir el acceso a su servicio. Esta es una opción más confiable cuando se piensa en una alta disponibilidad para su servicio, y tiene más funciones más allá del acceso predeterminado.
  4. Nombre externo - Este servicio redirige el tráfico a los servicios fuera del clúster. Como tal, el servicio se asigna a un nombre de DNS que podría ser alojado desde su clúster. Es importante tener en cuenta que esto no usa proxy.

El tipo de servicio predeterminado es Clúster.

En nuestro escenario, queremos usar el Tipo de servicio nodeport Porque tenemos una dirección IP pública y privada y no necesitamos un equilibrador de carga externo por ahora. Con este tipo de servicio, Kubernetes asignará este servicio en los puertos en el 30000+ rango.

# Kubectl Crear servicio nodeport nginx -tcp = 80: 80 
Crear servicio nodeport para exponer a Nginx

Ejecutar el Obtener SVC comandar ver un resumen del servicio y los puertos expuestos.

# Kubectl Obtener SVC 
Verifique el servicio y el puerto NGINX

Ahora puedes verificar que el Nginx La página es accesible en todos los nodos usando el comando curl.

# Curl Master nodo: 30386 # Curl Node-1: 30386 # Curl Node-2: 30386 
Consulte la página Nginx en el clúster Kubernetes

Como puede ver, el "BIENVENIDO A NGINX!Se puede llegar a la página.

Llegar a direcciones IP públicas efímeras

Como habrás notado, Kubernetes informa que no tengo IP pública activa registrada, o más bien no hay.

# Kubectl Obtener SVC 
Verifique el servicio y el puerto NGINX

Verifiquemos si es realmente cierto, que no tengo una IP externa conectada a mis interfaces usando el comando IP.

# ip a 
Verifique las direcciones IP

No hay IP pública como puede ver.

Como se mencionó anteriormente, actualmente estoy ejecutando esta implementación en un Máquina virtual ofrecido por un proveedor de nube pública. Entonces, si bien no hay una interfaz particular asignada una IP pública, el proveedor de VM ha emitido una dirección IP externa efímera.

Una dirección IP externa efímera es una dirección IP temporal que permanece conectada a la VM hasta que se detiene la instancia virtual. Cuando se reinicia la instancia virtual, se asigna una nueva IP externa. Básicamente, es una forma simple para que los proveedores de servicios aprovechen las IP públicas inactivas.

El desafío aquí, aparte del hecho de que su IP pública no es estática, es que el IP público efímero es simplemente una extensión (o proxy) de la IP privada, y por esa razón, solo se accederá al servicio en el puerto 30386. Eso significa que se accederá al servicio en la URL , eso es 104.197.170.99: 30386, que si revisa su navegador, debería poder ver la página de bienvenida.

Verifique la página Nginx implementada en Kubernetes

Con eso, hemos implementado con éxito Nginx en nuestro clúster Kubernetes de 3 nodos.