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

APIM无法访问VNet子网内AKS服务问题求助

解决APIM与AKS集成中的连通性验证及Swagger导入问题

首先看你的AKS服务状态:

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
todosvc LoadBalancer 10.0.196.84 10.0.1.4 8002:30409/TCP 19m

服务已经获取了子网内的IP 10.0.1.4,端口转发能访问说明AKS侧服务正常,接下来帮你解决连通性验证和Swagger导入的问题:

一、类似Ping的连通性验证方法

作为APIM新手,给你几个实用的双向连通性验证手段:

  • 从AKS Pod测试到APIM的连通性
    进入AKS任意运行中的Pod,用ping和curl测试APIM的私网IP(可以在Azure Portal的APIM实例概览页找到):

    kubectl exec -it <你的Pod名称> -- /bin/bash
    # 测试基础连通性
    ping <APIM私网IP>
    # 测试APIM健康状态(APIM专属健康检查路径)
    curl http://<APIM私网IP>/status-0123456789abcdef
    

    如果curl返回200状态码,说明AKS到APIM的网络是通的。

  • 从APIM测试到AKS服务的连通性
    利用APIM自带的工具就能验证,不用额外部署VM:

    1. 在APIM中创建一个临时测试API,添加一个指向AKS服务端点(http://10.0.1.4:8002)的GET操作
    2. 进入该操作的测试控制台,发送请求,查看是否能收到AKS服务的正常响应
    3. 或者用自定义策略快速验证(在API的入站策略中添加):
      <send-request mode="new" response-variable-name="aksResponse" timeout="20" ignore-error="false">
          <set-url>http://10.0.1.4:8002</set-url>
          <set-method>GET</set-method>
      </send-request>
      <return-response>
          <set-status code="200" reason="OK" />
          <set-body>@(((IResponse)context.Variables["aksResponse"]).Body.As<string>())</set-body>
      </return-response>
      
      调用这个API后,如果能返回AKS服务的内容,说明APIM到AKS的网络连通正常。
  • 检查子网NSG规则
    确认APIM子网和AKS服务所在子网的网络安全组(NSG)都允许双向流量:

    • 允许APIM子网的IP段访问AKS服务的8002端口
    • 允许AKS子网的IP段响应APIM的请求(比如允许出站的HTTP响应)

二、Swagger导入问题排查(已确认端点可直接访问)

既然你能直接访问AKS服务端点,那Swagger导入失败大概率是以下几个原因:

  • Swagger文档的URL无法被APIM访问
    你导入时填写的Swagger URL是不是http://10.0.1.4:8002/swagger/v1/swagger.json这类内网地址?先用上面的APIM测试方法验证这个URL是否能正常访问。如果Swagger地址用了相对路径、公网域名(而AKS服务没暴露公网),APIM自然无法获取文档。

  • Swagger文档中的Server配置错误
    打开Swagger文档查看servers字段,如果配置的是公网地址或者不正确的内网地址,APIM导入后会无法正确映射端点。可以手动修改Swagger文档,把servers改成http://10.0.1.4:8002,再重新导入。

  • Swagger端点需要认证
    如果你的Swagger文档接口需要API密钥、Bearer Token等认证,APIM导入时默认不会携带这些信息,导致无法获取文档。可以在导入Swagger的“高级”选项里添加对应的请求头(比如Authorization: Bearer <你的Token>),或者临时关闭Swagger端点的认证,导入完成后再开启。

  • APIM VNet配置细节遗漏
    确认APIM确实是外部模式关联到了目标子网,同时如果AKS服务用的是服务名称(而不是IP),要确保APIM的私有DNS区域能正确解析这个服务名(如果配置了VNet集成的DNS)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 19:12:47