Kubernetes 要重定向到主机的Istio ServiceEntry和VirtualService
该场景有2个kubernetes集群,配置了Istio复制控制平面,并在kube dns中为.global区域转发。来自发起pod的请求在两个集群中的命名必须一致,这意味着不应直接使用来自发起pod的“.global” 考虑到这一点,我们的想法是让集群1(bar-1.namespace1)中的原始pod到达(foo-1.namespace2),同时让istio将“foo-1.namespace2”的流量重定向到“foo-1.namespace2.global”,以便指向第二个集群的ServiceEntry可以拾取它 现在,这是可行的,但这仅仅是因为当尝试访问“foo-1.namespace2”时,pod中resolv.conf中的配置将使用“.global”自动完成调用,但是一种直接访问资源而不是“失败”的方法是可取的 我们的想法是采用以下工作流:Kubernetes 要重定向到主机的Istio ServiceEntry和VirtualService,kubernetes,istio,cockroachdb,Kubernetes,Istio,Cockroachdb,该场景有2个kubernetes集群,配置了Istio复制控制平面,并在kube dns中为.global区域转发。来自发起pod的请求在两个集群中的命名必须一致,这意味着不应直接使用来自发起pod的“.global” 考虑到这一点,我们的想法是让集群1(bar-1.namespace1)中的原始pod到达(foo-1.namespace2),同时让istio将“foo-1.namespace2”的流量重定向到“foo-1.namespace2.global”,以便指向第二个集群的Service
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: redirect-foo-1.namespace2
namespace: namespace1
spec:
hosts:
- foo-1.namespace2
http:
- route:
- destination:
host: foo-1.namespace2.global
rewrite:
authority: foo-1.namespace2.global
实际将流量发送到第二个群集的ServiceEntry。这是有效的
apiVersion: networking.istio.io/v1beta1
kind: ServiceEntry
metadata:
name: foo-1.namespace2-global
namespace: namespace1
spec:
hosts:
- foo-1.namespace2-global
location: MESH_INTERNAL
ports:
- name: cockroachdb-http
number: 8080
protocol: HTTP
- name: tcp-cockroachdb
number: 26257
protocol: TCP
resolution: DNS
addresses:
- 240.0.4.10
endpoints:
- address: 10.0.0.1
ports:
cockroachdb-http: 15443
tcp-cockroachdb: 15443
正如您所说,.global不应该从pod中使用。这是kube dns,它将这些请求重定向到另一个dns吊舱;在istio系统名称空间中。您是否已启动并运行此dns吊舱?您可以共享您的配置吗?IstiocRedons已启动并正在运行,我可以解析任何.global地址,因为kube dns配置具有适当的区域,并转发到承载此区域的IstiocRedons服务。事实上,这是一个有效的配置,因为pod resolv.conf将.global添加到pod名称中,然后istiocordens能够找到它,并将流量引导到适当的端点。我希望有一些更干净的东西,因为使用resolv.conf中的搜索域似乎我“无法”访问serviceentry,而不是显式地选择它。
apiVersion: networking.istio.io/v1beta1
kind: ServiceEntry
metadata:
name: foo-1.namespace2-global
namespace: namespace1
spec:
hosts:
- foo-1.namespace2-global
location: MESH_INTERNAL
ports:
- name: cockroachdb-http
number: 8080
protocol: HTTP
- name: tcp-cockroachdb
number: 26257
protocol: TCP
resolution: DNS
addresses:
- 240.0.4.10
endpoints:
- address: 10.0.0.1
ports:
cockroachdb-http: 15443
tcp-cockroachdb: 15443