You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过Terraform配置AKS路由表指向对等VNet的Hub NAT GW?

问题解答

核心结论

完全可以让Spoke VNet中的AKS将0.0.0.0/0流量路由到Hub VNet的NAT网关,问题出在不能仅依赖AKS的network_profile直接指定跨VNet的NAT网关,需要结合自定义路由表和AKS的路由覆盖配置来实现。

具体实现步骤

1. 确认Hub-Spoke对等连接的路由传递配置

  • 确保Hub VNet到Spoke VNet的对等连接开启允许网关传输(Allow gateway transit)
  • 确保Spoke VNet到Hub VNet的对等连接开启使用远程网关(Use remote gateways)
  • 验证Hub VNet的NAT网关所在子网的路由表配置正确,且Spoke VNet可通过对等连接访问该NAT网关

2. 为AKS子网配置自定义路由表

创建自定义路由表并添加以下规则:

  • 地址前缀:0.0.0.0/0
  • 下一跳类型:虚拟网络对等连接
  • 下一跳目标:Hub VNet的对等连接对象
  • 将该路由表关联到AKS的节点子网,若使用Azure CNI模式,需同时关联Pod子网

3. 调整AKS的网络配置,禁用自带出站NAT

在Terraform的AKS配置中,指定使用用户自定义路由,禁用AKS自动创建的NAT网关:

resource "azurerm_kubernetes_cluster" "aks" {
  # 其他基础配置...

  network_profile {
    network_plugin    = "azure" # 或"kubenet",根据实际网络模式调整
    outbound_type     = "userDefinedRouting" # 关键:指定使用自定义路由
    load_balancer_sku = "standard"

    # 若之前配置过nat_gateway_profile,需移除或设置enabled = false
    # nat_gateway_profile {
    #   enabled = false
    # }
  }
}

注意:如果使用Kubenet模式,需删除AKS自动关联的默认路由表,避免其优先级高于自定义路由。

4. 验证路由生效

部署完成后,登录AKS节点或Pod执行以下命令验证:

# 查看节点路由表
ip route show

# 测试出站流量源IP是否为Hub NAT网关的公网IP
curl ifconfig.me

常见坑点排查

  • 路由优先级:若AKS自动创建的路由优先级更高,需删除AKS自动关联的路由表,确保自定义路由表生效
  • CNI模式Pod路由:Azure CNI模式下Pod路由继承节点子网配置,需确保Pod子网也关联了自定义路由表
  • 对等连接流量权限:确认Hub与Spoke的对等连接未限制双向流量,允许出站/入站通行

内容的提问来源于stack exchange,提问作者Sven

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 01:12:38