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

Cly*_*row 3 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
Run Code Online (Sandbox Code Playgroud)

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

status:
  loadBalancer:
    ingress:
    - ip: 10.156.0.60
Run Code Online (Sandbox Code Playgroud)

而且我无法使用静态 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
Run Code Online (Sandbox Code Playgroud)

服务现在看起来像这样:

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: {}
Run Code Online (Sandbox Code Playgroud)

我仍然无法连接

Ale*_*nov 14

2021 年 11 月更新

可以创建静态内部 IP 并将其分配给LoadBalancerk8s 服务类型。

  1. 转至 VPC 网络 -> 选择您的 VPC -> 静态内部 IP 地址
  2. 单击“保留静态地址”,然后为您的 IP 选择一个名称并单击“保留”。您也可以在此处手动选择 IP 地址。
  3. 在您的服务 YAML 中添加以下注释。还要确保类型为LoadBalancer,然后分配 IP 地址。
...
annotations: 
  networking.gke.io/load-balancer-type: "Internal"
...
type: LoadBalancer
loadBalancerIP: <your_static_internal_IP>
Run Code Online (Sandbox Code Playgroud)

这将启动一个内部 LB 并为其分配静态 IP。您还可以在“静态内部 IP 地址”屏幕中检查新创建的负载均衡器现在正在使用新 IP。如果需要,您可以为其分配Cloud DNS记录。此外,您还可以在预留过程中选择“共享”IP 地址,以便最多 50 个内部负载均衡器使用该地址。

为内部负载均衡分配静态IP

启用共享IP


Pat*_*k W 5

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

编辑

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

这并不清楚,但由于 GCP 控制器创建内部负载均衡器的方式,它无法使用已保留的 IP 地址。