GKE-如何将静态IP附加到内部负载均衡器

时间:2020-02-05 10:36:45

标签: google-cloud-platform google-kubernetes-engine google-cloud-networking

我想将服务从一个GKE集群连接到另一个集群。我将服务创建为内部负载平衡器,并希望为其添加一个静态IP。我创建了service.yml

apiVersion: v1
kind: Service
metadata:
  name: ilb-service
  annotations:
    cloud.google.com/load-balancer-type: "Internal"
    kubernetes.io/ingress.global-static-ip-name: es-test
  labels:
    app: hello
spec:
  type: LoadBalancer
  selector:
    app: hello
  ports:
  - port: 80
    targetPort: 8080
    protocol: TCP

但是在应用-f之后,当我检查服务时,负载均衡器入口看起来像这样:

status:
  loadBalancer:
    ingress:
    - ip: 10.156.0.60

而且我无法使用静态IP进行连接。如何解决?

编辑:

After suggestion I changed the yml file to:
apiVersion: v1
kind: Service
metadata:
  name: ilb-service
  annotations:
    cloud.google.com/load-balancer-type: "Internal"
  labels:
    app: hello
spec:
  type: LoadBalancer
  selector:
    app: hello
  ports:
  - port: 80
    targetPort: 8080
    protocol: TCP
  loadBalancerIP: "xx.xxx.xxx.xxx" -- here my static ip

服务现在看起来像这样:

spec:
  clusterIP: 11.11.1.111
  externalTrafficPolicy: Cluster
  loadBalancerIP: xx.xxx.xxx.xxx
  ports:
  - nodePort: 31894
    port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    app: hello
  sessionAffinity: None
  type: LoadBalancer
status:
  loadBalancer: {}

我仍然无法连接

1 个答案:

答案 0 :(得分:3)

您不会将注释用于内部IP。相反,只需在spec.loadBalancerIP field中指定要使用的IP地址(而不是名称),即可指定要分配给loadBalancer的数字IP地址。确保IP不在其他任何地方使用,并且与群集位于同一子网内。

编辑

要澄清最后一条语句:如果将内部IP保留为静态IP,则该IP不再可用,静态保留将其视为“正在使用”。要将IP分配给内部LoadBalancer,不得保留IP,也不能使用该IP。

这还不清楚,但这是由于GCP控制器如何创建内部负载平衡器而导致它无法使用已经保留的IP地址。