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

Istio VirtualService 80端口配置仅nsgreen生效nsblue不生效排查

问题根因

你当前配置的核心错误出在Istio Gateway的server块定义规则不符合规范:

  • Istio要求同一个监听端口下的所有host域名必须合并到同一个server块的hosts数组中,你将两个域名拆分为两个监听80端口的独立server块,会出现配置覆盖问题,排在后面的myapp.int.mydomain.com对应的server生效,myapp-blue.int.mydomain.com没有被Gateway的80端口正确监听,导致该域名的80端口流量无法匹配到对应的VirtualService规则,无法被Istio路由到nsblue下的服务。
  • 你能通过8080端口访问nsblue服务,是因为流量绕过了Istio Gateway的路由规则,直接访问到了IngressGateway对外开放的8080端口(或后端服务的NodePort),没有经过Gateway的host匹配逻辑。

解决方案

调整Gateway配置,将两个域名合并到同一个80端口的server块中即可,调整后的完整配置如下:

修正后的Gateway配置

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: mygateway
  namespace: istio-system
spec:
  selector:
    istio: ingressgateway
  servers:
  - hosts:
    - myapp.int.mydomain.com
    - myapp-blue.int.mydomain.com
    port:
      name: http-myapp
      number: 80
      protocol: HTTP

其他可选验证项

如果调整后仍有问题,可依次检查以下配置:

  • 确认Istio IngressGateway对应的Service对外开放了80端口,执行命令kubectl get svc istio-ingressgateway -n istio-system查看端口列表确认。
  • 确认nsblue命名空间下的Servicemyapp-server-blue确实监听8080端口,且Pod服务正常。
  • 执行istioctl analyze命令检查所在命名空间下的Istio配置是否存在语法或规则冲突。

你原来的两个VirtualService配置不需要做修改,调整Gateway配置后重新应用即可实现两个域名都通过80端口访问的预期效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:36:04