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

Azure WebApp与K8s集群VNet集成后无法访问Service IP问题求助

问题原因与解决方案

核心原因

  • Service IP路由缺失:AKS的ClusterIP服务地址来自集群默认分配的私有地址段(创建时未指定的话,AKS会自动选取一个如10.0.0.0/16的段),该段不在你现有VNet的子网范围内。WebApp所在VNet的流量无法路由到这个虚拟IP段,因为VNet路由表中没有指向AKS节点子网的对应规则。
  • DNS解析失效:Service的私有FQDN(格式为<service-name>.<namespace>.svc.cluster.local)由AKS集群内的CoreDNS负责解析。WebApp未配置将集群域的DNS请求转发到AKS的CoreDNS IP,导致无法解析这些FQDN。
  • 你提到的“集群未默认创建服务地址空间和子网”是正常行为:AKS的Service ClusterIP是虚拟IP,无需在VNet中创建物理子网,由kube-proxy通过iptables/IPVS在节点上完成流量转发。

解决步骤

1. 配置路由规则,实现WebApp到Service IP的访问

步骤1:获取AKS服务地址段

运行Azure CLI命令查看当前集群的Service地址池:

az aks show --resource-group <你的资源组名> --name <AKS集群名> --query serviceProfile.serviceCidr -o tsv

输出示例:10.0.0.0/16,这就是ClusterIP的地址范围。

步骤2:创建用户定义路由(UDR)并关联到app-subnet

  • 登录Azure门户,找到目标VNet,进入「路由表」页面,新建路由表。
  • 在路由表中添加规则:
    • 地址前缀:填入上述获取的服务地址段
    • 下一跃点类型:选择「虚拟网络」
    • 下一跃点目标:选择AKS的节点子网(aks-subnet)
  • 将该路由表关联到WebApp集成的app-subnet子网。

配置后,WebApp发往Service IP的流量会被路由到AKS节点子网,kube-proxy会自动将流量转发至对应Pod。

2. 配置DNS转发,实现WebApp到Service私有FQDN的访问

步骤1:获取AKS CoreDNS的ClusterIP

运行kubectl命令获取CoreDNS服务IP:

kubectl get service kube-dns -n kube-system -o jsonpath='{.spec.clusterIP}'

输出示例:10.0.0.10。

步骤2:配置WebApp的DNS转发规则

  • 登录Azure门户,进入目标WebApp的「网络」>「VNet集成」页面。
  • 点击「DNS配置」,添加自定义DNS规则:
    • 域名后缀:cluster.local(AKS默认集群域)
    • DNS服务器IP:填入上述获取的CoreDNS IP

若需解析特定命名空间的FQDN,可添加更具体的后缀(如<namespace>.svc.cluster.local)。

验证操作

配置完成后,通过WebApp控制台或应用内测试:

  • 测试Service IP访问:curl <service-cluster-ip>:<port>
  • 测试Service FQDN访问:curl <service-name>.<namespace>.svc.cluster.local:<port>

确认能正常访问即完成配置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 21:40:22