【问题标题】:Services being exposed (traefik-ingress) on multiple IPs, on baremetal [closed]在裸机上的多个 IP 上暴露的服务(traefik-ingress)[关闭]
【发布时间】:2021-08-16 11:53:52
【问题描述】:

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

  • 1 个主节点 VPS,公共 IP 为 45.77.114.72,私有 IP 为 10.39.96.5。
  • 1 个工作节点 VPS,公共 IP 为 149.28.111.67,私有 IP 为 10.39.96.4。
  • 1 个工作节点 VPS,公共 IP 为 45.77.113.193,私有 IP 为 10.39.96.3。

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

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

我还尝试在主节点上设置 NAT 并禁用工作节点上的公共 IP,以便所有流量都通过主节点。这可以从入口中删除工作节点的公共 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

我不知道该怎么做。

【问题讨论】:

  • 您能否澄清一下,traefik 是如何运行的?它是一个 DaemonSet,每个节点都有一个副本吗?如果是这样,您是否可以尝试添加一个 nodeSelector,使其仅部署到您的主/公共节点?
  • 我更新了帖子,它告诉我节点只能在没有 nodeSelector 的情况下在 master 上运行,没有它就停止工作。
  • nodes only run on master without the nodeSelector, ?什么?豆荚?同时:我不确定您的集群是如何部署的/这应该如何工作,但是对于 traefik 同时拥有一个守护进程集和一个副本集(可能也是一个部署)听起来是错误的。我仍然坚持,编辑你的守护进程,添加一个 nodeSelector,确保它只会在你的主节点上启动。部署只有 1 个副本,我怀疑它会负责将这些地址设置回您的 Ingress 状态。
  • 哇,谢谢,它确实修复了它。我以为您打算将应用程序放在 master 上,而不是 deamonset(我忘了创建 on-master 标签,哈哈)。通过这两个更改,它似乎起作用了。如果您愿意,请随时留下更详细的答案。

标签: kubernetes traefik k3s


【解决方案1】:

Ingress 状态中列出的地址与您的 Ingress Controller 相关 - 以及如何访问它们/它们运行的​​位置。这不是 Traefik 特有的:我们会在 Nginx 或其他实现中看到相同的情况。

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

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

【讨论】:

    猜你喜欢
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    • 1970-01-01
    • 2018-02-25
    • 2020-12-17
    相关资源
    最近更新 更多