PCNE#128(implement-vpc)
GKE クラスタ用に Alias IP を割り当てるサブネットを Terraform で作成します。Pod 用と Service 用にそれぞれ独立した範囲を確保したい場合、サブネット定義に必要な要素はどれですか。
正解:C
正解の根拠
GKE の VPC ネイティブクラスタでは、Node IP がサブネットのプライマリ範囲から、Pod IP と Service IP がそれぞれセカンダリ範囲から払い出されます。Terraform の google_compute_subnetwork ではプライマリ範囲 (ip_cidr_range) を 1 つ定義し、Pod / Service 用に secondary_ip_range ブロックを 2 つ追加する構成が標準的です。
Terraform 構成例
resource "google_compute_subnetwork" "gke" {
name = "gke-subnet"
network = google_compute_network.vpc.id
region = "asia-northeast1"
ip_cidr_range = "10.10.0.0/20"
secondary_ip_range {
range_name = "pods"
ip_cidr_range = "10.20.0.0/14"
}
secondary_ip_range {
range_name = "services"
ip_cidr_range = "10.24.0.0/20"
}
}範囲ごとの役割
| 範囲 | 用途 | サイズ目安 |
|---|---|---|
| プライマリ | Node の IP | /20 程度 |
| secondary (pods) | Pod の IP | /14 など広め |
| secondary (services) | Service の ClusterIP | /20 程度 |
不正解の理由
- A: プライマリ範囲のみでは Pod / Service 用の独立した範囲が確保できず、Alias IP の前提となるセカンダリ範囲が不足します。
- B: 1 サブネットに 2 つのプライマリ範囲は定義できず、プライマリは常に 1 つで他はセカンダリとして扱う設計になっています。
- D: プライマリ範囲を省略するとサブネット自体が成立せず、Node IP の払い出し元が無くなるため作成に失敗します。
参考:Alias IP 範囲

コメント