在裸机上的多个 IP 上暴露的服务(traefik-ingress)

Services being exposed (traefik-ingress) on multiple IPs, on baremetal

我正在学习 Kubernetes,同时我想将它用于个人(但 public)项目。作为个人项目,我的预算并不大,所以我有以下配置:

我使用 k3s 作为 Kubernetes 发行版,这意味着我有 traefik 入口控制器,而不是 nginx。经过一些测试后,我能够设置应用程序并使用入口资源从我的域名访问它们,所以没有问题。但是我看到我的服务以及 traefik 负载均衡器表明所有 public IP 都在使用中。这是不可取的,因为我更愿意不公开每个节点。

我尝试添加一个防火墙(来自服务提供商)以将对这些节点的访问限制为仅来自子网络的数据包(这样我仍然可以从主节点通过 SSH 连接到它们)。这有效,但入口仍然显示所有 IP,我认为如果它认为所有 IP 都可以 publically reachable,这实际上可能会导致问题。

我还尝试在主节点上设置 NAT 并在工作节点上禁用 public IP,因此所有流量都通过主节点。这用于从入口中删除工作节点 public IP,但现在显示的是它们的私有 IP(甚至不是网关)。

2robin@pop-os:~$ k get ingress
NAME         CLASS    HOSTS              ADDRESS                              PORTS     AGE
test-nginx   <none>   test.lycraft.net   10.39.96.3,10.39.96.4,45.77.114.72   80, 443   11m

我不知道该怎么做。

Ingress 状态中列出的地址与您的 Ingress 控制器相关 - 以及如何到达 them/where 他们 运行。这不是 Traefik 特有的:我们会在 Nginx 或其他实现中看到同样的情况。

你有 3 个地址的原因是你有 3 个 Traefik 副本。

如果我们只希望我们的一个节点作为我们集群的 Ingress:在 Deployment/ReplicaSet 的情况下,我们将降低副本数量并设置一个 nodeSelector。或者在这里,使用 DaemonSet,只需设置一个 nodeSelector,强制 Traefik 在我们指定的入口节点上启动。