我假设你的 istio 入口网关服务类型是 NodePort,如果你的 istio 入口网关是 NodePort,那么你必须使用http://www.mytest.com:41333。
如果您想使用http://www.mytest.com,则必须将其更改为LoadBalancer。
您可以检查您的 istio 入口网关是否是 NodePort
kubectl get svc -n istio-system
并检查 istio 入口网关类型。
NodePort:在静态端口(NodePort)上公开每个节点 IP 上的服务。自动创建 NodePort 服务路由到的 ClusterIP 服务。您可以通过请求 NodeIP:NodePort 从集群外部联系 NodePort 服务。
LoadBalancer:使用云提供商的负载均衡器向外部公开服务。自动创建外部负载均衡器路由到的 NodePort 和 ClusterIP 服务。
如 istio文档中所述
如果 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 旨在通过提供与标准网络设备集成的 Network LB 实现来纠正这种不平衡,以便裸机集群上的外部服务也尽可能“正常工作”。
您可以在以下链接中了解更多信息: