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

Azure容器服务(AKS):如何向其他VNET资源暴露容器?

让其他VNET资源访问AKS内部服务的可行方案

针对你用预览版AKS(自动分配VNET)的场景,我整理了几个靠谱的实现方式,你可以根据自己的需求挑选:

方案1:VNET对等连接(最常用、成本低)

这是跨VNET访问最直接的方式,只要把AKS自动创建的VNET和目标VNET做双向对等,就能打通网络:

  1. 先找到AKS的VNET信息
    首先得拿到AKS节点所在的资源组,用CLI命令:

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

    接着用这个资源组名查询AKS的VNET详情:

    az network vnet list --resource-group <上面拿到的节点资源组名>
    

    记下来VNET的名称和地址空间,比如aks-vnet-xxx和10.240.0.0/16。

  2. 建立双向VNET对等连接

    • 先在AKS的VNET里创建指向目标VNET的对等连接,允许双向流量;
    • 再在目标VNET里创建指向AKS VNET的对等连接,同样允许双向流量;
    • 注意两个VNET的地址空间不能重叠,否则对等会失败。
  3. 配置内部服务的访问入口
    给你的内部API创建Internal Load Balancer类型的Service,这样AKS会在自己的VNET里分配一个私有IP,其他VNET的资源就能直接通过这个私有IP访问API了。示例YAML:

    apiVersion: v1
    kind: Service
    metadata:
      name: internal-api-service
      annotations:
        service.beta.kubernetes.io/azure-load-balancer-internal: "true"
    spec:
      type: LoadBalancer
      ports:
      - port: 80
        targetPort: 8080
      selector:
        app: internal-api
    

    最后别忘了在AKS节点的NSG里添加入站规则,允许目标VNET的地址空间访问你API的端口。

方案2:Azure Private Link(更安全、适合跨租户/严格隔离场景)

如果你的场景需要更严格的网络隔离,或者要跨Azure租户访问,Private Link是更好的选择:

  1. 创建Internal Load Balancer服务
    先按上面的方式创建一个Internal Load Balancer的Service,拿到它的私有IP或者保留的IP。

  2. 为服务创建Private Endpoint
    在目标VNET里创建Private Endpoint,关联到AKS的Internal Load Balancer服务。这样目标VNET里的资源就能通过这个Private Endpoint访问AKS的内部服务,流量完全走Azure骨干网,不会暴露到公网。

  3. 配置Private DNS解析
    创建或关联Private DNS区域,把你API的域名解析到Private Endpoint的IP,这样目标VNET里的资源就能用域名访问了。

注意事项

  • 预览版AKS自动创建的VNET默认启用了网络策略(比如Calico),要确保策略允许目标VNET的流量访问内部服务;
  • 如果用VNET对等,要确认两个VNET的路由表没有冲突;
  • 测试的时候可以先在目标VNET里部署一个测试VM,ping AKSService的私有IP,或者curl API端口,验证连通性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:45:45