使用azurerm设置Terraform子网时出错
最近我发现我的AKS集群有一个子网太小了。因此,我尝试添加第二个子网和节点池,这在今天的Azure CNI中是可能的,然后创建一个合适的子网,并将其迁移回来 在使用azurerm设置Terraform子网时出错,azure,terraform,azure-aks,Azure,Terraform,Azure Aks,最近我发现我的AKS集群有一个子网太小了。因此,我尝试添加第二个子网和节点池,这在今天的Azure CNI中是可能的,然后创建一个合适的子网,并将其迁移回来 在terraform plan期间,所有操作都进行得很顺利,但应用时会抛出错误 Error: Error Creating/Updating Subnet "me-test-k8s-subnet2" (Virtual Network "me-test-k8s-vnet" / Resource Grou
terraform plan
期间,所有操作都进行得很顺利,但应用时会抛出错误
Error: Error Creating/Updating Subnet "me-test-k8s-subnet2" (Virtual Network "me-test-k8s-vnet" / Resource Group "me-test-k8s-rg"): network.SubnetsClient#CreateOrUpdate: Failure sending request: StatusCode=400 -- Original Error: Code="NetcfgInvalidSubnet" Message="Subnet 'me-test-k8s-subnet2' is not valid in virtual network 'me-test-k8s-vnet'." Details=[]
on main.tf line 28, in resource "azurerm_subnet" "subnet2":
28: resource "azurerm_subnet" "subnet2" {
我的原始集群是使用Terraform
的配置创建的:
name = "${var.cluster_name}-rg"
location = "${var.location}"
}
resource "azurerm_virtual_network" "network" {
name = "${var.cluster_name}-vnet"
location = "${azurerm_resource_group.rg.location}"
resource_group_name = "${azurerm_resource_group.rg.name}"
address_space = ["10.1.0.0/16"]
}
resource "azurerm_subnet" "subnet" {
name = "${var.cluster_name}-subnet"
resource_group_name = "${azurerm_resource_group.rg.name}"
address_prefixes = ["10.1.0.0/24"]
virtual_network_name = "${azurerm_virtual_network.network.name}"
}
为了让事情变得更简单,我决定先在没有节点池的情况下将子网添加到网络中。这会让我想到这个地形图:
An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
+ create
Terraform will perform the following actions:
# azurerm_subnet.subnet2 will be created
+ resource "azurerm_subnet" "subnet2" {
+ address_prefix = (known after apply)
+ address_prefixes = [
+ "10.2.0.0/22",
]
+ enforce_private_link_endpoint_network_policies = false
+ enforce_private_link_service_network_policies = false
+ id = (known after apply)
+ name = "me-test-k8s-subnet2"
+ resource_group_name = "me-test-k8s-rg"
+ virtual_network_name = "me-test-k8s-vnet"
}
希望有人能给我解释一下为什么会发生这个错误
最好的,
Pim在虚拟网络中创建子网时,必须检查子网是否未跳出网络范围 您的网络掩码刚刚超出范围:
10.1.0.0/16
First host: 10.1.0.1
Last host: 10.1.255.254
您正在尝试创建子网10.2.0.0/22
例如,为了不与已创建的子网重叠,可以接受
10.1.4.0/22
。如我的评论和某人的回答中所述,Azure抛出此错误,因为您试图将10.2.0.0/22子网添加到10.1.0.0/16网络。ie-10.2.0.0/22不是该网络的一部分
我还想指出,当你运行一个计划时,它没有向Azure提交实际的API调用来进行更改,这就是为什么在你运行计划时一切看起来都很好,但当你尝试应用它时Azure会抱怨的原因。我认为这个解释很好。适用的摘录包括:
一旦您对声明的配置感到满意,您可以询问
Terraform为其生成执行计划。中的计划命令
CLI用于根据配置生成执行计划。
执行计划告诉您Terraform需要进行哪些更改
使您当前的基础架构处于
配置
如果您接受该计划,您可以指示Terraform应用更改。Terraform将进行实现更改所需的API调用。如果出现任何问题,terraform将不会尝试自动将基础结构回滚到运行apply之前的状态。这是因为apply遵守计划
我可能误解了您的设置,但您是否将10.2.0.0/22子网添加到10.1.0.0/16网络?ie-10.2.0.0/22不是网络的一部分,我也面临这个问题。。最后移除了群集并创建了一个更大的sunbetrange@Howard_Roark对的我有一个不能更改的/24子网。但是,如果正确,我可以向网络添加第二个子网,迁移所有内容并完成。但我应该能够将/22子网添加到/16 vnet中,对吗?当您有一个10.1.0.0/16网络,它包含所有看起来像10.1.x.y的IP(即,它们都需要从10.1开始)。这里您添加的10.2不是该范围的一部分问题是/24太小。我应该能够将/22子网添加到/16网络,对吗?是的,您可以使用10.1.0.0/22,但您将与10.1.0.0/24重叠。谢谢,我会尝试一下。重叠不是直接的问题,因为我要迁移到新的子网。我想在这种情况下,所有符合vnet的内容都会重叠,对吗?例如,你可以使用10.1.4.0/22,它将是OKThank@Oleh,也许在解释答案中添加这一点也是一个不错的补充。我刚刚接受了它,现在正在创建资源