このページでは、Google Kubernetes Engine(GKE)クラスタ内の特定の Pod に 1 つ以上の永続(静的)IP アドレスを直接割り当てることで、信頼性の高い通信を実現する方法について説明します。
カスタム ネットワーク アドレス変換(NAT)ソリューションを実行している場合、NAT ソリューションが接続を開始または受信するときに、発信接続と受信接続の両方で静的永続 IP アドレスが必要になることがあります。また、ビジネス要件に基づいて、他のシステムとのやり取り方法や特定の種類のリクエストの処理方法を管理するために、アプリケーションに割り振られる IP アドレスを制御することもできます。
デフォルトでは、Pod は下り(外向き)トラフィックにインターフェース IP アドレスを使用します。Pod が再起動または移動されると、インターフェースの IP アドレスが変更されます。ルーティングをより細かく制御するには、GKE で Pod の永続 IP アドレスを手動で構成します。
これらの IP アドレスは、インターネット経由で通信する外部 IP アドレスまたは Google Cloud ネットワーク内で通信する内部 IP アドレスのいずれかです。Google 提供の IP アドレスを使用するか、お客様所有の IP アドレス(BYOIP)を使用できます。
GKE の Pod に永続 IP アドレスを構成することで、アプリケーションとビジネス ロジックをマッピングし、特定の Pod が任意の永続 IP アドレスとの間でトラフィックを送受信できるようにします。
用語とコンセプト
このページでは、次のコンセプトを使用します。
Gateway クラス
Gateway クラス。永続 IP アドレスの割り当てを管理する Gateway には、次のクラスがあります。
- 外部 IP アドレスの場合: gke-persistent-regional-external-managed
内部(Google Cloud のみ)IP アドレスの場合: gke-persistent-regional-internal-managed
Gateway クラスは特定のリージョン内で動作します。Gateway クラスは基本的な IP アドレス管理を提供し、レイヤ 3(L3)ネットワーク ルーティングに重点を置いています。
Gateway オブジェクト
Gateway オブジェクトは、永続 IP アドレスの管理と構成の中心的な役割を果たします。GKE の Gateway オブジェクトは、永続 IP アドレスのプールを管理します。これらの IP アドレスの一覧を取得し、GKEIPRoute
に割り当てる方法を定義します。
リスナー
リスナーは、Gateway Namespace 全体で Gateway が保持する永続 IP アドレスを使用できる Pod を制御する GKE Gateway 構成の一部です。リスナーを使用すると、柔軟性とセキュリティのためにアクセスをカスタマイズできます。各リスナーには一意の名前が必要です。Namespace(すべて、ラベルベース、または Gateway の Namespace のみ)でアクセスをフィルタリングできます。
GKEIPRoute オブジェクト
GKEIPRoute オブジェクトは、GKE クラスタ内の特定の Pod に永続 IP アドレスを割り当てるように構成するカスタム リソースです。GKEIPRoute
オブジェクトのステータス セクションを使用して、永続 IP アドレスの設定をモニタリングできます。このセクションには、次のフィールドで重要な情報が提供されます。
Pod
Pod フィールドには、永続 IP アドレスにリンクされている Pod の正確な名前が示されます。1 つの Pod で複数の永続 IP アドレスを使用できます。
条件
Conditions フィールドには、外部 IP アドレスの設定が正しく機能しているかどうかが示されます。また、構成が有効でない場合に問題を診断する際にも役立ちます。4 つの条件があります。
Accepted
:GKEIPRoute
リソース仕様が有効かどうかを示します。構成にエラーがある場合、Accepted
の状態はFalse
で、理由が示されます。GCPReady
: Google Cloud が必要なリソースをすべて準備したことを示します。Google Cloud リソースのプロビジョニング プロセス中に発生したエラーは、GCPReady
条件のステータスに反映されます。DPV2Ready
: データパス プログラミングのステータスを示します(データパスの準備ができていること、構成された永続 IP アドレスでのネットワーク接続を許可するようにプログラムされていることなどを示します)。Ready
: 永続 IP アドレスの設定が有効で機能していることを示します。Pod には、アプリケーションで使用するように構成した永続 IP アドレスでアクセスできます。他の 3 つの条件がすべてTrue
の場合、これはTrue
に設定されます。
リアクティブ モード
リアクティブ モードは、永続 IP アドレスにリンクされた Pod が変更されたとき(ノード間の移動など)や、新たに作成された Pod が使用可能になったときのシステムの動作を決定します。リアクティブ モードを使用すると、Pod が変更されても永続 IP アドレスを引き続き使用できます。
リアクション モードは次のいずれかです。
ReadyCondition
ReadyCondition モードでは、永続 IP アドレス システムは Pod の健全性を優先します。永続 IP アドレス システムは、指定されたラベルと一致し、Kubernetes のヘルスプローブに合格した Pod にのみ IP アドレスを割り当てます。
Ready
ステータスはTrue
として通知されます。このモードは、永続 IP アドレスを受信する Pod が、受信トラフィックと送信トラフィックを処理する準備が完全に整っていることが重要なアプリケーションに最適です。Exists
Exists モードでは、Pod の存在が優先されます。永続 IP アドレスは、Pod が構成のラベルと一致し、クラスタ内の特定のノードにスケジュールされている場合に Pod に接続されます。これは、Pod が存在し、実行する場所が指定されていることを意味します。このモードは、永続 IP アドレスの迅速な割り当てが厳密な準備よりも優先されるシナリオや、アプリケーションの完全な状態よりも即時の接続が重要である開発やテストなどの環境に適しています。
StatefulSet
StatefulSets は、安定した ID と永続ストレージが必要なアプリケーション用に設計された Kubernetes ワークロードの一種です。StatefulSet 内の Pod には、予測可能な名前(my-app-0、my-app-1 など)が付けられます。
Deployment
Deployment は、Pod が互換性があるステートレス アプリケーションを管理するための Kubernetes ワークロードの一種です。Deployment 内の Pod 名は完全に予測できません。
ユースケース
GKE Pod の永続 IP アドレスは、GKE と GKE Enterprise でネットワーク関連のアプリケーションを実行するネットワークとセキュリティ サービス プロバイダのユースケースに対応します。
GKE Pod の永続 IP アドレスは、次のユースケースに対応しています。
- NAT の制御: ネットワーク機能を実行する Pod に永続 IP アドレスを割り当てることで、アウトバウンド トラフィックに使用される送信元 IP アドレスをきめ細かく制御できます。これにより、独自の NAT ロジックを統合できます。
- 専用 IP アドレスプール: 専用 IP アドレスを使用すると、特定のアドレスを個々の 5G Core Pod に一致させ、特定のベンダー ソフトウェアとの互換性を確保できます。
- 信頼性の高いトラフィック フロー: リターン トラフィックは同じネットワーク機能経由で戻す必要があるため、永続 IP アドレスを使用すると、外部システムが通信を中断することなく、正しい Pod を認識して応答できます。
利点
GKE Pod の永続 IP アドレスには次の利点があります。
- 外部 ID: Pod に外部永続 IP アドレスを割り当てると、Pod が再起動されたり、クラスタ内で移動しても、外部システムは Pod にアクセスできます。これは、外部から検出可能なエンドポイントが必要なサービスに役立ちます。
- 信頼性の高い通信: 特定の IP アドレスを持つ他のリソースに依存するアプリケーションは、永続 IP アドレスを使用して信頼性の高い接続を確立できます。永続 IP アドレスは、IP アドレスの依存関係がハードコードされているレガシー システムやアプリケーションで重要です。
- レガシー移行: レガシー移行は、移行プロセス中に特定の IP アドレスに依存するアプリケーションの移行に役立ちます。
- BYOIP: BYOIP を使用すると、GKE クラスタ内ですでに所有している特定の IP アドレス範囲を制御できます。