将流量可靠地路由到裸机kubernetes集群

问题描述

我已经在家中启动了自己的kubernetes集群以学习kubernetes,并且在尝试公开自己的Web服务时一直陷入困境。 我已经用k3s引导了集群,并且一切运行良好,但是我无法弄清楚如何可靠地公开我的Web服务。 我已经安装了traefik 2.2作为入口控制器,并且它通过负载均衡器服务公开(我使用k3s中的lb)。

我有一个A记录,该记录指向一个群集节点的全局IP,并且已经将要公开的端口转发给了该节点。

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

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

解决方法

通常,您想使用ServiceType: LoadBalancer

使用云提供商的负载平衡器在外部公开服务。 NodePortClusterIP服务,外部负载 平衡器路线是自动创建的。

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

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

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

Kubernetes不提供网络负载平衡器的实现 (类型为LoadBalancer的服务)用于裸机集群。的 Kubernetes附带的Network LB的实现都是 调用各种IaaS平台(GCP,AWS,Azure等)的粘合代码。 如果您未在受支持的IaaS平台(GCP,AWS,Azure等)上运行, 在以下情况下,LoadBalancers将无限期保持“待定”状态 已创建。

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...