1

介绍:

在 AWS 上,负载均衡器很昂贵(每月 20 美元 + 使用),所以我正在寻找一种方法来实现 k8s 节点之间的灵活负载均衡,而无需支付这笔费用。负载并没有那么大,所以我很快就不需要 AWS 负载均衡器的可扩展性。我只需要服务即可。我可以以每月 3.5 美元的价格获得一个可以轻松处理当前流量的小型 EC2 实例,所以我现在正在寻找这个选项。

当前设置

目前,我已经设置了一个常规的独立 Nginx 实例(在 k8s 之外),它在集群中的节点之间进行负载平衡,所有服务都设置为通过 NodePorts 公开。这非常有效,但是每当我的集群拓扑在重启、添加、重启或删除节点期间发生变化时,我必须手动更新 Nginx 实例上的上游配置,这远非最佳,因为不能期望集群节点留在周围永远。

所以问题是:

是否可以在 Kubernetes 之外设置 Trækfik 以在 Kubernetes 节点之间进行简单的负载平衡,就像我的 Nginx 设置一样,但保持 traefik 配置的上游/后端服务器与 Kubernetes 节点列表同步,这样我的 Kubernetes 服务是当我更改节点设置时仍然 HA?我真正需要的只是让 Træfik 监听 Kubernetes API 并在集群发生变化时更改后端服务器。

听起来很简单,对吧?;-)

在查看 Træfik 文档时,它似乎想要一个入口资源将其流量发送到,而一个入口资源需要一个入口控制器,我猜这需要一个负载均衡器才能访问?这不会破坏目的,还是我缺少什么?

4

1 回答 1

2

这是对您的情况有用的东西https://github.com/unibet/ext_nginx但我确定项目是否仍在开发中并且配置可能很困难,因为您需要允许外部入口访问内部 k8s 网络.

也许您可以尝试在 AWS 级别上做到这一点?您可以在 Nginx EC2 实例上添加 cron 作业,您可以在其中使用 CLI 查询 AWS 以获取所有标记为“k8s”的 EC2 实例,并在发生更改时在 nginx 配置中进行更新。

于 2018-09-21T08:46:16.897 回答