你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在 Azure Kubernetes 服务 (AKS) 中使用出站类型自定义群集出口
可以自定义 AKS 群集的流出量,以适应特定方案。 默认情况下,AKS 预配了标准 SKU 负载均衡器,并已设置并用于流出量。 但是,如果不允许公共 IP,或者流出量需要其他跃点,则默认设置可能无法满足所有方案的要求。
本文介绍了 AKS 群集中各种类型的出站连接。
注意
现在可以在创建群集后更新 outboundType
。
重要
在非专用群集中,API 服务器群集流量是通过群集出站类型路由和处理的。 要防止将 API 服务器流量作为公共流量进行处理,请考虑使用专用群集,或查看 API 服务器 VNet 集成功能。
限制
- 设置
outboundType
需要将 AKS 群集的vm-set-type
指定为VirtualMachineScaleSets
,将load-balancer-sku
指定为Standard
。
AKS 中的出站类型
可以使用以下出站类型配置 AKS 群集:负载均衡器、NAT 网关或用户定义的路由。 出站类型仅影响群集的出口流量。 有关详细信息,请参阅设置入口控制器。
loadBalancer
出站类型
负载均衡器用于通过 AKS 分配的公共 IP 的流出量。 出站类型 loadBalancer
支持 loadBalancer
类型的 Kubernetes 服务,此类型的服务应收到由 AKS 资源提供程序创建的负载均衡器传出的流量。
如果设置了 loadBalancer
,AKS 将自动完成以下配置:
- 为群集出口预配一个公共 IP 地址。
- 将该公共 IP 地址分配给负载均衡器资源。
- 为群集中的代理节点设置负载均衡器的后端池。
有关详细信息,请参阅在 AKS 中使用标准负载均衡器。
managedNatGateway
或 userAssignedNatGateway
出站类型
如果为 outboundType
选择了 managedNatGateway
或 userAssignedNatGateway
,AKS 将依赖 Azure 网络 NAT 网关配置群集出口。
- 使用托管虚拟网络时选择
managedNatGateway
。 AKS 将预配 NAT 网关并将其附加到群集子网。 - 使用自带虚拟网络时选择
userAssignedNatGateway
。 此选项要求在创建群集之前预配 NAT 网关。
有关详细信息,请参阅将 NAT 网关与 AKS 配合使用。
userDefinedRouting
出站类型
注意
userDefinedRouting
出站类型是一种高级网络方案,需要正确的网络配置。
如果设置了 userDefinedRouting
,则 AKS 不会自动配置出口路径。 必须由你完成出口设置。
必须将 AKS 群集部署到先前已配置子网的现有虚拟网络中。 由于未使用标准负载均衡器 (SLB) 体系结构,因此必须建立显式流出量。 此体系结构需要向防火墙、网关、代理等设备显式发送出口流量,或需要允许 NAT 由分配给标准负载均衡器或设备的公共 IP 完成。
有关详细信息,请参阅通过用户定义的路由配置群集流出量。
none
的出站类型(预览版)
重要
none
出站类型需要仔细规划,以确保群集按预期运行,而不会对外部服务产生计划外依赖项。 有关完全隔离的群集,请参阅隔离群集注意事项。
如果设置 none
,则 AKS 将不会自动配置流出量路径。 此选项类似于 userDefinedRouting
,但不需要作为验证一部分的默认路由。
自带 (BYO) 虚拟网络场景和托管 VNet 场景均支持 none
出站类型。 但是,必须确保 AKS 群集部署到已定义显式出口路径(如有必要)的网络环境中。 对于 BYO VNet 场景,必须将群集部署到先前已配置子网的现有虚拟网络中。 由于 AKS 不预配标准负载均衡器或任何出口基础结构,因此必须根据需要建立显式出口路径。 这包括将流量路由到防火墙、代理、网关或其他自定义网络配置。
block
的出站类型(预览版)
重要
block
出站类型需要仔细规划,以确保不存在计划外的网络依赖项。 有关完全隔离的群集,请参阅隔离群集注意事项。
如果 block
已设置,AKS 将配置网络规则,以主动阻止来自群集的所有出口流量。 此选项对于必须限制出站连接的高度安全环境非常有用。
使用 block
时:
- AKS 确保没有公共互联网流量可以通过网络安全组 (NSG) 规则离开群集。 VNet 流量不受影响。
- 必须通过其他网络配置显式允许任何所需的出口流量。
block
选项提供额外的网络隔离级别,但需要仔细规划以避免中断工作负载或依赖项。
创建群集后更新 outboundType
创建群集后更改出站类型将根据需要部署或删除资源,以将群集放入新的出口配置。
下面的表显示了托管虚拟网络和 BYO 虚拟网络的出站类型之间支持的迁移路径。
托管 VNet 支持的迁移路径
每行显示出站类型是否可以迁移到顶部列出的类型。 “支持”表示可以迁移,而“不支持”或“不适用”表示不可迁移。
从|到 | loadBalancer |
managedNATGateway |
userAssignedNATGateway |
userDefinedRouting |
none |
block |
---|---|---|---|---|---|---|
loadBalancer |
空值 | 支持 | 不支持 | 不支持 | 支持 | 受支持 |
managedNATGateway |
支持 | 空值 | 不支持 | 不支持 | 支持 | 受支持 |
userAssignedNATGateway |
不支持 | 不支持 | 空值 | 不支持 | 不支持 | 不支持 |
none |
支持 | 受支持 | 不支持 | 不支持 | 空值 | 支持 |
block |
受支持 | 受支持 | 不支持 | 不支持 | 支持 | 空值 |
BYO VNet 支持的迁移路径
从|到 | loadBalancer |
managedNATGateway |
userAssignedNATGateway |
userDefinedRouting |
none |
block |
---|---|---|---|---|---|---|
loadBalancer |
空值 | 不支持 | 支持 | 受支持 | 受支持 | 不支持 |
managedNATGateway |
不支持 | 空值 | 不支持 | 不支持 | 不支持 | 不支持 |
userAssignedNATGateway |
支持 | 不支持 | 空值 | 支持 | 受支持 | 不支持 |
userDefinedRouting |
支持 | 不支持 | 支持 | 空值 | 支持 | 不支持 |
none |
支持 | 不支持 | 支持 | 支持 | 空值 | 不支持 |
仅支持在 loadBalancer
、managedNATGateway
(如果使用托管虚拟网络)、userAssignedNATGateway
和 userDefinedRouting
(如果使用自定义虚拟网络)之间进行迁移。
警告
将出站类型迁移到用户托管类型(userAssignedNATGateway
和 userDefinedRouting
)将会更改群集的出站公共 IP 地址。
如果启用了授权 IP 范围,请确保将新的出站 IP 范围追加到授权 IP 范围。
警告
更改群集上的出站类型会中断网络连接,并将导致群集的出口 IP 地址发生变化。 如果已将任何防火墙规则配置为限制来自群集的流量,需要更新这些规则以匹配新的流出量 IP 地址。
更新群集以使用新的出站类型
注意
需要使用 >= 2.56 版本的 Azure CLI 迁移出站类型。 使用 az upgrade
更新到最新版本的 Azure CLI。
- 使用
az aks update
命令更新群集的出站配置。
将群集从 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
- 将路由
0.0.0.0/0
添加到默认路由表。 请参阅在 Azure Kubernetes 服务 (AKS) 中使用用户定义的路由表自定义群集出口
az aks update --resource-group <resourceGroup> --name <clusterName> --outbound-type userDefinedRouting
在 BYO vnet 方案中将群集从 loadbalancer 更新为 userAssignedNATGateway
- 将 nat 网关与关联工作负载的子网相关联。 请参阅创建托管或用户分配的 NAT 网关
az aks update --resource-group <resourceGroup> --name <clusterName> --outbound-type userAssignedNATGateway