你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure Kubernetes 服务中创建具有唯一子网的节点池(AKS)

某些工作负荷可能需要将群集节点拆分为单独的池,以便进行逻辑隔离。 专用于群集中每个节点池的单独子网可帮助支持此隔离,这可以满足各种要求,例如,将不连续的虚拟网络地址空间拆分到节点池中。

本文介绍如何在 Azure Kubernetes 服务(AKS)中创建具有唯一子网的节点池。

先决条件

局限性

  • 分配给节点池的所有子网都必须属于同一虚拟网络(VNet)。
  • 系统 Pod 必须有权访问群集中的所有节点和 pod,以提供关键功能,例如 DNS 解析和隧道 kubectl logs/exec/port-forward 代理。
  • 如果在创建群集后扩展 VNet,则必须在原始 CIDR 块之外添加子网之前更新群集。 虽然代理池上的 AKS 错误已添加,但 aks-preview Azure CLI 扩展(版本 0.5.66 及更高版本)现在仅支持使用所需的 --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME 自变量运行 az aks update 命令。 此命令将执行更新操作,而不会进行任何更改,这会恢复停滞在失败状态的群集。
  • 在 Kubernetes 版本低于 1.23.3 的群集中,kube-proxy SNAT 将获取新子网的流量,这可能导致 Azure 网络策略丢弃数据包。
  • Windows 节点会将 SNAT 流量发送到新子网,直到节点池完成映像重置。
  • 内部负载均衡器默认为节点池子网之一。

添加一个具有唯一子网的节点池

  • 使用 az aks nodepool add 命令和 --vnet-subnet-id 指定的参数将具有唯一子网的节点池添加到现有 AKS 群集。

    az aks nodepool add \
        --resource-group $RESOURCE_GROUP_NAME \
        --cluster-name $CLUSTER_NAME \
        --name $NODE_POOL_NAME \
        --node-count 3 \
        --vnet-subnet-id $SUBNET_RESOURCE_ID
    

后续步骤

有关 AKS 中的节点池的详细信息,请参阅 管理 Azure Kubernetes 服务(AKS)中群集的节点池