View a markdown version of this page

マルチクラスターターゲットグループを設定する - Amazon EKS

このページの改善にご協力ください

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。

マルチクラスターターゲットグループを設定する

デフォルトでは、Amazon EKS Auto Mode ロードバランサーコントローラーは、設定したターゲットグループの完全な制御を引き受けます。ターゲットグループがコントローラーに登録されると、現在クラスターにないターゲットが登録解除されます。これにより、ターゲットグループには、そのクラスターによって管理されるターゲットの正確なセットが反映されます。

MultiCluster サポートを有効にすると、この動作が変更されます。MultiCluster サポートが有効になっているターゲットグループは、複数の Kubernetes クラスターに関連付けることも、他のソースからの任意のターゲットをサポートすることもできます。各クラスターは、他のクラスターまたはソースに属するターゲットを登録解除する代わりに、所有するターゲットのみを登録および登録解除します。

仕組み

MultiCluster サポートが有効になっている場合、各クラスターは管理するターゲットのセットを追跡し、共有ターゲットグループ内のそれらのターゲットのみを調整します。Amazon EKS Auto Mode は、各クラスターの追跡されたターゲットを、ロードバランサーリソースと同じ名前空間の ConfigMap という名前の Kubernetes eks-lbc-targets-<targetgroupbinding-name> に保存します。

注記

アップストリームの AWS Load Balancer Controller は、この状態を aws-lbc-targets- プレフィックスを持つ ConfigMap に保存します。Amazon EKS Auto Mode では、プレフィックスは eks-lbc-targets- になるため、アップストリームガイダンスに従うときは、eks-lbc-targets- ConfigMap を検査します。

ロードバランサーは、登録されたすべてのターゲット全体にトラフィックを均等に分散します。コントローラーは、クラスター間の加重分散をサポートしていません。MultiCluster サポートは、ipinstance の両方のターゲットタイプで動作します。

MultiCluster サポートを有効にする

リソースタイプに応じて、次のいずれかの方法を使用して MultiCluster サポートを有効にします。

  • TargetGroupBindingspec.multiClusterTargetGroup: true を設定します。

  • Ingress (ALB) – 注釈 alb.ingress.kubernetes.io/multi-cluster-target-group: "true" を追加します。

  • Service (NLB) – 注釈 service.beta.kubernetes.io/aws-load-balancer-multi-cluster-target-group: "true" を追加します。

Amazon EKS 自動モードの考慮事項

AWS Load Balancer Controller GitHub ウェブサイトのアップストリーム MultiCluster Target Groups ガイドでは、2 つのクラスター間で 1 つのターゲットグループを共有する方法について説明します。マルチクラスターアーキテクチャの詳細については、AWS ブログの「Amazon EKS を使用した回復力のあるマルチクラスターアプリケーションの構築」を参照してください。Amazon EKS Auto Mode でも同じフローが動作しますが、次の違いがあります:

  • TargetGroupBinding カスタムリソースは、elbv2.k8s.aws/v1beta1 ではなく eks.amazonaws.com/v1 API グループにあります。

  • IngressClass コントローラーは eks.amazonaws.com/alb です。

  • alb.ingress.kubernetes.io/tags 注釈を設定しないでください。AmazonEKSLoadBalancingPolicy マネージドポリシーは aws:TagKeys を許可リストに制限するので、カスタムタグはアクセス拒否エラーを引き起こし、コントローラーはそれらを調整できません。これにより、Ingress ファイナライザーが削除時にスタックする可能性があります。

  • ターゲットグループは 1 つの VPC にスコープされているため、すべての参加クラスターは同じ VPC 内にある必要があります。

2 つのクラスター間で 1 つのターゲットグループを共有するステップバイステップの説明については、2 つのクラスター間でターゲットグループを共有する を参照してください。ここでは、1 つのクラスターは Ingress を介してロードバランサーを所有し、もう 1 つのクラスターは TargetGroupBinding を介して結合します。