Rancher-如何公开展示我的服务?

问题描述 投票:1回答:2

我具有正在运行的Rancher设置,如下所示:

  • 公共IP上的主机(运行rancher/rancher容器);
  • 无法从Internet访问专有网络(10.1.1.0/24)中的节点。

我的目标是使用Rancher Load Balancing或类似的东西为Web应用程序提供服务。为此,我执行了以下步骤:

  • [将端口80 / tcp映射为名为“ web-app”的NodePort(侦听端口是随机的),在3个Pod上使用“ rancher / hello-world”映像部署工作负载;
  • 在同一名称空间中添加名为“ hello”的Ingress,选择“自动生成.xip.io主机名”,并将路由“ /”添加到端口80上的“ web-app”。

这在本地网络上有效,因为我得到了一个类似于http://hello.gabriel-milan.10.1.1.14.xip.io/的地址,它将解析为本地的10.1.1.14。

我想为我的一个公共IP公开此服务。我该怎么办?

kubernetes load-balancing kubernetes-ingress rancher rke
2个回答
0
投票

有几种方法。根据您对Internet不可访问的专用网络的使用,这些节点没有公共IP,因此Kubernetes对映射到它们的任何公共IP一无所知。这就是它在EC2或节点外发生NAT的任何地方的工作方式。

如果这些节点是自定义群集(您在其中安装Docker,然后使用Rancher的docker run命令安装RKE并将群集加入Rancher),则在安装之前,您可以单击底部的Advanced Options(高级选项)链接在右上角,并为每个节点设置公共IP和私有IP。

[执行此操作时,节点会收到一个包含公用IP的标签,并且该地址将与设置Ingress时生成的xip.io主机名一起使用。

没有该标签,xip.io主机名将选择节点的主IP,在这种情况下,该主IP在专用网络上。

但是,如果执行此操作,即使您的入口控制器正在侦听多个节点,您的流量也只会流到群集中的一个节点。

相反,当运行多节点集群时,建议您在所有工作节点(或入口控制器正在侦听的节点,如果不是在每个节点上侦听的节点)之前放置第4层负载平衡器。猛击80和443,然后将其用作您的域的目标。

domain.com -> load balancer -> ingress controller (on all nodes) -> Service -> Pods

您的入口控制器正在侦听80/443的HTTP流量,这也意味着您的服务不必是NodePort。它可以是ClusterIP,因为流量经过入口控制器,然后在群集内部路由。

NodePort服务在您具有外部负载平衡器并且需要将流量定向到特定服务时使用。在这种情况下,外部负载平衡器将替换入口控制器。您为每个应用程序创建NodePort服务,然后告诉负载平衡器将App A的流量发送到端口30547上的每个节点或该服务的NodePort。

[顺便说一句,如果您在云提供商中,则可以将它们合并到LoadBalancer服务中。这将在节点上创建NodePort服务,然后联系云提供商的API,并部署云负载平衡器,然后使用节点,服务的端口对其进行编程,并在服务的生命期内维护该配置。] >

回顾:

  • 您的节点不知道其公共IP,因此xip.io主机名也不知道
  • 将第4层负载均衡器放在节点前面,并将流量发送到所有节点上的80/443
  • 将您的服务更改为ClusterIP
  • 将流量发送到负载平衡器
  • [此外,如果您不想部署负载平衡器,也可以作为解决方法,可以删除Ingress并重新创建它,但是可以选择“设置主机名”并手动创建,而不是自动创建xip.io主机名。如果一个节点的公共IP为1.2.3.4,则可以将其设置为any.thing.you.want.1.2.3.4.xip.io,它将向DNS查询返回1.2.3.4

    您只是无法编辑现有的xip.io入口并将其更改为其他手动xip.io主机名。您必须重新创建它。

在这种解决方法中,流量仍然流入入口控制器,因此您仍然可以将服务从NodePort更改为ClusterIP。

披露:我为Rancher工作。

有效ip地址–合法IP地址必须采用xxx.xxx.xxx.xxx的形式,其中xxx是0-255之间的数字。有几个保留地址(RFC 1918)无法使用。 10.x.x.x不能与192.168.x.x,172.16.0.0到172.31.255.255一起使用。如果您使用的是路由器,那么您的制造商可能会选择其中的一种,并且还应该查看此技巧以获取更多信息。如果您具有这种格式的IP地址,但没有路由器,则您的ISP可能正在使用NAT网络,这肯定会阻止您运行Web服务器。

使用典型Internet协议通过网络链接到各种其他工具或Internet的工具均具有IP地址。这些地址可以识别设备。为了使人们容易阅读,IP地址包含二进制数字,通常分为四个数字段。

有效IP地址范围A类IP地址是网络1.0.0.0和127.0.0.0。 B类是从128.0.0.0到191.255.0.0的网络。 C类通过223.255.255.0为192.0.0.0。路线A的网络由第一个数字标识,而类别B的网络则由前两个数字使用,而路线C则由前三个数字使用。IP地址中继续为数字的数字标识网络上的特定小工具。 IP地址中的每个数字都使用0-255的数字,但课程C网络中的第一个数字升至223。因此178.64.12.22是合法IP地址,表示课程B网络(178.64),并且也是一个小工具标识符12.22。超出以下定义范围的任何类型的IP号码均不合法用于基本用途。


0
投票

有效ip地址–合法IP地址必须采用xxx.xxx.xxx.xxx的形式,其中xxx是0-255之间的数字。有几个保留地址(RFC 1918)无法使用。 10.x.x.x不能与192.168.x.x,172.16.0.0到172.31.255.255一起使用。如果您使用的是路由器,那么您的制造商可能会选择其中的一种,并且还应该查看此技巧以获取更多信息。如果您具有这种格式的IP地址,但没有路由器,则您的ISP可能正在使用NAT网络,这肯定会阻止您运行Web服务器。

© www.soinside.com 2019 - 2024. All rights reserved.