【发布时间】:2020-05-17 11:52:24
【问题描述】:
到目前为止,我已经建立了一个运行 NodeJS 部署的 kubernetes 集群。我现在准备将它暴露给“世界”,并且在阅读了执行此操作的服务之后,我相信它们都需要负载均衡器。通常这些负载均衡器是由托管 Kubernetes 的云提供商创建的。我遇到了一些限制,有些价格很高,有些对连接有限制等等......
我现在正试图弄清楚如何避免这些负载均衡器并公开我的 kubernetes 集群,但要以一种高性能、安全和可管理的方式。我查看了文档,似乎提到了NodePort 和Ingress 之类的东西。据我了解NodePort 仅适用于集群中的单台机器?而Ingress 仍然需要来自某个地方的流量,通常是负载均衡器。
这是我目前的清单,我应该从这里向公众公开它,理想情况下使用允许 SSL 证书、速率限制等的方法......你在生产中需要的通常的东西
development.yaml
---
# ClusterIP
apiVersion: v1
kind: Service
metadata:
name: development-actions-cip
spec:
type: ClusterIP
selector:
app: development-actions
ports:
- protocol: TCP
port: 80
targetPort: 4000
---
# Actions NodeJS server
apiVersion: apps/v1
kind: Deployment
metadata:
name: development-actions
spec:
replicas: 1
selector:
matchLabels:
app: development-actions
template:
metadata:
labels:
app: development-actions
spec:
containers:
- image: my-image/latest
name: development-actions
ports:
- containerPort: 4000
protocol: TCP
【问题讨论】:
-
我们遇到了同样的挑战。不幸的是,经过详尽的搜索后,我们意识到无论您是公开一个 vm,还是公开一个负载均衡器,您都将被收取入口费用。一旦你接受了这一点,你就可以通过不使用 k8 的内置入口路由器来降低成本。那个用户负载均衡器规则是昂贵的。我们改为使用单个负载均衡器规则,然后使用我们自己的入口运行 traefik docs.traefik.io
-
如果你可以创建一个额外的微实例,你可以在 NGINX 中运行一个负载均衡器:docs.nginx.com/nginx/admin-guide/load-balancer/…
标签: kubernetes load-balancing kubernetes-ingress