我正在使用 Gitlab-CI 在 GCE 上部署 Kubernetes 集群。我想将成本降至最低 - 这是我当前的设置:
- 节点在 3 个
f1-micro
实例上运行 Traefik
运行配置了 ServiceType 的系统 PodLoadBalancer
- 已配置通配符 DNS
- 1
postgres
荚 ingress
1 个为 Traefik 配置的Web 服务器 pod
我想降低部署成本。大部分成本都花在了 GCE 负载均衡器上。有没有办法让我使用公共 IP 地址而不是 GCE 上的负载均衡器?如果可以,我可以使用分配给集群的 IP 地址(而不是保留静态 IP)吗?
换句话说,有没有办法使用没有负载均衡器的 GCE 将临时 IP 绑定到 Kubernetes 服务?
我可以采取其他不同的配置来降低 GCE 的总体成本吗?
答案1
是的,通过 ExternalIPs。请注意,如果分配了上述外部 IP 的节点发生故障,您的服务将停止运行,但如果您只运行 1 个主节点,您可能不会太在意这一点。
示例服务:
apiVersion: v1
kind: Service
metadata:
name: myapp
spec:
ports:
- port: 80
protocol: TCP
selector:
app: myapp
externalIPs:
- a.b.c.d
IP 必须是内部的GCE 实例的 IP(这是因为 GCE 将流量 DNAT 到内部 IP)。然后应该可以通过节点分配的外部 IP 访问该服务。
您可能需要更改入口控制器的服务,以便可以通过一个 IP 路由所有应用程序。
答案2
由于成本和供应商锁定,除非必要,我都不愿意使用云负载均衡器。
相反,我用的是这个: https://kubernetes.github.io/ingress-nginx/deploy/
它是一个为您运行负载均衡器的 pod。该页面有 GKE 特定的安装说明。