多个主机Kubernetes入口控制器

Cen*_*bit 5 kubernetes rancher kubernetes-ingress

我已经研究Kubernetes了几周了,使用kube-lego NGINX示例(https://github.com/jetstack/kube-lego)已在DigitalOcean上使用Rancher成功地将服务部署到Kubernetes集群。

我已经部署了示例静态站点,Wordpress,Laravel,Craft CMS等。所有这些站点都使用自定义命名空间,部署,机密,带有外部注册表的容器,服务和入口定义。

使用示例(乐高)NGINX Ingress Controller设置,我可以将DNS应用于我的K8s群集的公开IP地址,并显示结果站点。

但是,我不知道的是如何允许多个主机使Ingress Controller服务于相同的部署,从而为群集提供HA Ingress。(通过应用外部负载平衡器服务,geo-ip或您拥有的资源)。

Rancher(稳定)允许我添加多个主机,我一次旋转了3到5个主机,并且Kubernetes在所有主机上进行了配置和部署。此外,我将定义许多副本和/或部署(如上所列),它们将散布在群集中并可以按预期访问。我什至指定了多个Ingress Controller副本,但是当然它们都安排在同一主机上,仅给我一个IP地址。

那么,如何允许多个主机(每个主机都有自己的面向公众的IP地址)允许进入群集?我还阅读了有关设置多个Ingress Controller的信息,但随后您必须指定Ingress Controller为哪些部署/服务提供服务,而这完全无法达到目的。

也许我缺少了一些东西,但是如果K8s多主机应该提供HA,并且带有入口控制器的主机出现故障,那么该服务将在其他主机上重新安排,但是所有指向的IP地址都会死了,因此中断了。有什么办法可以将多个IP地址分配给同一组部署/服务?

Cen*_*bit 5

我今天更多地调查了我的设置,我想我找到了我遇到困难的原因。“LoadBalancer”经常被提到与云提供商一起使用(在两个文档中,以及@fiunchinho 描述的内容)。我将它与 Rancher 设置一起使用,它会自动在主机上为您创建一个 HA-Proxy LoadBalancer 入口。

默认情况下,它只会在其中一台主机上安排它。您可以指定您希望它在全球范围内安排购买,并提供“注释” io.rancher.scheduler.global: "true"

像这样:

annotations:
  # Create load balancers on every host in the environment
  io.rancher.scheduler.global: "true"
Run Code Online (Sandbox Code Playgroud)

http://rancher.com/docs/rancher/v1.6/en/rancher-services/load-balancer/

我更喜欢 LoadBalancer 而不是 NodePort,因为我希望能够将端口 80(以及将来的端口 443)发送到任何节点,并通过检查 Host 标头并根据需要引导它们成功满足我的请求。

这些 LB 也可以在 Rancher UI 的“基础设施堆栈”菜单下设置。我已成功删除了单个 LB,并重新添加了一个并启用了“始终在每个主机上运行此容器的一个实例”选项。

配置完成后,我可以向任何 Ingress 的任何主机发出请求,并获得响应,无论容器被安排在哪个主机上。

https://rancher.com/docs/rancher/v1.6/en/rancher-services/load-balancer/

非常酷!