【入門編】 GCPにおけるプライベートIPアドレスの割り当てとエイリアスIPレンジ(Alias IP ranges) – クラウドインフラと仮想化ネットワーク実践ガイド

こんにちは!クラウドインフラの世界へようこそ。SREとして日々さまざまなシステムの裏側を支えていると、「一つの仮想サーバー(VM)の中に、まるで小さなアパートのようにたくさんのコンテナを住まわせたい」という要件にぶつかることがよくあります。

GCP(Google Cloud)の世界で、Kubernetesをはじめとするコンテナオーケストレーションツールがなぜあんなにも軽快に、そして複雑なネットワークを難なくクリアして動いているのか。その秘密の鍵を握るのが、今回取り上げる「エイリアスIPレンジ(Alias IP ranges)」という仕組みです。

「IPアドレス」「サブネット」「ネットワーク仮想化」……。初学者のうちは、なんだか呪文のように難しく聞こえる言葉ばかりですよね。でも、大丈夫です!今回は、私たちの身近にある「郵便配達の仕組み」に例えながら、一歩ずつ優しく紐解いていきましょう。

—

1. エイリアスIPレンジってなに?身近な例えで考えてみよう

まずは、GCPの仮想マシン(VMインスタンス)を「大きなお家」に例えてみてください。

通常のクラウドの仕組みでは、VMインスタンスを1台作ると、その家には1つの「表札(プライベートIPアドレス)」が与えられます。郵便屋さん(他のサーバー)は、その表札めがけて荷物を届けますよね。

ここで、こんなシチュエーションを想像してください。
「この一軒家の中に、実は3人の家族(コンテナ)が住んでいて、それぞれが別々に郵便物を受け取りたい!」

もし表札が1つしかなかったらどうなるでしょう?届いた荷物は全部リビングの玄関に山積みになり、「これ、誰宛ての子包!?」と大混乱になってしまいますよね。

だからといって、家族の人数分だけ大きなお家(VMインスタンス)を建てるのは、家賃(コスト)もかかるし管理も大変です。

そこで登場するのが「エイリアスIPレンジ」です。
これは、1つのお家(VMインスタンス)に、複数の「部屋番号付きの追加の表札(IPアドレス)」をまとめて割り当てる魔法の仕組みなんです。

  • メインの表札: 10.128.0.2(VMインスタンス自体のIP)
  • 追加の表札(エイリアスIP)の束: 10.244.0.0/24 や 192.168.10.0/24 など

これなら、郵便屋さん(他のVMや外部ネットワーク)は、ちゃんと言い伝えられた「部屋番号(エイリアスIP)」めがけて、荷物をダイレクトに配達できるようになります。

—

2. なぜKubernetesでエイリアスIPが必要なの?

GCPのマネージドKubernetesサービスである GKE (Google Kubernetes Engine) では、このエイリアスIPがデフォルトのネットワーク方式(VPCネイティブクラスター)として使われています。

昔のKubernetesは、コンテナ同士の通信を行うために、仮想的なオーバーレイネットワーク(トンネル)をわざわざ作っていました。これは例えるなら、「手紙をいったん別の封筒に入れて、二重に包装して送り直す」ようなもの。包み直す手間にCPUのパワーが使われてしまいますし、パケットの構造も複雑になります。

しかし、GCPのエイリアスIPを使えばどうでしょう?
GCPの物理・仮想ネットワーク(VPC)自体が、「あ、その部屋番号(エイリアスIP)を持つコンテナね、このVMの中継地点へ直接届ければいいんだな」と最初から理解してくれます。

結果として、余計なカプセル化(オーバーレイ)をせず、素のIPパケットのまま爆速で通信できるという、パフォーマンスと管理性の両方を手に入れられるのです。

—

3. 実践!GCPでエイリアスIPを設定してみよう

理屈が分かったところで、実際にGoogle CloudのCLI(gcloudコマンド)を使って、エイリアスIPを持ったVMインスタンスを構築する手順を見ていきましょう。

実務の現場でもそのまま使える設定例を用意しましたので、一緒に見ていきましょうね。

ステップ1: VPCネットワークとサブネットの準備

まずは、VMが所属する土台となるVPCネットワークとサブネットを作ります。ここでは、エイリアスIPとして割り当てるための「セカンダリIPレンジ」をあらかじめ定義しておくのがポイントです。

