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, analizamos cómo configurar y ejecutar un clúster de Kubernetes, analicemos cómo podemos implementar el servicio NGINX. en nuestro clúster.

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

Nodo maestro del entorno de prueba: IP pública: 104.197.170.99 e IP privada: 10.128.15.195 Nodo de trabajo 1: público IP: 34.67.149.37 e IP privada: 10.128.15.196 Worker Node 2-IP pública: 35.232.161.178 e IP privada: 10.128.15.197

Implementación de NGINX en un clúster de Kubernetes

Ejecutaremos esta implementación desde el nodo maestro.

Comencemos por verificar el estado del clúster. Todos sus nodos deben estar en un estado LISTO.

# kubectl get nodes Verificar el estado del clúster de Kubernetes  Verificar el estado del clúster de Kubernetes Verificar el estado del clúster de Kubernetes

Creamos una implementación de NGINX. usando el imagen NGINX.

# kubectl crear implementación nginx–image = nginx Implementación de Nginx en Kubernetes  Implementación de Nginx en Kubernetes Implementación de Nginx en Kubernetes freestar.config.enabled_slots.push (locationName:” tecmint_incontent “, slotId:” tecmint_incontent “);

Ahora puede ver el estado de su implementación.

# kubectl get deployments  Verificar la implementación de Nginx en Kubernetes Verificar la implementación de Nginx en Kubernetes C heck Implementación de Nginx en Kubernetes

Si desea ver más detalles sobre su implementación, puede ejecutar el comando describe. Por ejemplo, es posible determinar cuántas réplicas de la implementación se están ejecutando. En nuestro caso, esperamos ver una réplica de 1 en ejecución (es decir, réplicas 1/1. .

# kubectl describe la implementación nginx  Comprobar Detalles de implementación de Nginx Verificar los detalles de implementación de Nginx Verifique los detalles de implementación de Nginx

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

Exponer su servicio Nginx a una red pública

Kubernetes ofrece varias opciones al exponer su servicio según una función llamada Servicio Kubernetes-tipos y son:

  1. ClusterIP. este tipo de servicio generalmente expone el servicio en una IP interna, accesible solo dentro del clúster, y posiblemente solo dentro del clúster-nodos.
  2. NodePort. esta es la opción más básica para exponer su servicio para que sea accesible fuera de su clúster, en un puerto específico (llamado NodePort. en cada nodo del cluste r. Ilustraremos esta opción en breve.
  3. LoadBalancer. 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 la alta disponibilidad para su servicio y tiene más funciones más allá del acceso predeterminado.
  4. ExternalName. este servicio redirecciona el tráfico a servicios fuera del clúster. . Como tal, el servicio se asigna a un nombre DNS que podría alojarse fuera de su clúster. Es importante tener en cuenta que esto no utiliza proxy.

El tipo de servicio predeterminado es ClusterIP.

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

# kubectl create service nodeport nginx–tcp = 80: 80  Crear servicio NodePort para exponer Nginx Crear servicio NodePort para exponer Nginx Crear servicio NodePort para exponer Nginx

Ejecute el comando get svc. para ver un resumen del servicio y los puertos expuestos.

# kubectl get svc  Verifique el servicio y puerto de Nginx  Verificar el servicio y el puerto de Nginx Verifique el servicio y el puerto de Nginx

Ahora puede verificar que la página Nginx. sea accesible en todos los nodos usando el comando curl.

# curl master-node: 30386 # curl node-1: 30386 # curl node-2: 30386  Consultar la página de Nginx en el clúster de Kubernetes  Verificar la página de Nginx en el clúster de Kubernetes Verifique la página de Nginx en Clúster de Kubernetes

Como puede ver, se puede acceder a la página “ ¡BIENVENIDO A NGINX!. .

Cómo llegar a direcciones IP PÚBLICAS efímeras

Como habrá notado, Kubernetes. informa que no tengo una IP pública activa registrada, o mejor dicho, no tengo una IP EXTERNA registrada.

# kubectl get svc  Verificar el servicio y el puerto de Nginx  Verifique el servicio y el puerto de Nginx Verifique el servicio y el puerto de Nginx

Verifiquemos si es cierto, que no tengo una IP EXTERNA adjunta a mis interfaces usando el comando IP.

# ip a  Verificar direcciones IP Verificar direcciones IP Check-IP Addresses

No hay IP pública como puede ver.

Como se mencionó anteriormente, actualmente estoy ejecutando esta implementación en una Máquina virtual. ofrecida por un proveedor de nube pública. Entonces, aunque no hay una interfaz en particular asignada a 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 adjunta 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 sencilla 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 la IP pública efímera. 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 , es decir 104.197.170.99:30386. que si revisa su navegador, debería poder ver la página de bienvenida.

 Verifique la página de Nginx implementada en Kubernetes  Compruebe la página de Nginx implementada en Kubernetes Verificar la página de Nginx implementada en Kubernetes

Con eso, hemos implementado NGINX. en nuestro clúster de Kubernetes de 3 nodos.