在 Azure Kubernetes 服务 (AKS) 中使用出站类型自定义群集出口

可以自定义 AKS 群集的流出量,以适应特定方案。 默认情况下,AKS 预配了标准 SKU 负载均衡器,并已设置并用于流出量。 但是,如果不允许公共 IP,或者流出量需要其他跃点,则默认设置可能无法满足所有方案的要求。

本文介绍了 AKS 群集中各种类型的出站连接。

注意

现在可以在创建群集后更新 outboundType

限制

  • 设置 outboundType 需要将 AKS 群集的 vm-set-type 指定为 VirtualMachineScaleSets,将 load-balancer-sku 指定为 Standard

AKS 中的出站类型

可以使用以下出站类型配置 AKS 群集:负载均衡器、NAT 网关或用户定义的路由。 出站类型仅影响群集的出口流量。 有关详细信息,请参阅设置入口控制器

注意

可以将自己的 [路由表][byo-route-table] 与 UDR 和 kubenet 网络一起使用。 确保群集标识(服务主体或托管标识)具有对自定义路由表的“参与者”权限。

loadBalancer 出站类型

负载均衡器用于通过 AKS 分配的公共 IP 的流出量。 出站类型 loadBalancer 支持 loadBalancer 类型的 Kubernetes 服务,此类型的服务应收到由 AKS 资源提供程序创建的负载均衡器传出的流量。

如果设置了 loadBalancer,AKS 将自动完成以下配置:

  • 为群集出口预配一个公共 IP 地址。
  • 将该公共 IP 地址分配给负载均衡器资源。
  • 为群集中的代理节点设置负载均衡器的后端池。

此图显示了入口 IP 和出口 IP,其中的入口 IP 将流量定向到负载均衡器,负载均衡器将往返于内部群集的流量和其他流量定向到出口 IP,出口 IP 将流量定向到 Internet、MCR、Azure 所需服务和 AKS 控制平面。

有关详细信息,请参阅在 AKS 中使用标准负载均衡器

managedNatGatewayuserAssignedNatGateway 出站类型

如果为 outboundType 选择了 managedNatGatewayuserAssignedNatGateway,AKS 将依赖 Azure 网络 NAT 网关配置群集出口。

  • 使用托管虚拟网络时选择 managedNatGateway。 AKS 将预配 NAT 网关并将其附加到群集子网。
  • 使用自带虚拟网络时选择 userAssignedNatGateway。 此选项要求在创建群集之前预配 NAT 网关。

有关详细信息,请参阅将 NAT 网关与 AKS 配合使用

userDefinedRouting 出站类型

注意

userDefinedRouting 出站类型是一种高级网络方案,需要正确的网络配置。

如果设置了 userDefinedRouting,则 AKS 不会自动配置出口路径。 必须由你完成出口设置。

必须将 AKS 群集部署到先前已配置子网的现有虚拟网络中。 由于未使用标准负载均衡器 (SLB) 体系结构,因此必须建立显式流出量。 此体系结构需要向防火墙、网关、代理等设备显式发送出口流量,或需要允许 NAT 由分配给标准负载均衡器或设备的公共 IP 完成。

有关详细信息,请参阅通过用户定义的路由配置群集流出量

创建群集后更新 outboundType

创建群集后更改出站类型将根据需要部署或删除资源,以将群集放入新的出口配置。

下面的表显示了托管虚拟网络和 BYO 虚拟网络的出站类型之间支持的迁移路径。

托管 VNet 支持的迁移路径

托管 VNet loadBalancer managedNATGateway userAssignedNATGateway userDefinedRouting
loadBalancer 空值 支持 不支持 不支持
managedNATGateway 支持 空值 不支持 不支持
userAssignedNATGateway 不支持 不支持 空值 不支持
userDefinedRouting 支持 受支持 不支持 空值

BYO VNet 支持的迁移路径

BYO VNet loadBalancer managedNATGateway userAssignedNATGateway userDefinedRouting
loadBalancer 空值 不支持 支持 支持
managedNATGateway 不支持 空值 不支持 不支持
userAssignedNATGateway 支持 不支持 空值 支持
userDefinedRouting 支持 不支持 支持 空值

仅支持在 loadBalancermanagedNATGateway(如果使用托管虚拟网络)、userAssignedNATGatewayuserDefinedRouting(如果使用自定义虚拟网络)之间进行迁移。

警告

将出站类型迁移到用户托管类型(userAssignedNATGatewayuserDefinedRouting)将会更改群集的出站公共 IP 地址。 如果启用了授权 IP 范围,请确保将新的出站 IP 范围追加到授权 IP 范围。

警告

更改群集上的出站类型会中断网络连接,并将导致群集的出口 IP 地址发生变化。 如果已将任何防火墙规则配置为限制来自群集的流量,需要更新这些规则以匹配新的流出量 IP 地址。

更新群集以使用新的出站类型

注意

需要使用 >= 2.56 版本的 Azure CLI 迁移出站类型。 使用 az upgrade 更新到最新版本的 Azure CLI。

将群集从 loadbalancer 更新为 managedNATGateway

az aks update --resource-group <resourceGroup> --name <clusterName> --outbound-type managedNATGateway --nat-gateway-managed-outbound-ip-count <number of managed outbound ip>

将群集从 managedNATGateway 更新为 loadbalancer

az aks update --resource-group <resourceGroup> --name <clusterName> \
--outbound-type loadBalancer \
<--load-balancer-managed-outbound-ip-count <number of managed outbound ip>| --load-balancer-outbound-ips <outbound ip ids> | --load-balancer-outbound-ip-prefixes <outbound ip prefix ids> >

警告

不要重复使用已在先前的出站配置中使用的 IP 地址。

将群集从 managedNATGateway 更新为 userDefinedRouting

az aks update --resource-group <resourceGroup> --name <clusterName> --outbound-type userDefinedRouting

在 BYO vnet 方案中将群集从 loadbalancer 更新为 userAssignedNATGateway

az aks update --resource-group <resourceGroup> --name <clusterName> --outbound-type userAssignedNATGateway

后续步骤