View a markdown version of this page

Uso compartido de un grupo de destino entre dos 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.

Uso compartido de un grupo de destino entre dos clústeres

En el siguiente ejemplo, se comparte un grupo de destino entre dos clústeres. El primer clúster es propietario del equilibrador de carga de aplicación a través de una entrada, mientras que el segundo clúster se une al grupo de destino compartido mediante un TargetGroupBinding creado manualmente. Antes de comenzar, consulte Configuración de grupos de destino de varios clústeres para comprender cómo funciona la compatibilidad con varios clústeres y cómo habilitarla.

Clúster 1: propietario del equilibrador de carga a través de una entrada

Implemente la aplicación (por ejemplo, una implementación con un servicio NodePort) y, a continuación, cree una IngressClass y una Ingress que contenga la anotación de varios clústeres.

apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: alb-mc spec: controller: eks.amazonaws.com/alb --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: echoserver namespace: echoserver annotations: alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/target-type: instance alb.ingress.kubernetes.io/multi-cluster-target-group: "true" spec: ingressClassName: alb-mc rules: - http: paths: - path: / pathType: Exact backend: service: name: echoserver port: number: 80

El controlador aprovisiona el equilibrador de carga y genera un TargetGroupBinding con spec.multiClusterTargetGroup: true. Tenga en cuenta los siguientes valores del TargetGroupBinding generado y del servicio, el segundo clúster necesita los tres:

  • la , targetGroupARN.

  • El nodePort del servicio.

  • El ID del grupo de seguridad del equilibrador de carga de spec.networking.ingress[].from[].securityGroup.groupID.

Clúster 2: unión al grupo de destino compartido mediante TargetGroupBinding

Implemente la misma aplicación, fije el servicio al nodePort del clúster 1 y, a continuación, cree un TargetGroupBinding que haga referencia al ARN del grupo de destino y al ID del grupo de seguridad del clúster 1.

apiVersion: eks.amazonaws.com/v1 kind: TargetGroupBinding metadata: name: mc-echoserver namespace: echoserver spec: multiClusterTargetGroup: true serviceRef: name: echoserver port: 80 targetGroupARN: <cluster-1-target-group-arn> targetType: instance networking: ingress: - from: - securityGroup: groupID: <cluster-1-alb-security-group-id> ports: - port: <cluster-2-node-port> protocol: TCP

Con la compatibilidad con varios clústeres habilitada en ambos enlaces, cada clúster registra y anula el registro solo de sus propios destinos. Los nodos de ambos clústeres se mantienen en buen estado en el único grupo de destino compartido, mientras que el equilibrador de carga distribuye el tráfico entre todos ellos.