Actualmente estoy tratando de implementar NGINX Ingress Controller en mi AWS eks Cluster. Tengo 4 nodos en ejecución:
NAME STATUS ROLES AGE VERSION ip-10-230-35-48.ec2.internal Ready <none> 7h44m v1.19.6-eks-49a6c0 ip-10-230-39-9.ec2.internal Ready <none> 7h42m v1.19.6-eks-49a6c0 ip-10-230-42-241.ec2.internal Ready <none> 7h49m v1.19.6-eks-49a6c0 ip-10-230-49-228.ec2.internal Ready <none> 7h46m v1.19.6-eks-49a6c0 Estoy implementando mi ingress-nginx-controller con la guía de instalación del controlador de ingreso de NGINX y uso el archivo deployment -tls-termination.yaml
Por alguna razón, AWS ELB no marca todos los nodos como saludables y genera los siguientes errores:
Instance has failed at least the UnhealthyThreshold number of health checks consecutively. El único nodo marcado como saludable es el nodo donde se implementa ingress-nginx-controller . 
¿Me estoy perdiendo algo en mi archivo de configuración de yaml? ¿O debería implementar un ingress-nginx-controller ingreso por Availibity Zone ? ¿Si es así, cómo?
Gracias
En realidad, está de acuerdo con la implementación del controlador de ingreso y ELB. El ELB solo reconoce el nodo donde se ejecuta el módulo del controlador de ingreso. El resto de nodos está fuera de servicio. Si el pod del controlador de ingreso se eliminará a otro nodo, ELB reconocerá este nodo como una instancia InService. Puede probar esto eliminando el módulo del controlador.
La recomendación es usar balanceadores de carga NLB o ALB con controlador de ingreso. A partir de la versión 1.18 de k8s, NLB será el predeterminado para el equilibrador de carga de ingreso. Pruebe este tutorial para cambiar el tipo de equilibrador de carga.
Este es el comportamiento esperado cuando externalTrafficPolicy se establece en Local en el servicio (que es lo que tiene). Con externalTrafficPolicy: Local , no obtiene saltos adicionales: una vez que el tráfico llega al nodo, no sale del nodo. Load Balancer enviará tráfico solo a los nodos donde se ejecutan los pods de Ingress Controller. En los otros nodos, la verificación de estado devolverá 503 y se tratará como no saludable.
Cambie externalTrafficPolicy a Cluster si desea que todos los nodos estén en buen estado.
Sin embargo, esto generalmente no se recomienda, ya que al hacerlo, la dirección IP del cliente no se propaga a los pods finales. Pero esto solo es cierto para NLB y no para Classic Elastic Load Balancers. Entonces, lo mejor es usar NLB con el controlador de ingreso nginx. Si aún desea que todos los nodos estén en buen estado, siga la política local y use un conjunto de demonios.
Documentación oficial al respecto.