当我在 terraform 中 运行 cidrsubnet 函数时,我得到 'prefix extension of 3 does not accommodate a subnet numbered 8'。为什么是这样?

When I run cidrsubnet function in terraform I am getting 'prefix extension of 3 does not accommodate a subnet numbered 8'. Why is this?

代码:

cidrsubnet("10.1.2.0/21", 3, 8)

问题:

当我在 terraform 中 运行 时,我得到前缀扩展 3 没有 容纳编号为 8 的子网。这是为什么?任何低于 8 的都有效。我遵循了以下示例:Configure subnets using terraform cidrsubnet 但不确定我在这里遗漏了什么....

当您使用 cidrsubnet("10.1.2.0/21", 3, 8) 时,您将添加 3 位 。由于在二进制 2 ^ 3 = 8 中,您最多可以在此范围内定义 8 个子网:0,1,2,..., 7 具有以下 cidrs:

  • 10.1.0.0/24
  • 10.1.1.0/24
  • 10.1.2.0/24
  • 10.1.3.0/24
  • 10.1.4.0/24
  • 10.1.5.0/24
  • 10.1.6.0/24
  • 10.1.7.0/24

如果你想定义 0 到 15 之间的子网,你必须使用:cidrsubnet("10.1.2.0/21", 4, 8),因为 2 ^ 4 = 16 并且你可以有 16 个子网:0, 1, 2, ..., 15.