使用现有静态IP创建负载均衡器服务的GCP不会显示外部ip

时间:2019-11-10 05:25:46

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

我试图在GKE上托管wordpress网站,然后创建一个具有预先存在的静态IP的ELB来公开wordpress。我做了以下事情:

  • 保留此处定义的静态IP:Link。它是IPv4,Premium Tier和Global的类型。
  • 在{{3}修改了yaml到我的静态ip)之后创建了ELB服务。

我的Yaml内容:

kind: Service
metadata:
  labels:
    app: wordpress
  name: wordpress
spec:
  type: LoadBalancer
  loadBalancerIP: "x.x.x.x"
  ports:
    - port: 80
      targetPort: 80
      protocol: TCP
  selector:
    app: wordpres

运行以下命令-kubectl get svc -l app=wordpress --watch时,我得到:

NAME        TYPE           CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
wordpress   LoadBalancer   x.x.x.x   <pending>     80:32590/TCP   6m7s

有什么线索为什么这不起作用并给我外部IP地址?

2 个答案:

答案 0 :(得分:2)

公开服务时,它将创建仅与区域IP地址一起使用的TCP网络负载平衡器。全局IP地址仅适用于Ingress资源类型。我建议您使用区域静态IP地址,而不是全局地址。以下是对GCP中的负载均衡器进行简要说明的链接:1我尝试将这种情况复制到我的终端,它立即对我来说具有区域IP地址,而对全局IP地址却没有任何作用。 。

答案 1 :(得分:0)

您的服务规格看起来有误。 spec.loadBalancerIP字段应指定要分配给LB前端的“外部” IP(请注意,此处的外部表示在群集外部,此IP应该属于您的VPC或是公共IP)。

在您的情况下,您分配的IP(192.168.0.1)实际上就是您的clusterIP(由于Google如何在VPC中分配IP,因此该IP通常会分配给网关,所以这是有意义的)。无论您的静态IP是什么(假设35.35.35.35),都应在适当的字段中将其指定为spec.loadBalancerIP: 35.35.35.35。如果有必要,将在192.168.0.1字段中定义spec.clusterIP