【问题标题】:Istio ingress gateway : domain name and port forwardingIstio 入口网关:域名和端口转发
【发布时间】:2020-09-11 22:34:33
【问题描述】:

我已经建立了一个 Istio 服务网格。到目前为止,它工作正常。从外部我只能使用http://www.mytest.com:41333 之类的端口号进行访问。我该怎么做才能将80 转发到41333 以便我可以使用http://www.mytest.com 访问它

这是我的网关:

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: mytest-gateway
spec:
  selector:
    istio: ingressgateway # use istio default controller
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "www.mytest.com"

不知道该怎么办...

【问题讨论】:

  • 你在 minikube 上运行你的网格吗?

标签: istio servicemesh


【解决方案1】:

我假设你的 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 实施来纠正这种不平衡,以便裸机集群上的外部服务也尽可能“正常工作”。

您可以在下面的链接中阅读更多信息:

【讨论】:

    猜你喜欢
    • 2019-04-18
    • 2020-12-27
    • 2021-08-10
    • 2020-06-17
    • 2020-11-09
    • 2022-01-11
    • 2019-11-01
    • 2021-07-12
    • 2023-01-12
    相关资源
    最近更新 更多