He implementado mi aplicación en un clúster de 3 nodos. Ahora, para hacer que esta aplicación sea accesible externamente, he seguido esta documentación y he integrado el controlador de ingreso nginx.
Ahora, cuando revisé la consola Load Balancer de Google, puedo ver que se creó un nuevo balanceador de carga y todo funciona bien. Pero lo extraño es que descubrí que dos de mis nodos no están en buen estado y solo un nodo acepta la conexión. Luego encontré esta discusión y entendí que el único nodo que ejecuta el pod del controlador de ingreso nginx estará en buen estado para el balanceador de carga.
Ahora me cuesta entender este flujo de datos y el uso de un equilibrador de carga externo aquí. Usamos un equilibrador de carga externo para equilibrar la carga en varias máquinas. Pero con esta configuración, el balanceador de carga externo siempre reenviará el tráfico al nodo con el pod del controlador de ingreso nginx. Si eso es correcto, ¿cuál es el papel del equilibrio de carga externo aquí?
Puede tener más de una réplica de los pods del controlador de entrada de Nginx implementada en más de un nodo de kubernetes con fines de alta disponibilidad para reducir la posibilidad de tiempo de inactividad en caso de que un nodo de kubernetes no esté disponible. LoadBalancer enviará la solicitud a uno de esos pods de controlador de ingreso nginx. Desde los pods del controlador de entrada nginx, se reenviará a cualquiera de los pods de back-end. La función del equilibrador de carga externo es exponer los pods del controlador de entrada nginx fuera del clúster. Debido a que NodePort no se recomienda para su uso en producción y ClusterIP no se puede usar para exponer pods fuera del clúster, por lo tanto, LoadBalancer es la opción viable.