在 Azure Kubernetes 服务 (AKS) 中使用用户定义的路由表自定义群集出口

可以自定义 Azure Kubernetes 服务 (AKS) 群集的出口,以适应特定方案。 AKS 默认为出口预配 Standard SKU 负载均衡器。 但是,如果不允许公共 IP,或者方案需要额外跃点进行流出,则默认设置可能无法满足所有方案的要求。

本文详细介绍了如何自定义群集的出口路由以支持自定义网络方案。 这些方案包括不允许公共 IP,并要求群集位于网络虚拟设备 (NVA) 后面的方案。

先决条件

  • Azure CLI 2.0.81 或更高版本。 运行 az --version 即可查找版本。 如果需要进行安装或升级,请参阅安装 Azure CLI
  • API 2020-01-01 或更高版本。

要求和限制

使用出站类型是一种高级网络方案,需要正确配置网络。 以下要求和限制适用于使用出站类型:

  • 设置 outboundType 要求 AKS 群集具有 vm-set-typeVirtualMachineScaleSetsStandardload-balancer-sku
  • outboundType 设置为 UDR 值需要用户定义的路由以及群集的有效出站连接。
  • 如果将 outboundType 设置为 UDR 的值,则意味着路由到负载均衡器的流入量源 IP 可能与群集的流出量目标地址不匹配。

使用用户定义的路由表自定义出口的概述

如果设置了 userDefinedRouting(这意味着必须配置出口),则 AKS 不会自动配置出口路径。

如果不使用标准负载均衡器 (SLB) 体系结构,必须建立显式出口。 必须将 AKS 群集部署到先前已配置子网的现有虚拟网络中。 此体系结构要求将出口流量显式发送到防火墙、网关或代理等设备,以便分配给标准负载均衡器或设备的公共 IP 可以处理网络地址转换 (NAT)。

使用 userDefinedRouting 创建负载均衡器

只有在部署了 loadBalancer 类型的第一个 Kubernetes 服务时,出站类型为 UDR 的 AKS 群集才会获得标准负载均衡器。 负载均衡器配置了用于入站请求的公共 IP 地址以及用于入站请求的后端池 。 Azure 云提供商配置入站规则,但不配置出站公共 IP 地址和出站规则。 你的 UDR 是出口流量的唯一来源。

注意

Azure 负载均衡器在设置规则之后才会产生费用

部署出站类型为 UDR 且具有 Azure 防火墙的群集

若要查看出站类型使用用户定义的路由的群集的应用程序,请参阅此使用 Azure 防火墙限制出口流量示例

重要

UDR 的出站类型要求路由表中有 0.0.0.0/0 的路由和 NVA 的下一个跃点目标。 路由表已具有指向 Internet 的默认 0.0.0.0/0。 如果 Azure 没有用于源网络地址转换 (SNAT) 的公共 IP 地址,只需添加此路由将无法提供出站 Internet 连接。 AKS 将验证你没有创建指向 Internet 的 0.0.0.0/0 路由,而是创建了指向网关、NVA 等的路由。使用 UDR 出站类型时,不会创建用于入站请求的负载均衡器公共 IP 地址,除非配置了 loadbalancer 类型的服务。 如果设置了 UDR 的出站类型,则 AKS 永远不会为出站请求创建公共 IP 地址。

后续步骤

有关用户定义的路由和 Azure 网络的详细信息,请参阅: