GKE のリリースノート(コンテナネイティブなロードバランス)を読み解くのに必要な知識は、公式ドキュメントのどこに書いてあるか?

Hiroki Tanaka
google-cloud-jp
Published in
6 min readOct 9, 2019

Google Cloud のカスタマーエンジニアの田中です。

最近 GKE でコンテナネイティブなロードバランスの機能を正式サポートしたという発表がありました。

コンテナネイティブなロードバランス機能を使うと、KubernetesのIngressコントローラに新しくNetwork Endpoint Groups(NEG)と呼ばれるレイヤが組み込まれ、コンテナに対して直接負荷分散を行うことで、従来にくらべてコンテナに到達するまでのホップ数を減らし、レイテンシーの向上を期待できる場合があります。

ところでこの機能を使うには、発表記事の一番下の方にも記載があるのですが、GKE クラスタでVPC-native を有効化している必要があります。

You can use container-native load balancing in several scenarios. For example, you can create an Ingress using NEGs with VPC-native GKE clusters created using Alias IPs.

VPC-nativeってなに?という場合はこのリリース内容を正確に理解できなくってしまうので、GKEのリリースノートを正確に読み解くには前提条件となる知識が求められることがあります。

この記事では、それが公式ドキュメント内のどこに書いてあるかをご紹介したいと思います。今回は特にVPC-native に関連した文書の探し方についてです。

元の発表記事のVPC nativeに関する記載部分に、別の記事へのリンクがあります。この「ネットワークの概要」というヘルプ記事ですが、
https://cloud.google.com/kubernetes-engine/docs/concepts/network-overview?hl=ja

読み進んでいくと、、、

各サービスには、クラスタの VPC ネットワークから割り当てられた、ClusterIP という IP アドレスがあります。オプションで、クラスタの作成時に VPC ネットワークをカスタマイズできます。
詳細については、エイリアス IP を使用した VPC ネイティブ クラスタの作成をご覧ください。

という記載があるのみです。さらにリンク先のヘルプ記事も VPC-native クラスタを構築する方法は詳しく書かれていますが、VPC-native のメカニズムについての詳しい説明ではありません。

他にもGKEのヘルプ記事を色々読み込んで見ましたが、詳しいヘルプ記事は見つかりませんでした。

そこで、GKE以外のヘルプ記事を探し始めてみました。ネットワークに関連する話なので、VPCのドキュメントが該当しそうです。

VPC NativeはAlias IPを使用するというは知っていたので、Aliast IPのドキュメントを探してみました。見つけたヘルプ記事がこちら。

エイリアスIP範囲の概要
https://cloud.google.com/vpc/docs/alias-ip

Google Cloud Platform(GCP)のエイリアス IP 範囲を使用すると、仮想マシン(VM)のネットワーク インターフェースに内部 IP アドレスの範囲をエイリアスとして割り当てることができます。VM で複数のサービスを実行している場合、各サービスに異なる IP アドレスを割り当てると便利です。エイリアス IP 範囲は GKE ポッドでも動作します。

このヘルプ記事の冒頭にもこのように書かれている通り、まさにこの「エイリアスIP範囲はGKEポッドでも動作します」がVPC Nativeのことですね。

IP エイリアス設定を使用すると、独立したネットワーク インターフェースを定義せずに、VM にホストされているコンテナまたはアプリケーションを表す複数の内部 IP アドレスを構成できます。VM にエイリアス IP 範囲を割り当てる際は、サブネットのプライマリ範囲またはセカンダリ範囲のいずれかから割り当てます。

K8SクラスタのNodeの内部にあるPodのネットワークに対して、この Alias IP を利用することができるということですね。わかりやすいアーキテクチャも記載があります。

この記事を読むことで、VPC-native を有効にしたクラスタとは、VPCネットワーク内のサブネットをそのまま Pod 内ネットワークで使用するという意味であることがわかります。また Alias IP とは VPC ネットワークの用語で表現すれば Secondaly IP になります。

VPC-nativeのクラスタに対して、VPC-nativeではないクラスタは、ルートベースのクラスタと呼ばれます。ルートベースからVPC-nativeのクラスタに変更する場合はクラスタ自体の再作成が必要になるので注意して下さい。

他の注意点としてVPCサブネットを使用するので、Alias IPに使用したサブネットは、VPCのサブネット IP 範囲として消費され、VPC内のリソース消費に影響を与えます。サブネットを作れる数もVPCのQuotaに制限されます。
https://cloud.google.com/vpc/docs/quota

また、VPC Peering や Shared VPC を使っていた場合には、接続先の VPC 内のサブネット IP 範囲と、この Alias IP で使用しているサブネット IP 範囲は重複することはできません。

そのため、ルートベースのクラスタから、VPC-nativeのクラスタに再構築する場合には、こうした制限にも十分注意する必要があります。

GKEのことなので、GKEの公式ドキュメントだけを探せば必要な情報はみつかるか??というとそうでもありません。

必要に応じて別の製品の公式ドキュメントも探してみてくださいね。ということでした!

--

--

Hiroki Tanaka
google-cloud-jp

Customer Engineer at @GoogleCloud. Disclaimer. Opinions are my own, NOT the views of my employer. All posts here are my personal opinion.