¿Cómo puedo solucionar problemas al crear un equilibrador de carga con el controlador del equilibrador de carga de AWS?

7 minutos de lectura
0

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

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.


OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año