[クラウド/ネットワーク] GKEの34.x帯域とEKSの100.64.x帯域、一体その正体は何だろう? 🕵️‍♂️☁️

こんにちは!今日は、クラウドネイティブ環境を扱う中で一度は遭遇するであろう「見慣れないIP帯域」についてお話ししたいと思います。

Kubernetesを運用していると、時々「あれ?うちの会社のVPC帯域は10.0.0.0/16なのに、なんで34.x.x.xが表示されるんだろう?」とか「AWS EKSのPod IPがなんで100.64.x.xなんだろう?」という疑問を抱くことがあります。

この二つのケースは異なる理由で生まれたものですが、結局はクラウドネットワークの構造的限界とIPリソース管理という共通のテーマを持っています。GKEとEKSがそれぞれネットワークをどのように扱っているのか、詳しく掘り下げていきましょう! 🚀

image


1. GKE (Google Kubernetes Engine)と34.x.x.x帯域の秘密 🇬

「私のクラスターはプライベートなのに、なぜマスターノードはパブリックIPを使うのだろう?」

GKEを作成し、`kubectl cluster-info`を実行すると、マスター(コントロールプレーン)のアドレスが34.118.x.xのようなGoogleのパブリックIPとして表示されるのがわかります。

🏗️ 構造的理由:管理領域の分離

GKEはアーキテクチャが独特です。

  • User VPC (ワーカーノード): 私たちが費用を支払い、制御する領域です。ここに実際のPodが起動します。
  • Google Managed VPC (コントロールプレーン): Googleが管理する別のプロジェクト/VPCにマスターノードが存在します。

これら二つのネットワークは物理的に隔離されており、通信のためにVPC Peering(ピアリング)で接続されています。

🧐 なぜよりによってパブリックIP (34.x)なのか?

ここでジレンマが生じます。もしGoogleがマスターノードに10.xや192.168.xのようなプライベートIPを使ったらどうなるでしょうか?

ユーザーが自分のVPCを同じ10.x帯域で作成した場合、IP衝突(Overlap)が発生し、ピアリング自体が不可能になります。

そのため、Googleは「世界中のどこでも重複しないIP」であるパブリックIP(Public IP)帯域(Google所有の34.xなど)をマスターノードに割り当てたのです。

💡 主要な要点

  1. 衝突防止: ユーザーVPCがどのようなプライベート帯域を使用しても関係なく接続するためです。
  2. アクセス性: 開発者が外部(インターネット)から`kubectl`コマンドを実行できるエンドポイントの役割を果たします。
  3. セキュリティ: プライベートクラスターオプションを有効にしても、マスターとワーカーノード間のトンネリングなどのために、このパブリックIP帯域は内部的にルーティングに使用されます。

2. AWS EKSと100.64.x.x (Secondary CIDR)の正体 🅰️

「VPC IPが足りない!Pod専用の帯域が必要だ!」

AWS EKSを運用していると、Pod IPが100.64.x.x帯域で割り当てられるのをよく見かけます。これはAWS VPC CNIプラグインの特性と密接に関連しています。

😱 問題点:IP枯渇 (IP Exhaustion)

AWS VPC CNIは、Pod一つ一つにVPCの実際のIPを割り当てます。パフォーマンスは最高ですが、IP消費が膨大です。

例えば、10.0.0.0/16 (65,536個)でVPCを作成しても、サブネットを分割し、EC2、ELB、RDSなどを起動していくと、数千個のPodを起動するIPが不足してしまいます。

🛠️ 解決策:Secondary CIDRの追加

この時に使用する手法が、VPCに補助IP帯域(Secondary CIDR)を追加することです。この際、最も推奨される帯域が100.64.0.0/10帯域です。

🧐 100.64.x.xとは何か? (CGNAT)

この帯域はRFC 6598標準で定義されたCGNAT(Carrier Grade NAT)帯域です。

  • パブリックIPではない: インターネット上でルーティングされません。
  • 一般的なプライベートIP (10.x, 192.168.x)でもない: 企業内部ネットワークでよく使われる帯域と重複する可能性が非常に低いです。

つまり、「プライベートネットワーク拡張に最適で、衝突のない予備帯域」というわけです。EKSはこの帯域をPod専用に割り当てることで、ノード(EC2)が使用するIP帯域とPodが使用するIP帯域を分離し、IP不足問題を解決します。

💡 主要な要点

  1. IP確保: 既存のVPC帯域幅の限界を超えて、Podを無限に(?)作成できます。
  2. 管理の容易性: ノードIPとPod IPが明確に区別され、管理が容易になります。
  3. 標準準拠: プライベートIPの衝突を避けるためにCGNAT帯域を活用します。

🥊 一目で比較

区分 GKE (Google) EKS (AWS)
観測されるIP 34.118.x.x (例) 100.64.x.x
IP種類 Public IP (パブリックIP) CGNAT IP (共有アドレス)
対象リソース Control Plane (マスターノード) Pod (ワーカーノード内部)
使用目的 ユーザーVPCとのIP衝突防止および外部アクセス VPC IP枯渇解決およびPod専用帯域の確保
ネットワーク構造 Google管理VPC ↔ ユーザーVPCピアリング 一つのVPC内でのSecondary CIDR拡張

📝 結論

クラウドを使っていると、「自分が設定していないIP」が現れて戸惑うことがあります。しかし、その裏には衝突防止拡張性のためのクラウドプロバイダー(CSP)の深い配慮が込められています。

  • GKEの34.x: Googleが管理する領域なので、「ああ、マスターノードなんだな!」と安心してください。
  • EKSの100.64.x: Pod IP不足を解決するための「拡張スロット」だと考えればよいでしょう。

この違いを理解することで、ハイブリッドクラウドやマルチクラウドネットワークを設計する際に、より柔軟に対応できるようになります! 👍

お役に立てましたら、ぜひ「いいね」をお願いします! 👏



Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です