このページでは、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_IPNEG を作成します。 - 転送ルール、バックエンド サービス、ヘルスチェックの割り当てが適用されます。詳細については、割り当てと上限をご覧ください。
- アノテーションとともに 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 が更新され