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

如何在AKS集群中暴露非HTTP服务供同子网Apache访问

可行的Tomcat AJP服务暴露方案

以下方案均适配同子网VM访问AKS内部服务的场景,可直接满足你通过ajp://10.x.x.x:5009/dbp_webui发起请求的需求:


方案1:使用Internal LoadBalancer(ILB)类型的Service(最推荐)

ILB会分配一个和AKS集群同VNet的10段内网静态IP,和你的Apache VM网络完全互通,无需额外路由配置:

  • 配置Service时添加ILB专属注解,直接映射AJP的5009端口到Tomcat Pod的对应端口即可,配置示例如下:
apiVersion: v1
kind: Service
metadata:
  name: tomcat-ajp-service
  annotations:
    service.beta.kubernetes.io/azure-load-balancer-internal: "true"
spec:
  type: LoadBalancer
  ports:
  - port: 5009
    targetPort: 5009 # 替换为你的Tomcat Pod实际开放的AJP端口
    protocol: TCP
  selector:
    app: tomcat # 替换为你的Tomcat Pod对应的标签
  • 配置完成后直接把Apache配置里的10.x.x.x替换为ILB分配的内网IP即可正常访问。
  • 优点:自带负载均衡,支持多Tomcat Pod流量自动分发,IP固定可用性高,完全匹配你要求的端口格式。
  • 注意:AJP协议默认无加密,不要开放公网访问权限,仅限内部VNet使用即可。

方案2:Azure CNI网络模式下直接使用Pod IP访问

如果你部署AKS时选择的是Azure CNI网络插件,所有Pod的IP会直接从VNet地址段分配,和Apache VM同属二层可通网络:

  • 无需额外服务配置,直接在Apache侧填写Tomcat Pod的内网IP+5009端口即可访问。
  • 优点:无额外配置成本,网络路径最短,性能损耗最低。
  • 缺点:Pod重建后IP会自动变更,需要自行维护IP更新逻辑,不支持多Pod负载均衡,只适合单实例测试场景使用。

方案3:使用NodePort类型的Service

  • 将Tomcat AJP端口配置为NodePort类型的服务,可手动指定30000-32767范围内的端口,之后通过AKS节点的内网IP+NodePort端口即可访问。如果必须使用5009端口,需要手动修改kube-apiserver的--service-node-port-range参数放开端口限制。
  • 配置示例如下:
apiVersion: v1
kind: Service
metadata:
  name: tomcat-ajp-nodeport
spec:
  type: NodePort
  ports:
  - port: 5009
    targetPort: 5009
    nodePort: 30009 # 可自定义,范围默认30000-32767
    protocol: TCP
  selector:
    app: tomcat
  • 优点:配置逻辑简单,不需要额外占用负载均衡资源。
  • 缺点:端口范围受限,节点销毁或IP变更会影响访问,需要自行实现负载均衡逻辑。

方案4:ClusterIP Service + 自定义VNet路由

如果你使用的是Kubenet网络模式的AKS,Pod IP属于集群内部地址段,可在VNet路由表中添加指向AKS节点池的Pod CIDR路由,配置完成后Apache VM就可以直接访问ClusterIP或Pod IP。

  • 优点:不需要额外的Service资源开销,可用端口不受限制。
  • 缺点:需要手动维护VNet路由规则,配置复杂度高,网络问题排查难度大,不推荐生产环境使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:36:06