View a markdown version of this page

Compartilhar grupos de destino de vários clusters - Amazon EKS

Ajudar a melhorar esta página

Para contribuir com este guia de usuário, escolha o link Editar esta página no GitHub, disponível no painel direito de cada página.

Compartilhar grupos de destino de vários clusters

Por padrão, o controlador do balanceador de carga do Modo Automático do Amazon EKS assume controle total sobre os grupos de destino que ele configura. Quando um grupo de destino é registrado no controlador, ele cancela o registro de todos os destinos que não estão atualmente no cluster. Isso garante que o grupo de destino reflita o conjunto exato de destinos gerenciados por esse cluster.

A habilitação do suporte a MultiCluster altera esse comportamento. Um grupo de destino com o suporte a MultiCluster habilitado pode ser associado a vários clusters do Kubernetes ou oferecer suporte a destinos arbitrários de outras fontes. Cada cluster registra e cancela o registro somente dos destinos que possui, em vez de cancelar o registro de destinos que pertencem a outros clusters ou fontes.

Como funciona

Quando o suporte a MultiCluster está habilitado, cada cluster rastreia o conjunto de destinos que gerencia e reconcilia somente os destinos no grupo de destino compartilhado. O Modo Automático do Amazon EKS armazena os destinos rastreados de cada cluster em um Kubernetes ConfigMap denominado eks-lbc-targets-<targetgroupbinding-name>, no mesmo namespace dos recursos do balanceador de carga.

nota

O AWS Load Balancer Controller upstream armazena esse estado em um ConfigMap com o prefixo aws-lbc-targets-. No Modo Automático do Amazon EKS, o prefixo é eks-lbc-targets-, então, ao seguir as orientações upstream, inspecione o ConfigMap eks-lbc-targets-.

O balanceador de carga distribui o tráfego igualmente em todos os destinos registrados. O controlador não é compatível com a distribuição ponderada entre clusters. O suporte a MultiCluster funciona com os tipos de destino ip e instance.

Habilitar o suporte a MultiCluster

Habilite o suporte a MultiCluster usando um dos seguintes métodos, dependendo do tipo de recurso:

  • TargetGroupBinding: defina spec.multiClusterTargetGroup: true.

  • Ingress (ALB): adicione a anotação alb.ingress.kubernetes.io/multi-cluster-target-group: "true".

  • Service (NLB): adicione a anotação service.beta.kubernetes.io/aws-load-balancer-multi-cluster-target-group: "true".

Considerações sobre o Modo automático do Amazon EKS

O guia upstream MultiCluster Target Groups em AWS Load Balancer Controller no site do GitHub explica o compartilhamento de um grupo de destino entre dois clusters. Para uma discussão mais ampla sobre arquiteturas de vários clusters, consulte Building resilient multi-cluster applications with Amazon EKS no Blog da AWS. O mesmo fluxo funciona no Modo Automático do Amazon EKS com as seguintes diferenças:

  • O recurso TargetGroupBinding personalizado está no grupo de APIs eks.amazonaws.com/v1, não em elbv2.k8s.aws/v1beta1.

  • O controlador IngressClass é eks.amazonaws.com/alb.

  • Não defina a anotação alb.ingress.kubernetes.io/tags. A política AmazonEKSLoadBalancingPolicy gerenciada restringe aws:TagKeys a uma lista de permissões, portanto, as tags personalizadas causam um erro de acesso negado e o controlador não consegue reconciliá-las. Isso pode fazer com que o finalizador do Ingress fique travado na exclusão.

  • Todos os clusters participantes devem estar na mesma VPC, pois um grupo de destino tem como escopo uma única VPC.

Exemplo

Para uma explicação passo a passo que compartilha um único grupo de destino entre dois clusters (um cluster que possui o balanceador de carga por meio de um Ingress e o outro que se une por meio de um TargetGroupBinding), consulte Compartilhar um grupo de destino entre dois clusters.