你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
某些工作负荷可能需要将群集节点拆分为单独的池,以便进行逻辑隔离。 专用于群集中每个节点池的单独子网可帮助支持此隔离,这可以满足各种要求,例如,将不连续的虚拟网络地址空间拆分到节点池中。
本文介绍如何在 Azure Kubernetes 服务(AKS)中创建具有唯一子网的节点池。
先决条件
-
Azure CLI 2.35.0 或更高版本。 运行
az version即可查找版本。 如果需要安装或升级,请参阅 安装 Azure CLI。 - 具有系统节点池的现有 AKS 群集。 如果需要创建一个群集,请参阅 使用单个节点池创建 AKS 群集。
局限性
- 分配给节点池的所有子网都必须属于同一虚拟网络(VNet)。
- 系统 Pod 必须有权访问群集中的所有节点和 pod,以提供关键功能,例如 DNS 解析和隧道 kubectl logs/exec/port-forward 代理。
- 如果在创建群集后扩展 VNet,则必须在原始 CIDR 块之外添加子网之前更新群集。 虽然代理池上的 AKS 错误已添加,但
aks-previewAzure 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)中群集的节点池。