Gab*_*lan 3 load-balancing kubernetes rancher kubernetes-ingress rke
我有一个正在运行的 Rancher 设置,如下所示:
我的目标是使用 Rancher Load Balancing 或任何类似的东西来为 Web 应用程序提供服务。为此,我执行了以下步骤:
.xip.io主机名”并将路由“/”添加到端口 80 上的“web-app”。这适用于本地网络,因为我得到了一个像http://hello.gabriel-milan.10.1.1.14.xip.io/这样的地址,它将解析为 10.1.1.14,这是本地的。
我想为我的一个公共 IP 公开此服务。我怎样才能做到这一点?
有几种方法可以做到这一点。根据您使用的无法从 Internet 访问的专用网络,节点没有公共 IP,因此 Kubernetes 对映射到它们的任何公共 IP 一无所知。这就是它在 EC2 或在节点外发生 NAT 的任何地方的工作方式。
如果这些节点是自定义集群(安装Docker,然后使用docker runRancher的命令安装RKE并将集群加入Rancher),那么在安装之前,您可以单击右下角的高级选项链接并设置每个节点的公共和私有 IP。
执行此操作时,节点会收到一个包含公共 IP 的标签,该地址将与您xip.io在设置 Ingress 时生成的主机名一起使用。
如果没有该标签,xip.io主机名将获取节点的主 IP,在这种情况下,该节点位于专用网络上。
但是,如果您这样做,即使您的入口控制器正在侦听多个节点,您的流量也只会流向集群上的一个节点。
相反,在运行多节点集群时,我建议您将第 4 层负载均衡器放在所有工作节点(或入口控制器正在侦听的节点,如果它不是在每个节点上进行侦听)的前面。打通 80 和 443,然后将其用作域的目标。
domain.com -> load balancer -> ingress controller (on all nodes) -> Service -> Pods
您的入口控制器正在侦听 80/443 的 HTTP 流量,这也意味着您的服务不必是 NodePort。它可以是 ClusterIP,因为流量通过入口控制器,然后在集群内部路由。
当您有外部负载均衡器并且需要将流量定向到特定服务时,将使用 NodePort服务。在这种情况下,外部负载均衡器会替换入口控制器。您为每个应用程序创建 NodePort 服务,然后告诉负载均衡器将应用程序 A 的流量发送到端口 30547 上的每个节点或该服务的任何 NodePort。
顺便说一句,如果您在云提供商中,您可以将这些组合成一个 LoadBalancer 服务。这将在节点上创建一个 NodePort 服务,然后访问云提供商的 API 并部署一个云负载均衡器,然后使用节点、服务的端口对其进行编程,并在服务的生命周期内维护该配置。
回顾一下:
xip.io主机名也不知道此外,作为一种解决方法,如果您不想部署负载均衡器,您可以删除 Ingress 并重新创建它,但不是xip.io自动创建主机名,而是选择“设置主机名”并手动创建它。如果一个节点的公共 IP 是1.2.3.4,那么您可以将其设置为any.thing.you.want.1.2.3.4.xip.io,它将返回1.2.3.4到 DNS 查询。
您只是无法编辑现有的xip.ioIngress 并将其更改为不同的手动xip.io主机名。你必须重新创建它。
在此变通方法中,流量仍会进入入口控制器,因此您仍然可以将服务从 NodePort 更改为 ClusterIP。
披露:我为 Rancher 工作。
| 归档时间: |
|
| 查看次数: |
4381 次 |
| 最近记录: |