このページでは、Google Kubernetes Engine(GKE)Service の使用率ベースのロード バランシングについて説明します。これは、バックエンド Pod のリソース使用率の評価や、実際のワークロード容量を使用してトラフィックをインテリジェントに再調整し、アプリケーションの可用性と柔軟なルーティングを向上させるものです。
このページは、GKE でサービスを管理し、リアルタイムのリソース使用率に基づいてトラフィック分散を最適化するクラウド アーキテクトとネットワーキング スペシャリストを対象としています。
このページを読む前に、次のことを十分に理解しておいてください。
- GKE のコンセプト: GKE クラスタ、ノード、Pod など。
- Kubernetes サービス: Kubernetes 内でアプリケーションを公開する方法。
- Cloud Load Balancing: Cloud Load Balancing の一般的な理解、特にGoogle Cloud ロードバランサの仕組み。
- Kubernetes Gateway API: GKE でサービスを公開し、トラフィックを管理する推奨の方法。
- ネットワーク エンドポイント グループ(NEG): GKE Service が NEG を使用して Cloud Load Balancing と統合する方法。
- 基本リソース使用率指標: たとえば、CPU 使用率。これは、使用率ベースのロード バランシングに使用される現在の指標です。
概要
Cloud Load Balancing インフラストラクチャは、Pod の健全性と適格性を判断する標準のネットワーク到達性指標(HTTP、HTTPS、HTTP/2、gRPC など)に基づいて、トラフィックを GKE サービスに転送します。デフォルトでは、Pod の可用性と、必要に応じて定義されたトラフィック分散ポリシー(GCPTrafficDistributionPolicy
など)を考慮して、すべての正常なバックエンド Pod にトラフィックを転送します。
最新のアプリケーションは CPU 使用率を追跡するため、費用を把握し、パフォーマンスをモニタリングして、容量を効果的に管理できます。このニーズを満たすために、ロードバランサはリアルタイムのリソース使用率データを指標として使用します。これにより、各バックエンド Pod が処理できる最適なトラフィック量を特定し、インテリジェントなトラフィック分散を実現できます。
GKE Service の使用率ベースのロード バランシングは、リソース使用率を指標として評価し、バックエンド Pod がアプリケーション トラフィックを処理する能力を判断します。1 つ以上の Pod が過剰に使用されている場合は、トラフィックを他のバックエンドに再調整します。
機能とメリット
使用率ベースのロード バランシングには、次の利点があります。
アプリケーションの可用性を向上させる: バックエンドに負荷がかかっているときに、リソース使用率の低い Pod へのトラフィックを優先します。これにより、アプリケーションのパフォーマンスを維持し、速度低下や停止を防ぎ、ユーザーに信頼性の高いエクスペリエンスを提供できます。
柔軟なルーティングを提供する: ビジネス ユースケースに正確に沿ったトラフィック分散ポリシーを定義できる追加の指標セットを提供します。
使用率ベースのロード バランシングの仕組み
GKE Service の使用率ベースのロード バランシングにより、リソース負荷に対する応答性を高め、GKE で実行されるアプリケーションのトラフィック管理を強化します。アプリケーションは、異なるマシン上の多くのインスタンス(Pod)を使用して GKE で実行されます。トラフィックは主に次の 2 つの方法で受信されます。
クラスタの外部から(ノースサウス トラフィック): クラスタは、インターネットやその他の外部ソースからトラフィックを受信します。これはノースサウス トラフィックと呼ばれます。GKE 管理のロードバランサ(Gateway)は、クラスタ外からこのトラフィックを転送します。
クラスタ内から(East-West トラフィック): クラスタは、アプリケーションのさまざまな部分間、GKE クラスタ内の他のサービス間、または複数のクラスタ間でトラフィック フローを受信します。この内部トラフィック フローは、East-West トラフィックと呼ばれます。
GKE Service の使用率ベースのロード バランシングには、継続的なプロセスが含まれます。このプロセスでは、GKE エージェントが Pod の使用率指標を収集し、Cloud Load Balancing インフラストラクチャがトラフィックをインテリジェントに分散できるようにします。次の手順は、GKE Service の使用率ベースのロード バランシングが、リアルタイムのリソース使用量に基づいてアプリケーション トラフィックを管理する方法をまとめたものです。
アプリケーション ロードバランサ(Gateway)を使用して GKE Service を設定すると、GKE は各ゾーンに NEG を自動的に作成し、アプリケーションの Pod をこれらの NEG に割り当てます。最初は、トラフィック分散は基本的なヘルスチェックとデフォルト設定に依存します。
GKE Service を構成して、CPU などのリソース使用率をロード バランシングの主要な指標として使用します。
特別な GKE エージェントが Pod のリソース使用率(CPU など)を継続的にモニタリングし、このデータを Cloud Load Balancing インフラストラクチャに定期的に送信します。Pod に複数のコンテナがある場合、エージェントはそれらの使用率を組み合わせて計算します。
Cloud Load Balancing インフラストラクチャは、リアルタイムの使用率データを分析して、トラフィックの分散を動的に調整します。各 Pod グループ(各ゾーン NEG)に送信するトラフィック量を、平均リソース使用率(CPU 負荷など)やネットワーク レイテンシなどの他の要因を評価して決定します。このプロセスでは、負荷の高い Pod から負荷の低い Pod にトラフィックが自動的に移行され、最も近いリージョン全体でリソースが効率的に使用されます。
次の例は、使用率ベースのロード バランシングの仕組みを示しています。
例: 使用率の高い Pod の処理
Service が同じ Pod 内で複数のコンテナを実行している場合、GKE 指標エージェントは各コンテナのリソース使用量を個別にレポートします。Cloud Load Balancing インフラストラクチャは、使用率の加重平均を計算して、Pod の合計容量を取得します。

図 1 は、Cloud Load Balancing が GKE からのリアルタイム CPU 使用率指標を使用して、複数のゾーンにデプロイされた Pod 間のトラフィック分散を最適化する方法を示しています。クライアント リクエストは、GKE Gateway を介して、3 つのゾーンにまたがって NEG にグループ化されたバックエンド Pod に転送されます。
ゾーン 1 では、Pod は 90% の CPU 使用率を報告します。ロードバランサは、過負荷を防ぐためにこの Pod へのトラフィックを減らします。
ゾーン 2 では、Pod の CPU 使用率は 60% で、トラフィックの受信を継続しています。
ゾーン 3 では、Pod は CPU 使用率が 40% と低く、トラフィックが増加する可能性があります。GKE は、メタデータと使用率指標を Cloud Load Balancing インフラストラクチャに継続的に送信します。これにより、トラフィック ルーティングがインテリジェントに調整され、アプリケーションのパフォーマンスと可用性が維持されます。
サービスが最大 CPU 使用率 80% に構成されているシナリオを考えてみましょう。ゾーン 1 の Pod が CPU 使用率 90% を報告し、しきい値を超えると、次のようになります。
- Cloud Load Balancing インフラストラクチャは、この過剰使用を検出します。
- その後、トラフィックをインテリジェントに再調整し、ゾーン 1 の Pod に送信するトラフィック量を減らします。この再調整は、そのゾーンの Pod の平均 CPU 使用率が 80% の使用率しきい値を下回るまで続きます。
- ゾーン 1 の Pod が CPU 使用率の低下(80% のしきい値未満)を報告すると、Cloud Load Balancing インフラストラクチャはトラフィック分散を再評価します。次に、サービスをバックアップするすべての Pod 間でトラフィックの再調整を徐々に行い、使用率に基づいてトラフィックの効率的な分散を継続します。