Azure Container Apps从消费型迁移至工作负载配置文件后的网络问题
问题描述
我的架构为Hub-Spoke场景,辐网中的容器应用环境连接至10.70.10.0/23网段的VNET/子网:
- Consumption Only模式:所有容器获取该网段内IP,子网关联的路由表将所有流量路由至对等中心VNET中的防火墙,运行正常

- 迁移至Workload Profile模式后:所有容器获取100.100.x.x段IP,流量不再通过路由表,无法访问本地服务,防火墙未收到相关流量

故障原因与解决方案
核心原因
Workload Profile模式采用Kubernetes CNI网络模型,容器分配的100.100.x.x地址属于专用IP池,流量转发逻辑与Consumption模式完全不同:后者直接复用关联子网的路由规则,而Workload Profile的流量默认不会继承原子网的路由配置,导致Hub-Spoke架构中的防火墙路由失效。
分步解决
1. 定位Workload Profile专用节点子网
登录Azure门户,找到容器应用环境所属的VNET,查找名称包含workload或node的子网(这是模式切换后自动创建的节点子网,而非原10.70.10.0/23子网),记录其CIDR范围。
2. 关联路由表到节点子网
将原来用于引导流量到中心防火墙的路由表,重新关联到上述Workload Profile节点子网:
- 进入Azure路由表资源页面,切换到「子网」选项卡
- 添加找到的节点子网,确认路由表中
0.0.0.0/0 → 防火墙私有IP等核心规则配置正确
3. 启用路由传播
确保路由表允许BGP路由传播,保证Hub-Spoke对等连接的路由能被Workload Profile节点识别:
- 在路由表的「配置」选项卡中,开启「对虚拟网络网关的路由传播」
- 或使用Azure CLI命令执行:
az network route-table update --name <你的路由表名称> --resource-group <资源组名称> --disable-bgp-route-propagation false
4. 验证流量路径
- 进入容器实例,执行
traceroute <本地服务IP>或curl <本地服务地址>,确认流量是否经过防火墙IP - 查看中心防火墙的访问日志,检查是否有100.100.x.x段的流量请求
5. 检查NSG规则
- 确保Workload Profile节点子网的NSG允许出站流量到防火墙的私有IP
- 同时允许防火墙返回的流量进入100.100.x.x段地址范围
内容的提问来源于stack exchange,提问作者pabes
相关产品推荐
相关产品推荐

