GCP内部负载平衡器

时间:2019-02-04 09:16:29

标签: google-app-engine elasticsearch google-kubernetes-engine internal-load-balancer

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

我的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

3 个答案:

答案 0 :(得分:3)

GCP现在具有内部负载平衡器的beta Global Access功能,该功能将允许从同一网络内的任何区域访问内部负载平衡器。

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

更新

全球访问功能现已稳定(对于 GKE 1.16.x 及更高版本),可以通过在服务中添加以下注释来启用它。

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

例如 :以下清单将使用内部IP地址创建您的internalloadbalancerservice 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版本,您可以参考this answer

答案 1 :(得分:1)

为使其他任何人都免于类似情况的困扰,我将分享我为何无法从GAE连接到我的GKE应用程序的发现。 GAE位于欧洲西部地区,而GKE位于欧洲西部4a地区。我以为那是同一地区。但是将GKE区域更改为europe-west-1b是可行的。不是很明显,但是在阅读文档GAE地区“欧洲西部”和“ GKE地区欧洲”西部-1b时都在比利时。

答案 2 :(得分:0)

假设GAE应用程序和GKE群集位于同一区域,并且在同一VPC网络中,我建议确保您已创建Ingress allow firewall rules并将其应用于GKE节点作为GAE的目标应用虚拟机作为源。

“隐式拒绝入口”规则拒绝记住对VM的入口。因此,除非您创建Ingress allow防火墙规则,否则您将无法将数据包发送到任何VM。要使用Internal Load Balancing (ILB),客户端VM和后端VM必须位于相同的位置:
-地区
-VPC网络
-项目