View a markdown version of this page

Configuración de grupos de destino de varios clústeres - Amazon EKS

Ayude a mejorar esta página

Para contribuir a esta guía del usuario, elija el enlace Edit this page on GitHub que se encuentra en el panel derecho de cada página.

Configuración de grupos de destino de varios clústeres

De forma predeterminada, el controlador del equilibrador de carga del modo automático de Amazon EKS asume el control completo sobre los grupos de destino que configura. Cuando un grupo de destino se registra en el controlador, anula el registro de todos los destinos que no estén actualmente en el clúster. Esto garantiza que el grupo de destino refleje el conjunto exacto de destinos administrados por el clúster.

Al habilitar la compatibilidad con varios clústeres, se cambia este comportamiento. Un grupo de destino con la compatibilidad con varios clústeres habilitada puede estar asociado a varios clústeres de Kubernetes o admitir destinos arbitrarios de otros orígenes. Cada clúster registra y anula el registro solo de los destinos de su propiedad, en lugar de anular el registro de los destinos que pertenecen a otros clústeres u orígenes.

Funcionamiento

Cuando se habilita la compatibilidad con varios clústeres, cada clúster hace un seguimiento del conjunto de destinos que administra y concilia solo esos destinos en el grupo de destino compartido. El modo automático de Amazon EKS almacena los objetivos rastreados de cada clúster en un ConfigMap de Kubernetes denominado eks-lbc-targets-<targetgroupbinding-name>, en el mismo espacio de nombres que los recursos del equilibrador de carga.

nota

El controlador del equilibrador de carga de AWS ascendente almacena este estado en un ConfigMap con el prefijo aws-lbc-targets-. En el modo automático de Amazon EKS, el prefijo es eks-lbc-targets- en su lugar, por lo que, si sigue las instrucciones ascendentes, inspeccione el ConfigMap eks-lbc-targets-.

El equilibrador de carga distribuye el tráfico por igual entre todos los destinos registrados. El controlador no admite la distribución ponderada entre clústeres. La compatibilidad con varios clústeres funciona tanto con el tipo de destino ip como instance.

Habilitación de la compatibilidad con varios clústeres

Habilite la compatibilidad con varios clústeres mediante uno de los siguientes métodos, en función del tipo de recurso:

  • TargetGroupBinding: establezca spec.multiClusterTargetGroup: true.

  • Ingreso (ALB): agregue la anotación alb.ingress.kubernetes.io/multi-cluster-target-group: "true".

  • Servicio (NLB): agregue la anotación service.beta.kubernetes.io/aws-load-balancer-multi-cluster-target-group: "true".

Consideraciones para el modo automático de Amazon EKS

La guía sobre grupos de destino de varios clústeres ascendente del sitio web de GitHub del controlador del equilibrador de carga de AWS explica cómo compartir un grupo de destino entre dos clústeres. Para obtener un análisis más amplio de las arquitecturas de varios clústeres, consulte Creación de aplicaciones resilientes de varios clústeres con Amazon EKS en el blog de AWS. El mismo flujo funciona en el modo automático de Amazon EKS con las siguientes diferencias:

  • El recurso personalizado TargetGroupBinding está en el grupo de API eks.amazonaws.com/v1 en lugar de elbv2.k8s.aws/v1beta1.

  • El controlador IngressClass es eks.amazonaws.com/alb.

  • No establezca la anotación alb.ingress.kubernetes.io/tags. La política administrada AmazonEKSLoadBalancingPolicy restringe aws:TagKeys a una lista de permitidos, por lo que las etiquetas personalizadas provocan un error de acceso denegado y el controlador no puede conciliarlas. Esto puede provocar que el finalizador de ingreso se atasque al eliminarlo.

  • Todos los clústeres participantes deben estar en la misma VPC, ya que un grupo de destino está limitado a una sola VPC.

Ejemplo

Para obtener un tutorial paso a paso en el que se comparte un solo grupo de destino entre dos clústeres (uno que es propietario del equilibrador de carga a través de un ingreso y otro que se une a través de TargetGroupBinding), consulte Uso compartido de un grupo de destino entre dos clústeres.