我假设你的 istio 入口网关服务类型是 NodePort,如果你的 istio 入口网关是 NodePort 那么你必须使用http://www.mytest.com:41333。
如果您想使用http://www.mytest.com,则必须将其更改为LoadBalancer。
你可以检查你的 istio 入口网关是否是 NodePort
kubectl get svc -n istio-system
并检查 istio 入口网关类型。
NodePort:在每个节点的 IP 上的静态端口(NodePort)上公开服务。自动创建 NodePort 服务路由到的 ClusterIP 服务。您可以通过请求 NodeIP:NodePort 从集群外部联系 NodePort 服务。
LoadBalancer:使用云提供商的负载平衡器在外部公开服务。自动创建外部负载均衡器路由到的 NodePort 和 ClusterIP 服务。
正如 istio 中提到的documentation
如果 EXTERNAL-IP 值为(或永久),则您的环境不会为入口网关提供外部负载平衡器。在这种情况下,您可以使用服务的节点端口访问网关。
如果您使用类似 aws 的云,您可以使用带有适当注释的 AWS 负载均衡器配置 Istio。
在支持外部负载均衡器的云提供商上,将 type 字段设置为 LoadBalancer 会为您的服务提供负载均衡器。负载均衡器的实际创建是异步发生的,有关已配置的均衡器的信息发布在服务的 .status.loadBalancer
如果它是内部部署的,比如 minikube,那么你可以看看 metalLB
MetalLB 是裸机 Kubernetes 集群的负载平衡器实现,使用标准路由协议。
Kubernetes 不为裸机集群提供网络负载均衡器(LoadBalancer 类型的服务)的实现。 Kubernetes 附带的 Network LB 的实现都是调用各种 IaaS 平台(GCP、AWS、Azure ……)的胶水代码。如果您没有在受支持的 IaaS 平台(GCP、AWS、Azure...)上运行,LoadBalancers 在创建时将无限期地保持在“待定”状态。
裸机集群运营商只剩下两个较小的工具来将用户流量引入他们的集群,即“NodePort”和“externalIPs”服务。这两个选项在生产使用方面都有很大的缺点,这使得裸机集群成为 Kubernetes 生态系统中的二等公民。
MetalLB 旨在通过提供与标准网络设备集成的网络 LB 实施来纠正这种不平衡,以便裸机集群上的外部服务也尽可能“正常工作”。
您可以在下面的链接中阅读更多信息: