View a markdown version of this page

두 클러스터 간에 대상 그룹 공유 - Amazon EKS

이 페이지 개선에 도움 주기

이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다.

두 클러스터 간에 대상 그룹 공유

다음 예제에서는 두 클러스터 간에 하나의 대상 그룹을 공유합니다. 첫 번째 클러스터는 Ingress를 통해 Application Load Balancer를 소유하고 두 번째 클러스터는 수동으로 생성된 TargetGroupBinding을 통해 공유 대상 그룹에 조인합니다. 시작하기 전에 다중 클러스터 대상 그룹 구성를 검토하여 MultiCluster 지원의 작동 방식과 이를 활성화하는 방법을 이해하세요.

클러스터 1 - Ingress를 통해 로드 밸런서를 소유합니다.

애플리케이션(예: NodePort Service를 사용한 배포)을 배포한 다음 다중 클러스터 주석이 포함된 IngressClassIngress를 생성합니다.

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

컨트롤러는 로드 밸런서를 프로비저닝하고 spec.multiClusterTargetGroup: true를 사용하여 TargetGroupBinding을 생성합니다. 생성된 TargetGroupBinding 및 Service의 다음 값에 유의하세요. 두 번째 클러스터에는 세 가지 값이 모두 필요합니다.

  • targetGroupARN.

  • Service nodePort.

  • spec.networking.ingress[].from[].securityGroup.groupID의 로드 밸런서 보안 그룹 ID.

클러스터 2 - TargetGroupBinding을 통해 공유 대상 그룹에 조인

클러스터 1의 nodePort에 Service를 고정하여 동일한 애플리케이션을 배포한 다음 클러스터 1의 대상 그룹 ARN 및 보안 그룹 ID를+ 참조하는 TargetGroupBinding을 생성합니다.

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

두 바인딩 모두에서 MultiCluster 지원이 활성화된 경우 각 클러스터는 자체 대상만 등록 및 등록 취소합니다. 두 클러스터의 노드는 단일 공유 대상 그룹에서 정상 상태를 유지하며 로드 밸런서는 모든 노드에 트래픽을 분산합니다.