【发布时间】:2021-11-05 00:47:41
【问题描述】:
我们正在尝试在多集群/多主网格中设置出口网关 出口网关仅位于一个集群中但从两个集群中使用的配置。
用例是集群位于不同的网络区域,我们希望能够 将流量透明地路由到另一个区域中的客户端。
我们在一个集群中关注this guide,它运行良好。但是,我们无法在第二个集群中设置 VirtualService
在第一个集群中使用出口网关。
在将以下虚拟服务部署到第二个集群时,我们得到 503 和 cluster_not_found。
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: direct-cnn-through-egress-gateway
spec:
hosts:
- edition.cnn.com
gateways:
- istio-egressgateway
- mesh
http:
- match:
- gateways:
- mesh
port: 80
route:
- destination:
host: istio-egressgateway.istio-system.svc.cluster.local
port:
number: 80
weight: 100
- match:
- gateways:
- istio-egressgateway
port: 80
route:
- destination:
host: edition.cnn.com
port:
number: 80
weight: 100
第二个集群中一个 pod 上的端点代理配置错过了istio-egressgateway.istio-gateways.svc.cluster.local
端点(发现所有其他服务并将其定向到其他集群的东西向网关)。
我们认为这就是这个VirtualService 在第二个集群中不起作用的原因。
作为一种解决方法,我们可以将出口流量重定向到第一个集群的入口网关,但这 缺点是流量离开并重新进入网格,可能对跟踪和监控产生影响。
目前是否可以设置一个可供网格中所有集群使用的单一出口网关,还是我们必须采用解决方法?
【问题讨论】:
-
嗨@Tobias Henkel,欢迎来到StackOverflow!你能告诉我你是如何部署你的集群(裸机,任何云提供商)的吗?您是否尝试使用 ServiceEntry 而不是 VirtualService?
-
您好,感谢您的回复。我的测试设置由 AWS 中的两个 EKS 集群组成,但目标是 EKS 集群和 openstack 上的 onprem k8s 集群的组合。关于 ServiceEntry,您的意思是在集群 B 中而不是在 VirtualService 中,并且列出了以 A 的东西网关为目标的固定端点?
-
我将再为您提供一个多集群load balancing 的示例。我还发现了创建跨集群应用程序(但针对 GKE)的非常好的教程。你可以看看here和here
标签: istio istio-gateway