我正在尝试在GCP中设计非常大规模的网络,特别是将this network framework从AWS移植到GCP。
在AWS中,子网与特定的可用区绑定。在GCP中,子网跨越所有可用区域。
locals {
# for network 0, layer index 0, occupy 10.0.0.0-10.0.9.255
primary_ip_range = "10.${var.network_id}.${var.layer_index * 10}.0/23"
secondary_ip_ranges = [
{ range_name = "${var.name}-0", ip_cidr_range = "10.${var.network_id}.${(var.layer_index * 10) + 2}.0/23" },
{ range_name = "${var.name}-1", ip_cidr_range = "10.${var.network_id}.${(var.layer_index * 10) + 4}.0/23" },
{ range_name = "${var.name}-2", ip_cidr_range = "10.${var.network_id}.${(var.layer_index * 10) + 6}.0/23" },
{ range_name = "${var.name}-3", ip_cidr_range = "10.${var.network_id}.${(var.layer_index * 10) + 8}.0/23" },
]
}
resource "google_compute_subnetwork" "default" {
region = "${var.region}"
name = "${var.name}"
description = "The ${title(var.name)} layer subnet in the ${var.zone} Titan network."
network = "${var.vpc_id}"
private_ip_google_access = true
ip_cidr_range = "${local.primary_ip_range}"
secondary_ip_range = ["${local.secondary_ip_ranges}"]
}
Google documentation似乎将这些辅助CIDR块称为"别名范围"要分配给在VM上运行的容器。但是,我对这些辅助CIDR块如何与普通虚拟机进行交互更感兴趣。
如果我耗尽主CIDR块(10.0.0.0/23
),主机是否会溢出到另一个CIDR块?或者,主要范围是网络中虚拟机使用的唯一范围吗?
注意:在AWS实施中,如上所述,Titan允许1到5个相邻的
/23
,受到该地区AWS可用区数量的限制。这给出了"层中512到2560个可用主机,"这是用于类似目的的子网的逻辑分组。在AWS中,可以轻松地使用多个子网,在它们之间展开实例或having an autoscaling group或在所有子网中均衡地平衡负载均衡器节点。
在GCP中,您可以only specify one zone for a managed instance group,因此想法似乎是您应该在子网内的每个区域中拥有一个托管实例组。
困惑了吗?我试图将概念从AWS转换为GCP,而基础部分则不同,所以我试图尽可能合理地映射事物。
答案 0 :(得分:0)
不幸的是,VM仍需要主范围内的IP地址。如果地址用完了,则可以在该范围内按照[1]下文档中的说明调整子网大小。
[1] https://cloud.google.com/sdk/gcloud/reference/compute/networks/subnets/expand-ip-range