GKE内部负载均衡器无法创建

Mik*_*ike 8 google-app-engine google-compute-engine google-cloud-platform google-kubernetes-engine

我有一个gke集群,它有一个http(s)负载均衡器,它根据文档使用RATE平衡模式.

我正在尝试使用内部负载均衡器将此群集上的工作负载暴露给App Engine.两种服务都位于同一区域的同一网络中.

但是,当我尝试创建负载均衡器时,它会因此错误而失败.

Error creating load balancer (will retry): failed to ensure load balancer for service default/internal-es-lb: googleapi: Error 400: Validation failed for instance 'projects/PROJECT-NAME/zones/us-central1-a/instances/gke-staging-default-pool-85830c52-g6tg': instance may belong to at most one load-balanced instance group., instanceInMultipleLoadBalancedIgs

有几件事情很奇怪.
1.内部LB今天早些时候工作.
2. http(s)负载均衡器抛出与内部LB相同的错误,即使它是集群
3 上唯一的负载均衡器.当我使用我的服务yaml创建LB时,它会创建一个新的/不同的实例组比我的目标池

这是我的服务yaml:

apiVersion: v1
kind: Service
metadata:
  name: internal-es-lb
  annotations:
    cloud.google.com/load-balancer-type: "Internal"
  labels:
    app: internal-es-lb
spec:
  type: LoadBalancer
  loadBalancerIP: 10.128.0.4
  loadBalancerSourceRanges: [0.0.0.0/0]
  ports:
    - port: 80
      targetPort: 9200
      protocol: TCP
      name: http-es-lb
  selector:
    app: elastic-master
Run Code Online (Sandbox Code Playgroud)

我想我理解错误意味着只能有一个实例组,所以是否可以在yaml中指定实例组?或者,还有其他解决方案吗?谢谢!

更新:内部LB今天早些时候工作,因为我还没有实现http(s)LB. 随着http(s)lb的到位,这些失败了.由于文档不是很清楚,我很想知道如何使这一切工作在一起.

更新到更新:如果我首先创建内部LB,然后将http(s)LB应用于新实例组,则可以进行排序.一切都正在路由和正确加载,但谷歌控制台抛出一堆错误,所以我不知道这是否是推荐的方式.

Pat*_*k W 1

创建 HTTP(S) LB 时,您可能会创建使用托管实例组 (MIG) 的后端。实例(包括 GKE 节点)在任何给定时间只能是单个 MIG 的一部分。

当您通过GKE创建ILB服务时,后端都是非托管实例组,因此实例可以重复使用。

解决此问题的建议方法是使用Kubernetes Ingress而不是 GCE L7LB,因为 Ingress 还将使用非托管实例组。