如何让AKS流量有条件地通过内部子网进行路由?
解决AKS测试脚本通过内部IP访问目标站点且保留互联网连接的方案
针对你遇到的问题——新访问策略阻止公网IP来源的AAD用户登录,需要让Cluster A的测试脚本仅在访问目标站点时走内部IP,同时不影响集群整体互联网连接,以下是几个可行的Azure配置方案:
方案1:Azure Private DNS域名解析重定向
这是最简洁的集群级配置,通过修改域名解析规则,让Cluster A内的流量访问目标站点域名时自动指向内部IP,其他域名仍走公网解析:
- 在Azure门户创建对应站点域名的Private DNS区域(例如站点域名为
internal-test-site.com,则创建同名Private DNS区域) - 在该区域添加一条A记录,将站点域名映射到Cluster B站点的内部IP地址
- 将Cluster A所在的虚拟网络链接到这个Private DNS区域
- 完成后,Cluster A内的测试脚本访问站点域名时,会直接解析到内部IP,符合防火墙例外规则;集群其他流量的互联网访问不受任何影响
方案2:Pod级路由表隔离
如果需要更精细的控制(仅让运行测试脚本的Pod走内部路由),可以通过自定义路由表+AKS网络策略实现:
- 为Cluster A的子网创建自定义路由表,添加路由规则:
- 目标地址:Cluster B站点所在的内部子网IP范围
- 下一跳类型:选择VPN网关(或虚拟网络对等连接的下一跳,根据你的网络拓扑)
- 创建AKS网络策略,将上述路由表仅关联到运行测试脚本的Pod所在的命名空间,或带有特定标签的Pod
- 验证:测试脚本的Pod访问目标站点时会走内部路由,集群其他Pod和节点的互联网连接保持正常
方案3:Virtual Node隔离测试流量
如果测试脚本是临时运行的任务,可借助Azure Virtual Node实现流量隔离:
- 在Cluster A中启用Virtual Node,并将其关联到一个单独的子网
- 给该子网配置自定义路由表,添加目标站点内部IP段的路由规则(下一跳为VPN网关)
- 将测试脚本部署到Virtual Node上,这样测试流量访问站点时走内部IP,Virtual Node本身仍可正常访问互联网
验证步骤
- 运行测试脚本时,用
curl -v <站点域名/IP>或tracert <站点IP>检查流量的源IP和路由路径,确认使用的是内部IP - 测试集群内其他Pod/节点访问公网资源(如
curl google.com),确保互联网连接未受影响 - 确认防火墙例外规则中包含Cluster A内部节点/Pod的IP范围
内容的提问来源于stack exchange,提问作者Morgan Soren
相关产品推荐
相关产品推荐

