kubernetes 共享vpc和vpc对等之间的连接错误

ubof19bj  于 2023-02-11  发布在  Kubernetes
关注(0)|答案(2)|浏览(159)

我在GCP中有这样的架构。
网络项目:2个VPC,dev和pro,各有两个子网,子网A在europe-west1,子网B在us-central1,pro VPC也是一样,两个VPC都共享给其他项目,我在每个项目上都有一个GKE集群;因此,我在VPC dev的子网A中有一个GKE集群,在VPC dev的子网B中有一个GKE集群,在pro VPC中也是如此。
我还有其他项目(项目B)使用一些工具,如Grafana、Vault等,使用其他vpc和europe-west1中的一个子网,我已通过VPC对等连接到dev VPC。在此项目中,我也有GKE群集。我的问题是,如果我想从项目B连接到dev VPC中的任何GKE群集,如果我尝试与子网A连接,则可以正常工作,但与子网B连接则不行,我不知道原因。我尝试创建防火墙规则,但即使使用允许所有流量和所有端口的防火墙规则也不行。
编辑:
现在,我可以从项目B中的GKE群集ping子网B中的pod或节点,但无法访问子网B中的内部IP负载平衡器(我在子网A中有相同的服务,它工作正常)。我尝试使用允许所有入/出流量和所有端口的防火墙规则,但仍然无法工作
我的架构是这样的:

我现在的问题是,我可以从GKE集群5 curl (例如)到GKE集群1和3中的内部负载均衡器服务,但我不能到GKE集群2和4。
这是我的服务,它之所以工作,是因为从集群内的另一个pod来看,curl工作正常

apiVersion: v1
kind: Service
metadata:
  annotations:
    networking.gke.io/load-balancer-type: Internal
  name: prometheus
  namespace: monitoring
spec:
  ports:
  - name: http
    port: 9090
    protocol: TCP
    targetPort: 9090
  selector:
    app: prometheus
    prometheus: prometheus-kube-prometheus-prometheus
  sessionAffinity: None
  type: LoadBalancer

编辑:我上传的图像从网络测试:

谢谢

bis0qfac

bis0qfac1#

在两个网络之间设置VPC网络对等,然后设置将流量定向到相应子网的路由。此外,您可能需要在两个网络中创建防火墙规则,以允许流量通过。例如,您可以创建一个防火墙规则来允许从项目B的子网到开发VPC子网B的流量。您还可以创建一个防火墙规则来允许从dev VPC Subnet B到Project B的子网的流量。最后,您可能需要在GKE集群上配置网络设置来允许流量流动。
你能检查一下VPC共享是不可能的私人邮件ID和组织邮件ID是必要的,因为它涉及IAM。请参阅此VPC对等限制
请参阅本文档添加特定用例的防火墙规则,并参阅本SO中关于如何打开特定端口(如9090)的内容。
根据官方文档如果导出VPC网络的动态路由模式是区域性的,那么该网络只在同一区域导出动态路由。如果您的网络是全球性的,那么只有GKE 5将与GKE 2和GKE 4交互,因为两者不在同一区域。
请检查此doc以进行一些连接测试,并尝试测试连接,这将阻止防火墙/路由问题的可能性

dphi5xsq

dphi5xsq2#

最后我找到了解决方案。负载均衡器需要这个注解:

networking.gke.io/internal-load-balancer-allow-global-access: "true"

我试过了很管用
感谢所有人

相关问题