1

我正在尝试从 GAE 中的项目访问 GKE 上的弹性搜索集群 - 灵活。由于我不需要外部负载均衡器,因此我正在遵循本指南: https : //cloud.google.com/kubernetes-engine/docs/how-to/internal-load-balancing GKE 和 GAE 都已部署在同一地区,但对弹性搜索集群的调用一直超时。有没有人这样做并可以分享一些提示将不胜感激!

我的service.yaml文件如下所示:

apiVersion: v1
kind: Service
metadata:
  name: internalloadbalancerservice
  annotations:
    cloud.google.com/load-balancer-type: "Internal"
  labels:
    app.kubernetes.io/component: elasticsearch-server
    app.kubernetes.io/name: elasticsearch  #label selector service
spec:
  type: LoadBalancer
  loadBalancerSourceRanges:   # restrict access
  - xxxxxxxx
  ports:
  - name: myport
    port: 9000
    protocol: TCP # default; can also specify UDP
  selector:
    app.kubernetes.io/name : elasticsearch # label selector for Pods
    app.kubernetes.io/component: elasticsearch-server
4

3 回答 3

4

GCP 现在具有带有内部负载均衡器的 beta全局访问功能,这将允许从同一网络中的任何区域访问内部负载均衡器。

这对您的情况也有帮助。如果两个服务使用内部 IP 地址公开但位于不同的区域。

更新

全局访问功能现已稳定(适用于GKE 1.16.x及更高版本),可以通过将以下注释添加到您的服务来启用它。

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

例如:下面的清单将internalloadbalancerservice使用内部 IP 地址创建您的 LoadBalancer,并且可以从同一 VPC 内的任何区域访问该 IP。

apiVersion: v1
kind: Service
metadata:
  name: internalloadbalancerservice
  annotations:
    cloud.google.com/load-balancer-type: "Internal"

    # Required to enable global access
    networking.gke.io/internal-load-balancer-allow-global-access: "true"

  labels:
    app.kubernetes.io/component: elasticsearch-server
    app.kubernetes.io/name: elasticsearch  #label selector service
spec:
  type: LoadBalancer
  loadBalancerSourceRanges:   # restrict access
  - xxxxxxxx
  ports:
  - name: myport
    port: 9000
    protocol: TCP # default; can also specify UDP
  selector:
    app.kubernetes.io/name : elasticsearch # label selector for Pods
    app.kubernetes.io/component: elasticsearch-server

这适用于GKE 1.16.x及更高版本。对于较旧的 GKE 版本,您可以参考此答案

于 2020-01-10T12:09:01.593 回答
2

为了让其他人免于类似情况,我将分享我的发现,为什么我无法从 GAE 连接到我的 GKE 应用程序。GAE 位于欧洲西部地区,而 GKE 位于欧洲西部 4a 地区。我以为那会是同一个地区。但是将 GKE 区域更改为 europe-west-1b 有效。不是很明显,但是在阅读文档时,GAE region europe-west 和 GKE region europe-west-1b 都在比利时。

于 2019-02-11T13:00:37.370 回答
0

假设 GAE 应用程序和 GKE 集群位于同一个区域,并且在同一个 VPC 网络中,我建议确保您已创建Ingress 允许应用到 GKE 节点的防火墙规则作为目标,GAE 应用程序虚拟机作为源.

记住虚拟机的入口被隐含的拒绝入口规则拒绝。因此,除非您创建入口允许防火墙规则,否则您将无法将数据包发送到任何虚拟机。并且要使用内部负载平衡 (ILB),客户端和后端 VM 必须位于相同的位置:
- 区域
- VPC 网络
- 项目

于 2019-02-04T21:35:20.060 回答