Containers & Kubernetes

GKE のコンテナ ネイティブ負荷分散機能を一般向けにリリース

google cloud header generic

※この投稿は米国時間 2019 年 9 月 21 日に Cloud Blog に 投稿されたものの抄訳です。 

昨年 Google は、コンテナ ネイティブ負荷分散機能を発表しました。この機能を使用するとネットワーク エンドポイント グループ(NEG)を使用してサービスを作成できるため、サービスを処理するコンテナにサービス リクエストの負荷を直接分散できます。Google ではベータ版の発表以来、コンテナ ネイティブ負荷分散機能のパフォーマンス、スケーラビリティ、ユーザー エクスペリエンスの向上に努めてきましたが、この機能がいよいよ一般向けにリリースされることになりました。

コンテナ ネイティブ負荷分散機能を使用すると、Google Kubernetes Engine(GKE)クラスタ内でコンテナを実行する仮想マシンと、リクエストを処理するコンテナの間のセカンドホップが不要になるため、効率性とトラフィックの可視性が向上し、高度なロードバランサ機能をコンテナでサポートできるようになります。このコンテナ ネイティブ負荷分散機能を実現する NEG 抽象化レイヤは、Google Cloud Platform(GCP)で稼働する Kubernetes Ingress コントローラと統合されています。マルチレイヤ環境で GKE を使用して 1 つまたは複数のサービスをインターネットに公開する必要がある場合も、Ingress オブジェクトを作成すれば、HTTP(S) ロードバランサをプロビジョニングして、バックエンド サービスへのルーティングをパスまたはホストを基準にして構成できます。
Ingress_support_KJr9zxS.gif
図 1: インスタンス グループによる Ingress サポートとネットワーク エンドポイント グループによる Ingress サポート

コンテナ ネイティブ負荷分散機能の改善点

ベータ期間中にユーザーの皆様からお寄せいただいたフィードバックに基づき、NEG を使用するコンテナ ネイティブ負荷分散機能を強化しました。コンテナ ネイティブ負荷分散機能には(IP テーブルに基づく)従来のアプローチに比べてさまざまな利点があるだけでなく、次のような特長もあり
ます。

レイテンシの改善: 負荷分散されたアプリケーションをポッド バックエンドがゼロになるまでスケールダウンした後で再びスケールアップする際のレイテンシが 90% 以上短縮されています。これにより低トラフィック サービスの応答時間が大幅に短縮されるため、トラフィックが発生したときにゼロのポッドからすばやく再スケールアップできます。 

Kubernetes 統合の改善: Kubernetes の PodReadinessGate 機能を使用すると、ポッドのロードバランサ ヘルスチェックが成功してポッドが正常であることが確認されたときに、ロードバランサのバックエンド ポッドが「使用可能」な状態であると見なされます。そのため、ポッドが使用可能な状態になり、トラフィックを処理するように完全に構成されるまで、ローリング アップデートは進行しません。さらに、不要なレイテンシを増やすことなく、Kubernetes のネイティブ API を使用してロードバランサとバックエンド ポッドを管理できるようになりました。 

スタンドアロン NEG(ベータ版): (GKE 上に HTTP/S ベースの Ingress を作成しなくても)スタンドアロン NEG を使用して独自のロードバランサを管理できるようになり、Google Cloud Load Balancing の一部の動作を構成して管理できるようになりました。これらの動作には、外部トラフィックを対象とした TCP プロキシまたは SSL プロキシベースの負荷分散、内部トラフィックを対象とした HTTP(S) ベースの負荷分散(ベータ版)、内部トラフィックを対象とした Traffic Director によるグローバル負荷分散が含まれます。また、ハイブリッド バックエンド(GKE ポッドと Compute Engine 仮想マシン)を使用するロードバランサや、複数の GKE クラスタにまたがるバックエンドを使用するロードバランサも作成できます。


コンテナ ネイティブ負荷分散機能を使ってみる

コンテナ ネイティブ負荷分散機能はさまざまなシナリオで使用できます。たとえば、エイリアス IP を使用して作成された VPC ネイティブの GKE クラスタによって、NEG を使った Ingress を作成できます。これにより、ポッドの IP ルーティングをネイティブでサポートできるようになり、アドバタイジング接頭辞も使用可能になります。コンテナ ネイティブ負荷分散を使用して Ingress を作成する方法をご覧ください。また、NEG の使用方法や GCP に追加してほしいその他のネットワーキング機能などに関する皆様のご意見やアイデアをぜひお寄せください


- By Neha Pattan, Staff Software Engineer and Minhan Xia, Software Engineer