1

我已经在家里建立了自己的 kubernetes 集群来学习 kubernetes,但在尝试公开我的 web 服务时我一直卡住。我已经用 k3s 引导了集群,一切都运行良好,但我无法弄清楚如何能够稳健地公开我的 web 服务。我已经安装了 traefik 2.2 作为入口控制器,它通过负载均衡器服务公开(我使用来自 k3s 的 lb)。

我有一个 A 记录,它指向一个集群节点的全局 IP,并且我已经转发了我想要公开的端口,目标是这个节点。

我相信我没有以正确的方式将流量路由到我的负载均衡器。将流量路由到我的一个节点上的负载均衡器服务是可行的,但是如果我出于某种原因需要重新启动集群,负载均衡器可能最终会在另一个节点上,我必须更改我的目标 IP 以进行端口转发。设置externalIP负载均衡器服务的字段没有任何效果。

如何可靠地将流量路由到我的集群中?我觉得设置的某些部分我误解了,如果有人能指出我正确的方向,我将不胜感激。

4

1 回答 1

0

通常你想使用ServiceType: LoadBalancer

使用云提供商的负载均衡器在外部公开服务。 自动创建外部负载均衡器路由到的服务NodePortClusterIP

但是,由于 Kubernetes 没有为裸机环境提供负载均衡器解决方案,因此该服务很难在裸机集群中公开。

您可以尝试的解决方案是MetalLB

MetalLB 是裸机 Kubernetes 集群的负载均衡器实现,使用标准路由协议。

Kubernetes 没有为裸机集群提供网络负载均衡器(LoadBalancer 类型的服务)的实现。Kubernetes 附带的 Network LB 的实现都是调用各种 IaaS 平台(GCP、AWS、Azure ……)的胶水代码。如果您未在受支持的 IaaS 平台(GCP、AWS、Azure...)上运行,则 LoadBalancers 在创建时将无限期地保持在“待定”状态。

您可以在链接的文档中找到有关安装、配置和使用的必要详细信息。有了它,您应该能够轻松设置负载平衡。

于 2020-09-21T08:19:17.963 回答