【问题标题】:Current map the CIDR values wrong in subnet creation当前在子网创建中映射 CIDR 值错误
【发布时间】:2022-08-24 21:07:23
【问题描述】:

我有一个 Azure 问题。我在 Azure 云服务中使用 terraform。我尝试在那里启动 2 AKS 集群。但我总是收到一个错误,即我的 CIDR 设置错误。

我在集群一中使用:

resource \"azurerm_subnet\" \"cluster1-node-pool-subnet\" {

  name                 = \"cluster1-node-pool-subnet\"
  resource_group_name  = azurerm_virtual_network.cluster-vnet.resource_group_name
  virtual_network_name = azurerm_virtual_network.cluster-vnet.name
  address_prefixes     = [\"10.0.1.0/19\"]

}

resource \"azurerm_subnet\" \"cluster1-execution-nodes-subnet\" {

  name                 = \"cluster1-execution-nodes-subnet\"
  resource_group_name  = azurerm_virtual_network.cluster-vnet.resource_group_name
  virtual_network_name = azurerm_virtual_network.cluster-vnet.name
  address_prefixes     = [\"10.0.33.0/19\"]

}

resource \"azurerm_subnet\" \"cluster1-gpu-nodes-subnet\" {
  count                = var.gpuNodePool ? 1 : 0
  name                 = \"execution-nodes-subnet\"
  resource_group_name  = azurerm_virtual_network.cluster-vnet.resource_group_name
  virtual_network_name = azurerm_virtual_network.cluster-vnet.name
  address_prefixes     = [\"10.0.48.0/20\"]

}

network_profile {
  network_plugin     = \"azure\"
  service_cidr       = \"10.0.65.0/19\"  
  dns_service_ip     = \"10.0.65.10\"    
  docker_bridge_cidr = \"172.17.0.1/16\" 
}

在集群二中:

resource \"azurerm_subnet\" \"default-node-pool-subnet\" {

  name                 = \"default-node-pool-subnet\"
  resource_group_name  = azurerm_virtual_network.cluster-vnet.resource_group_name
  virtual_network_name = azurerm_virtual_network.cluster-vnet.name
  address_prefixes     = [\"10.0.0.0/19\"]

}

resource \"azurerm_subnet\" \"execution-nodes-subnet\" {

  name                 = \"execution-nodes-subnet\"
  resource_group_name  = azurerm_virtual_network.cluster-vnet.resource_group_name
  virtual_network_name = azurerm_virtual_network.cluster-vnet.name
  address_prefixes     = [\"10.0.32.0/19\"]

}

resource \"azurerm_subnet\" \"gpu-nodes-subnet\" {
  count                = var.gpuNodePool ? 1 : 0
  name                 = \"execution-nodes-subnet\"
  resource_group_name  = azurerm_virtual_network.cluster-vnet.resource_group_name
  virtual_network_name = azurerm_virtual_network.cluster-vnet.name
  address_prefixes     = [\"10.0.48.0/20\"]
}

network_profile {
  network_plugin     = \"azure\"
  service_cidr       = \"10.0.64.0/19\"
  dns_service_ip     = \"10.0.64.10\"
  docker_bridge_cidr = \"172.17.0.1/16\"
}

Azur 现在告诉我前缀是错误的。

│ Error: creating Subnet: (Name \"cluster1-node-pool-subnet\" / Virtual Network Name \"cluster-vnet\" / Resource Group \"cluster-infra-network\"): network.SubnetsClient#CreateOrUpdate: Failure sending request: StatusCode=400 -- Original Error: Code=\"InvalidCIDRNotation\" Message=\"The address prefix 10.0.1.0/19 in resource /subscriptions/xxx/resourceGroupscluster-infra-network/providers/Microsoft.Network/virtualNetworks/cluster-vnet/subnets/cluster1-node-pool-subnet has an invalid CIDR notation. For the given prefix length, the address prefix should be 10.0.0.0/19.\" Details=[]
│
│   with azurerm_subnet.cluster1-node-pool-subnet,
│   on k8s-rtc.tf line 7, in resource \"azurerm_subnet\" \"cluster1-node-pool-subnet\":
│    7: resource \"azurerm_subnet\" \"cluster1-node-pool-subnet\" {
│
╵
╷
│ Error: creating Subnet: (Name \"cluster1-execution-nodes-subnet\" / Virtual Network Name \"cluster-vnet\" / Resource Group \"cluster-infra-network\"): network.SubnetsClient#CreateOrUpdate: Failure sending request: StatusCode=400 -- Original Error: Code=\"InvalidCIDRNotation\" Message=\"The address prefix 10.0.33.0/19 in resource /subscriptions/xxx/resourceGroups/cluster-infra-network/providers/Microsoft.Network/virtualNetworks/cluster-vnet/subnets/cluster1-execution-nodes-subnet has an invalid CIDR notation. For the given prefix length, the address prefix should be 10.0.32.0/19.\" Details=[]
│
│   with azurerm_subnet.cluster1-execution-nodes-subnet,
│   on k8s-rtc.tf line 14, in resource \"azurerm_subnet\" \"cluster1-execution-nodes-subnet\":
│   14: resource \"azurerm_subnet\" \"cluster1-execution-nodes-subnet\" {

在我看来,CIDR 和前缀是有效的。知道有什么问题吗?

  • 不幸的是,它们不是,存在重叠。您要使用哪个八位字节?第三,第四?
  • 作为样本来自 0000 1010 | 0000 0000 | 0000 0000 | 0000 0000 我想用最后一个 | 0000 0000

标签: azure kubernetes terraform subnet cidr


【解决方案1】:

您的子网定义中基本上存在两个问题:

  1. Azure 告诉您您正在使用无效的 CIDR 表示法。例如。在cluster1-node-pool-subnet 的情况下,您在地址前缀["10.0.1.0/19"] 中指定。虽然10.0.1.0/19 是一个有效的IP 地址,但它属于子网10.0.0.0/19,Azure 坚持需要根据子网的网络地址指定地址前缀。

    这同样适用于例如10.0.33.0/19 属于子网10.0.32.0/19

  2. 这揭示了第二个问题,一旦第一个问题得到修复,Azure 将向您报告:在两个子网中,您在定义的子网中使用相同的地址前缀。为了克服这个问题,您可以使用例如["10.0.0.0/19"] 代表 cluster1-node-pool-subnet["10.1.0.0/19"] 代表 default-node-pool-subnet 等等。

【讨论】:

    【解决方案2】:

    这里的问题是您被要求分配网络地址,而您却分配了主机地址。让我以图形方式向您展示出了什么问题。 (图片来自我目前正在开发的 iphone 应用程序,尚未发布。)

    【讨论】:

      猜你喜欢
      • 2018-03-16
      • 2021-03-14
      • 2018-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-26
      • 2019-02-05
      相关资源
      最近更新 更多