Table of Contents
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
Creamos una implementación de NGINX. usando el imagen NGINX.
# kubectl crear implementación nginx–image = nginx
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
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
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:
- 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.
- 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.
- 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.
- 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
Ejecute el comando get svc. para ver un resumen del servicio y los puertos expuestos.
# kubectl get svc
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
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
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
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
Verificar la página de Nginx implementada en Kubernetes
Con eso, hemos implementado NGINX. en nuestro clúster de Kubernetes de 3 nodos.