代码之家  ›  专栏  ›  技术社区  ›  MassHysteria

专用GKE集群之间的跨集群通信失败(Pod到控制平面)

  •  0
  • MassHysteria  · 技术社区  · 1 年前

    我们在同一个GCP项目上有两个私人GKE集群。它们都位于同一个专有网络中。

    集群A是一个运行Jenkins的集群,代理作为短暂的pod。 集群B是我们部署微服务的地方。

    集群A需要到达集群B。

    当尝试使用Helm进行部署时,我们会得到:

    错误:无法访问Kubernetes集群:Get "https://192.168.221.18/version“:拨号tcp 192.168.221.18:443:i/o 超时

    192.168.221.18 是集群B的专用控制平面端点。

    到目前为止我所尝试的:

    由于集群在同一个VPC网络上,我检查了集群A子网的路由:

    看到有一个子网在对等192.168.221.16/28:

    我向防火墙添加了集群A节点的IP地址(我们只有一个节点),该地址允许443上的流量到达集群B控制平面:

    我仍然从Jenkins代理那里收到同样的超时错误消息。 所以我想问的是,从集群a中的吊舱到达集群B的控制平面是否可能?

    非常感谢。

    0 回复  |  直到 1 年前
        1
  •  0
  •   MassHysteria    1 年前

    好的,现在这个问题解决了。如果有人在 内部的 控制平面端点:

    由于集群在同一VPC和区域上,因此在尝试到达集群B的控制平面时使用次要Pod范围。如果你的Secondary Pod IP范围不属于公共范围,你可以将其添加到控制平面的主授权地址中,这样就可以了。

    如果不是这样,您将不得不使用ip-masq代理。安装它并创建一个configMap,如下所示:

    nonMasqueradeCIDRs:
      - 192.168.114.0/24
      - 172.38.0.0/21 
    masqLinkLocal: false
    resyncInterval: 60s
    

    其中192.168.114.0/24是群集A的子网范围,172.38.0.0/21是辅助Pod IP范围。这应该告诉ip masq代理,这些范围不需要NAT。这现在意味着节点IP地址是到达控制平面的地址,而不是次要Pod IP范围。