内部ロードバランサを作成する

このページでは、Google Kubernetes Engine(GKE)で内部パススルー ネットワーク ロードバランサまたは内部ロードバランサを作成する方法について説明します。外部パススルー ネットワーク ロードバランサを作成する場合は、LoadBalancer タイプの Service を作成するをご確認ください。

このページを読む前に、次の内容をよく理解しておいてください。

内部パススルー ネットワーク ロードバランサの使用

内部パススルー ネットワーク ロードバランサにより、クラスタの VPC ネットワーク内に配置されたクライアントと、クラスタの VPC ネットワークに接続されたネットワーク内のクライアントが、クラスタの Service にアクセスできるようになります。クラスタの VPC ネットワーク内のクライアントは、クラスタのノードまたは Pod にすることも、クラスタ外の VM にすることもできます。接続されたネットワーク内のクライアントからの接続の詳細については、内部パススルー ネットワーク ロードバランサと接続ネットワークをご覧ください。

GKE のサブセット化の使用

GKE のサブセット化は、インスタンス グループではなく GCE_VM_IP ネットワーク エンドポイント グループ(NEG)をバックエンドとして使用するため、内部 LoadBalancer Service のスケーラビリティを向上させます。GKE のサブセット化を有効にすると、GKE は内部 LoadBalancer Service のコンピューティング ゾーンごとに 1 つの NEG を作成します。

Service の externalTrafficPolicy は、GCE_VM_IP NEG バックエンドのノード メンバーシップを制御します。詳細については、GCE_VM_IP NEG バックエンドのノード メンバーシップをご覧ください。

ゾーン アフィニティの使用

内部パススルー ネットワーク ロードバランサでゾーン アフィニティを有効にすると、GKE はゾーンから発生したトラフィックを同じゾーン内のノードと Pod に転送します。ゾーンに正常な Pod がない場合、GKE はトラフィックを別のゾーンに転送します。この実装では、レイテンシとコストが最適化されます。

GKE クラスタでゾーン アフィニティを有効にするには、GKE サブセット化が有効になっている必要があります。

要件と制限事項

内部ロードバランサの要件と制限事項は次のとおりです。

要件

GKE のサブセット化には次の要件と制限事項があります。

  • GKE バージョン 1.18.19-gke.1400 以降では、新規および既存の Standard クラスタの GKE のサブセット化を有効にできます。GKE のサブセット化を有効にすると、無効にすることはできません。
  • Autopilot クラスタでは、GKE のサブセット化がデフォルトで無効になっています。ただし、クラスタの作成後に有効にすることはできます。
  • GKE のサブセット化を使用するには、HttpLoadBalancing アドオンを有効にする必要があります。このアドオンはデフォルトで有効になっています。Autopilot クラスタでは、この必要なアドオンを無効にすることはできません。
  • ネットワーク エンドポイント グループの割り当てが適用されます。 Google Cloud は、内部 LoadBalancer Service ごとに、ゾーンあたり 1 つの GCE_VM_IP NEG を作成します。
  • 転送ルール、バックエンド サービス、ヘルスチェックの割り当てが適用されます。詳細については、割り当てと上限をご覧ください。
  • アノテーションとともに GKE のサブセット化を使用して、複数のロードバランサ(alpha.cloud.google.com/load-balancer-backend-share)間でバックエンド サービスを共有することはできません。
  • Google Cloud CLI のバージョン 345.0.0 以降が必要です。

ゾーン アフィニティには次の要件があります。

  • GKE バージョン 1.33.3-gke.1392000 以降では、新規および既存のクラスタでゾーン アフィニティを有効にできます。
  • GKE のサブセット化が有効になっている必要があります。
  • クラスタで HttpLoadBalancing アドオンが有効になっている必要があります。このアドオンはデフォルトで有効になっており、クラスタがバックエンド サービスを使用するロードバランサを管理できるようになっています。
  • LoadBalancer Service マニフェストに spec.trafficDistribution: PreferClose を含める必要があります。

LoadBalancer Service マニフェストでは、externalTrafficPolicy: Local または externalTrafficPolicy: Cluster のいずれかを使用できます。

制限事項

内部パススルー ネットワーク ロードバランサ

  • Kubernetes バージョン 1.7.4 以降を実行しているクラスタでは、自動モードのサブネットだけでなく、カスタムモードのサブネットの内部ロードバランサも使用できます。
  • Kubernetes バージョン 1.7.X 以降を実行しているクラスタは、--purpose フラグを SHARED_LOADBALANCER_VIP に設定した予約済み IP アドレスを作成した場合、内部パススルー ネットワーク ロードバランサに対する予約済み IP アドレスの使用をサポートします。詳しい手順については、共有 IP の有効化をご覧ください。GKE は、Service がその目的で内部 IP アドレスを参照する場合にのみ、内部パススルー ネットワーク ロードバランサの IP アドレスを保持します。それ以外の場合、Service が更新され