问题描述
我有两个不同的集群(EKS,v1.18),它们有自己的网格(v1.9.0)。
我在集群 A 上有一个 thanos 部署,在集群 B 上有一个 Prometheus 部署(thanos sidecar 也在运行)。目标是让 thanos 查询远程集群中的这些 sidecar,以通过内部负载均衡器(ELB 经典)将查询代理到每个集群(使用 S3 或类似的块持久性超出此问题的范围)
Gateway、Virtual Service 和Service 的资源都在集群B 中,我可以在连接到网络时在本地运行thanos,并使用gRPC 成功连接到集群B 中的sidecar。
集群 B 的 FQDN 的 ServiceEntry 已在集群 A 中创建,解析有效,路由正确,但集群 A 中的部署无法连接到集群 B。
Istio sidecar(来自集群 A 中的源工作负载 thanos)显示连接正在重置:
[2021-02-26T14:41:03.509Z] "POST /thanos.Store/Info HTTP/2" 0 - http2.remote_reset - "-" 5 0 4998 - "-" "grpc-go/1.29.1" "50912787-d528-994f-b8ad-78dd42081fea" "thanos.dev.integrations.internal.fqdn:10901" "-" - - 172.20.65.175:10901 172.30.9.174:37594 - default
我在集群 B 的入口网关中没有看到传入的请求(我有一个公共的和一个私有的,我检查了两者只是为了确定)。
我试过了:
- 使用 DR 强制将 http1.1 升级到 http2
- 使用 DR 强制禁用 TLS
- 排除私有 LB CIDR 范围以绕过代理
资源(集群 A)
服务入口:
---
apiVersion: networking.istio.io/v1beta1
kind: ServiceEntry
Metadata:
name: thanos-integrations-dev
namespace: thanos
spec:
hosts:
- thanos.dev.integrations.internal.fqdn
location: MESH_EXTERNAL
ports:
- name: grpc-thanos-int-dev
number: 10901
protocol: GRPC
resolution: DNS
资源(集群 B)
网关:
---
apiVersion: networking.istio.io/v1beta1
kind: Gateway
Metadata:
annotations:
Meta.helm.sh/release-name: istio-routing-layer
Meta.helm.sh/release-namespace: istio-system
creationTimestamp: "2021-02-25T11:37:49Z"
generation: 3
labels:
app.kubernetes.io/instance: istio-routing-layer
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: istio-routing-layer
app.kubernetes.io/version: 0.0.1
helm.sh/chart: istio-routing-layer-0.0.1
name: thanos
namespace: istio-system
spec:
selector:
istio: internal-ingressgateway
servers:
- hosts:
- thanos.dev.integrations.internal.fqdn
port:
name: grpc-thanos
number: 10901
虚拟服务:
---
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
Metadata:
annotations:
Meta.helm.sh/release-name: istio-routing-layer
Meta.helm.sh/release-namespace: istio-system
creationTimestamp: "2021-02-25T11:37:49Z"
generation: 3
labels:
app.kubernetes.io/instance: istio-routing-layer
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: istio-routing-layer
app.kubernetes.io/version: 0.0.1
helm.sh/chart: istio-routing-layer-0.0.1
spec:
gateways:
- thanos
hosts:
- thanos.dev.integrations.internal.fqdn
http:
- route:
- destination:
host: thanos-sidecar.prometheus.svc.cluster.local
port:
number: 10901
服务:
---
apiVersion: v1
kind: Service
Metadata:
annotations:
Meta.helm.sh/release-name: prometheus-thanos-istio
Meta.helm.sh/release-namespace: prometheus
creationTimestamp: "2021-02-25T14:31:02Z"
labels:
app.kubernetes.io/instance: prometheus-thanos-istio
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: prometheus-thanos-istio
app.kubernetes.io/version: 0.0.1
helm.sh/chart: prometheus-thanos-istio-0.0.1
spec:
clusterIP: None
ports:
- name: grpc-thanos
port: 10901
protocol: TCP
targetPort: grpc
selector:
app: prometheus
component: server
sessionAffinity: None
type: ClusterIP
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)