¿Cómo puedo solucionar problemas al crear un equilibrador de carga con el controlador del equilibrador de carga de AWS?
No puedo crear un equilibrador de carga de red ni un equilibrador de carga de aplicación con el controlador del equilibrador de carga de AWS. O bien, el equilibrador de carga no se crea después de crear el servicio o los objetos de entrada.
Descripción breve
Para solucionar problemas de creación del balanceador de carga, haga lo siguiente:
- Asegúrese de que se cumplen todos los requisitos previos.
- Compruebe las anotaciones del objeto de entrada (equilibrador de carga de aplicación) o de servicio (equilibrador de carga de red).
- Consulte los registros del pod del controlador del equilibrador de carga de AWS para obtener información adicional.
- Si el clúster se ejecuta en AWS Fargate, compruebe que se haya creado un perfil de Fargate para el espacio de nombres en el que reside el objeto de entrada o servicio.
- Compruebe si hay dependencias sin abordar.
El controlador del equilibrador de carga de AWS administra el equilibrio de carga elástico para un clúster de EKS. El controlador proporciona los siguientes recursos:
- Un equilibrador de carga de aplicación cuando crea una entrada de Kubernetes.
- Un equilibrador de carga de red al crear un servicio de Kubernetes de tipo LoadBalancer. Anteriormente, el equilibrador de carga de red de Kubernetes se usaba para los destinos de instancia y el controlador del equilibrador de carga de AWS se usaba para los destinos de IP. A partir de la versión 2.3.0 del controlador del equilibrador de carga de AWS, puede crear un equilibrador de carga de red con cualquiera de los tipos de destino. Para obtener más información, consulte Tipo de destino.
Resolución
Asegúrese de que se cumplen todos los requisitos previos.
Para obtener una lista de los requisitos previos del equilibrador de carga de aplicación, consulte Equilibrio de carga de aplicaciones en Amazon EKS. Para obtener una lista de los requisitos previos del equilibrador de carga de red, consulte Equilibrador de carga de red en Amazon EKS.
1. Compruebe que el controlador del equilibrador de carga de AWS se haya aprovisionado correctamente. Se recomienda utilizar la versión 2.4.4 o posterior.
2. Verifique el número de subredes. El equilibrador de carga de aplicación necesita al menos dos subredes en diferentes zonas de disponibilidad. El equilibrador de carga de red necesita al menos una subred. Las subredes deben tener al menos ocho direcciones IP disponibles. Para obtener más información, consulte Ver las VPC.
3. Debe utilizar la siguiente etiqueta en determinados escenarios:
- Clave: “kubernetes.io/cluster/cluster-name”
- Valor: “shared” (compartido) o “owned” (propio)
Si utiliza un balanceador de carga de aplicaciones
Debe etiquetar exactamente un grupo de seguridad en los siguientes escenarios:
- Utiliza varios grupos de seguridad adjuntos al nodo de trabajo.
- Utiliza el controlador del equilibrador de carga de AWS versión v2.1.1 o anterior.
Si utiliza un equilibrador de carga de red
Si utiliza el controlador del balanceador de carga de AWS versión v2.1.1 o anterior, las subredes deben etiquetarse.
Para obtener información sobre cómo agregar etiquetas desde la consola de Amazon EC2, consulte Trabajar con etiquetas mediante la consola. Para obtener información sobre cómo agregar etiquetas mediante la interfaz de la línea de comandos de AWS (AWS CLI), consulte Trabajar con etiquetas mediante la línea de comandos.
Nota: Si recibe errores mientras ejecuta los comandos de AWS CLI, asegúrese de que está utilizando la versión más reciente de AWS CLI.
4.FSP A menos que los ID de subred se especifiquen explícitamente como anotaciones en el objeto de entrada o servicio, asegúrese de que las subredes tengan las siguientes etiquetas. Sin estas etiquetas, la detección automática de subred no funciona.
Etiqueta de subredes privadas:
- Clave: “kubernetes.io/role/internal-elb”
- Valor: “1”
Etiqueta de subredes públicas:
- Clave: “kubernetes.io/role/elb”
- Valor: “1”
Verifique las anotaciones del objeto de entrada o servicio
Compruebe las anotaciones del objeto de servicio o las anotaciones del objeto de entrada. Las anotaciones necesarias para configurar un balanceador de carga son las siguientes:
Nota: Otras anotaciones utilizan valores predeterminados. Para obtener una lista de todas las anotaciones disponibles que admite el controlador del equilibrador de carga de AWS para el equilibrio de carga de aplicaciones, consulte Anotaciones de entrada en GitHub. Para obtener una lista de todas las anotaciones disponibles que admite el controlador del equilibrador de carga de AWS para el equilibrio de carga de red, consulte Anotaciones de servicio en GitHub.
Equilibrador de carga de aplicación
- kubernetes.io/ingress.class: alb: IngressClassParams es una definición de recursos personalizada (CRD) específica del controlador del equilibrador de carga de AWS. Este CRD se puede utilizar junto con el campo de parámetros de IngressClass. Puede usar IngressClassParams para aplicar la configuración de un conjunto de entradas.
Equilibrador de carga de red
- Con destinos IP: service.beta.kubernetes.io/aws-load-balancer-type: “external” service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: “ip”
- Con destinos de instancia: service.beta.kubernetes.io/aws-load-balancer-type: “external” service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: “instance”
Ejecute uno de los comandos siguientes para ver el objeto de servicio o entrada. En el siguiente ejemplo, sustituya SERVICE-NAME/INGRESS-NAME y NAMESPACE por los valores correctos para el caso de uso.
kubectl describe service <SERVICE-NAME> -n <NAMESPACE> kubectl describe ingress <INGRESS-NAME> -n <NAMESPACE>
Ejecute uno de los comandos siguientes para editar el objeto de servicio o entrada. En los siguientes ejemplos, sustituya SERVICE-NAME/INGRESS-NAME y NAMESPACE por los valores correctos para el caso de uso:
kubectl edit service <SERVICE-NAME> -n <NAMESPACE> kubectl edit ingress <INGRESS-NAME> -n <NAMESPACE>
Revise los registros del pod del controlador del equilibrador de carga de AWS para obtener información adicional
Ejecute el siguiente comando para revisar los registros del controlador del balanceador de carga de AWS:
kubectl logs -n kube-system deployment.apps/aws-load-balancer-controller
Si ninguno de los pods del controlador muestra registros, asegúrese de que los pods del controlador estén en ejecución:
kubectl get deployment -n kube-system aws-load-balancer-controller
Si el clúster se ejecuta en Fargate, compruebe que se haya creado un perfil de Fargate para el espacio de nombres en el que reside el objeto de entrada o servicio
El tipo de destino de IP es obligatorio cuando los pods de destino se ejecutan en Fargate. Ejecute los siguientes comandos para comprobar que se haya creado un perfil de Fargate para el espacio de nombres en el que reside el objeto de entrada o servicio. En el siguiente ejemplo, reemplace CLUSTER-NAME por el nombre del clúster.
eksctl get fargateprofile --cluster <CLUSTER-NAME> -o yaml
Para crear un perfil de Fargate, ejecute el siguiente comando. En el siguiente ejemplo, sustituya CLUSTER-NAME, REGION, FARGATE-PROFILE-NAME y NAMESPACE por los valores correctos para el caso de uso.
eksctl create fargateprofile --cluster <CLUSTER-NAME> --region <REGION> --name <FARGATE-PROFILE-NAME> --namespace <NAMESPACE>
Compruebe si hay dependencias sin abordar
Amazon EKS añade las siguientes reglas al grupo de seguridad del nodo:
- Una regla de entrada para el tráfico de clientes
- Una regla de entrada para cada subred del equilibrador de carga de la VPC para cada equilibrador de carga de red que cree (para las comprobaciones de estado).
Puede producirse un error en la implementación de un servicio de tipo LoadBalancer si Amazon EKS intenta crear reglas que superen la cuota del número máximo de reglas permitido para un grupo de seguridad.
Revise la documentación para asegurarse de que se cumplen todas las dependencias. Para el equilibrador de carga de aplicación, consulte Equilibrio de carga de aplicaciones en Amazon EKS. Para el equilibrador de carga de red, consulte Balanceador de carga de red en Amazon EKS. Por ejemplo, si utiliza un equilibrador de carga de aplicación, el objeto de servicio debe especificar NodePort o LoadBalancer para utilizar el modo de tráfico de instancias.

Contenido relevante
- OFICIAL DE AWSActualizada hace 5 meses
- OFICIAL DE AWSActualizada hace 9 meses
- OFICIAL DE AWSActualizada hace 2 meses
- OFICIAL DE AWSActualizada hace 6 meses