AKS - Terraform 的 network_profile 区块

AKS - Terraform's network_profile block

使用 terraformazurerm 提供商创建 aks 集群时,您可以指定此块:

  network_profile {
    network_plugin     = var.network_plugin
    network_policy     = var.network_policy
    load_balancer_sku  = "Standard"
    docker_bridge_cidr = var.docker_bridge_cidr
    service_cidr       = var.service_cidr
    dns_service_ip     = var.dns_service_ip
  }

我读过 this page(还有很多!)几遍,但我还是不太明白它的意思。

此外,当我提供我的 default_node_pool 一个 vnet_subnet_id 居住时,它会用 31 Scale set instance 填充给定的子网我我只给了我的集群 1min_count2max_count 并且 vnet_subnet_id 是一个 /24251 免费 IP)。 31 实例来自哪里?

  • network_plugin = AAD Pod Identity 将与 Kubenet 一起使用,但从 here. Kubenet also uses a so called Overlay Network and is doing therefore NAT, this means AKS nodes gets IPs inside your Subnet and the Pods receive an IP address from a logically different address space. Azure CNI assign IP addresses from your Subnet to Nodes and also to Pods. You need to think before how many Nodes & Pods you will have in your subnet to not run into the issue that no IPs are left for new Pods or Nodes. Here 开始不推荐设置您可以找到一篇正在执行性能的文章比较。

  • network_policy = 是的,就是开启Kubernetes Network Policies。如果您使用 Azure 作为网络插件,则可以使用 Azure 或 Calico 作为网络策略。 Calico 具有 GlobalNetworkPolicies.

    的优势
  • docker_bridge_cidr= 它是遗留的,但 def。今天需要

  • service_cidr = 这是集群中 Kubernetes Services 的 CIDR。

  • dns_service_ip = 需要在 service_cidr 内。默认情况下,Kubernetes 会将 x.x.x.10 分配为 DNS IP。您可以在此处更改此设置。这就是为什么 Azure CNI 需要更多规划的原因,

要回答您的最后一个问题,Azure CNI 会预先保留所有 IP 地址,因此如果您使用 1 个节点进行设置且默认设置 max_pods=30,它将在您的子网内保留 31 个 IP。