【问题标题】:GCP creating load balancer service using existing static IP doesn't show external ipGCP使用现有静态IP创建负载平衡器服务不显示外部IP
【发布时间】:2019-11-10 05:25:46
【问题描述】:

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

  • 保留了此处定义的静态 IP:Link。它是 IPv4、Premium Tier 和 Global 类型。
  • this之后创建了一个ELB服务(将yaml修改为我的静态ip)。

我的 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 地址?

【问题讨论】:

  • 你给了它多长时间?我一直在阅读可能需要 15 分钟的故事。
  • 到现在还有 18 分钟但还是不行
  • 您是否在控制台的负载平衡菜单中查看了负载平衡器部署状态是什么?
  • 看起来您将内部 ClusterIP 指定为 loadBalancerIP,而不是您保留并想要使用的 IP 地址......它们都是 192.168.0.1,我会如果您的静态负载均衡器地址以 .1 结尾(并且 192.168.x.x 永远不会是外部 IP),您会感到惊讶
  • 这只是为了示例。我应该把它当作 x.x.x.x 我的坏事

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


【解决方案1】:

当我们公开一个服务时,它会创建一个仅适用于区域 IP 地址的 TCP 网络负载均衡器。全局 IP 地址仅适用于 Ingress 资源类型。我建议您使用区域静态 IP 地址,而不是全球。这是对 GCP 中的负载均衡器进行简要描述的链接:1 我尝试在我的一端复制这个场景,它立即对我使用区域 IP 地址,而对全局 IP 地址根本不起作用。

【讨论】:

【解决方案2】:

您的服务规范看起来有误。 spec.loadBalancerIP 字段应指定您希望分配给 LB 前端的“外部”IP(注意这里的外部是指集群外部,此 IP 应属于您的 VPC 或为公共 IP)。

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

【讨论】:

  • 这只是为了示例。我应该把它当作 x.x.x.x 我的坏事。它不是 192.168.0.1。
  • 您选择的 IP 是否显示为 clusterIP?您是否还可以确认 lb ip 已保留且未分配?
猜你喜欢
  • 1970-01-01
  • 2020-10-07
  • 1970-01-01
  • 2020-02-20
  • 2018-08-01
  • 2023-03-16
  • 1970-01-01
  • 2020-10-18
  • 2020-10-22
相关资源
最近更新 更多