Kubernetes - 我可以避免使用 GCE 负载均衡器来降低成本吗?

Mit*_*ins 14 load-balancing google-compute-engine kubernetes google-kubernetes-engine

我正在使用 Gitlab-CI 在 GCE 上部署 Kubernetes 集群。我想将成本保持在最低水平 - 这是我目前的设置:

  • 节点在 3 个f1-micro实例上运行
  • Traefik使用 ServiceType 配置运行的系统 podLoadBalancer
  • 配置了通配符 dns
  • 1 个postgres 吊舱
  • 1 个ingress为 Traefik 配置的Web 服务器 pod

我想降低部署成本。大部分成本由 GCE 负载均衡器承担。有没有办法在 GCE 上使用公共 IP 地址而不是负载均衡器?如果是这样,我是否可以使用分配给集群的 IP 地址(而不是保留静态 IP)?

换句话说,有没有办法在没有负载均衡器的情况下使用 GCE 将临时 IP 绑定到 Kubernetes 服务?

是否有任何其他配置我可以做不同的事情来降低 GCE 的总体成本?

Con*_*rJC 14

是的,通过 ExternalIP。请注意,如果分配了外部 IP 的节点出现故障,这将意味着您的服务将关闭,但如果您只运行 1 个主服务器,您可能不太关心这一点。

示例服务:

apiVersion: v1
kind: Service
metadata:
  name: myapp
spec:
  ports:
    - port: 80
      protocol: TCP
  selector:
    app: myapp
  externalIPs:
    - a.b.c.d
Run Code Online (Sandbox Code Playgroud)

IP 需要是GCE 实例的内部IP(这是因为 GCE DNAT 将流量传输到内部 IP)。然后应该可以通过节点分配的外部 IP 访问该服务。

您可能希望更改入口控制器的服务,以便您可以通过一个 IP 路由所有应用程序。

  • 在了解了 DNAT 之后,我意识到我需要配置一个防火墙规则来允许某些端口上的流量到 GCE 实例。在此之后,我能够成功实施您的建议。我也成功地测试了一个 `NodePort` 版本 (2认同)