# 1. カスタムモードのVPCネットワークを作成します
gcloud compute networks create my-custom-vpc \
    --subnet-mode=custom

# 2. サブネットを作成し、コンテナ用のエイリアスIPとして使う「セカンダリレンジ」を定義します
gcloud compute networks subnets create my-subnet \
    --network=my-custom-vpc \
    --region=asia-northeast1 \
    --range=10.128.0.0/20 \
    --secondary-range=k8s-pod-range=10.244.0.0/16
# ↑「k8s-pod-range」という名前で、10.244.0.0/16 のIPの束をコンテナ用に予約しています!

ステップ2: エイリアスIPを持つVMインスタンスの作成

次に、先ほど作ったサブネットを指定し、さらにその中からエイリアスIPレンジを割り当てたVMインスタンスを建てます。

gcloud compute instances create my-app-server \
    --zone=asia-northeast1-a \
    --machine-type=e2-medium \
    --subnet=my-subnet \
    --private-network-ip=10.128.0.2 \
    --aliases=k8s-pod-range=10.244.0.0/24
# ↑ --aliases オプションで、先ほどのセカンダリレンジの中から
#   「10.244.0.0/24」のブロックをこのVMのエイリアスIPとしてガッツリ割り当てています。

これで、my-app-server というお家の中に、10.244.0.0/24 という一団の「部屋番号たち」が紐付けられました!このVM上で動くDockerやKubernetesのkubeletは、この範囲から自由にご近所のコンテナへIPを配分できるようになります。

—

4. 現場のSREが教える!トラブルシューティングの勘所

ここまで順調に見えますが、現場でエイリアスIPを扱う際にはいくつか注意すべきポイント(ハマりどころ)があります。先輩SREからのちょっとしたアドバイスです。

① ルーティングの魔法(GCPのVPCがすべてを知っている)

従来のオンプレミス環境や古いクラウドだと、「追加のIPを使うには、OS側でIPエイリアス(ip addr add など)の設定をしなきゃいけないんだっけ?」と混乱しがちです。

しかし、GCPのエイリアスIPはGCPのコントロール plane(VPCルーター)側が賢くルーティングを管理してくれます。
「10.244.0.5 宛てのパケットが来たら、あのVMインスタンスへ投げればいいんだな」とGoogle側のルーターが知っているため、VM自体のOSネットワーク設定がシンプルで済むのが大きなメリットです。

② IPアドレスの枯渇問題(CIDR設計の重要性)

エイリアスIPレンジを設計するときに最も頭を悩ませるのが「IPのサイジング(サイズ見積もり)」です。
Kubernetesクラスターが将来的にどれくらい巨大化し、何個のポッド(コンテナ)が立ち並ぶかを予測し、適切なプレフィックス長(/16 や /24 など)を最初から設計図に組み込んでおく必要があります。
途中で「やっぱりIPが足りなくなったから広げたい!」となると、サブネットやレンジの再作成が必要になり、大規模なメンテナンス(場合によってはクラスターの作り直し)に発展することも……。初期設計が勝負の分かれ道です!

—

5. まとめ

今回は、GCPのエイリアスIPレンジについて、身近な「お家と部屋番号」の例えを交えながら解説しました。

  • エイリアスIPレンジとは: 1台のVMインスタンスに複数のIPアドレス(の束)をスマートに持たせる仕組み。
  • メリット: 余計なカプセル化(オーバーレイ)をせず、GCPのVPCルーティングと直接連携して高速なネットワークを実現できる(GKEのVPCネイティブクラスターの土台)。
  • ポイント: 初期設計でのIPレンジ(CIDR)のサイジングが非常に重要!

クラウドやネットワークの仕組みは、一見すると難解な用語の壁に阻まれがちですが、私たちが普段暮らしている社会のルールや仕組みに置き換えてみると、スッと腑に落ちるものです。

インフラやネットワークの世界は、泥臭くもあり、綺麗に噛み合ったときの爽快感は格別です。この記事が、あなたのクラウド学習の楽しい一歩になれば、SREとしてこれ以上嬉しいことはありません。

それでは、また次回の技術解説でお会いしましょう!

コメント

タイトルとURLをコピーしました