我开始学习 Kubernetes,但目前有一件事我不太明白。假设我有三个虚拟机(VMware),它们有一些唯一的外部 IP(假设是 X、Y、Z IP 地址)。假设我们想在端口 80 上公开 3 个不同的网站。假设我们想让每个网站都位于每个 IP 地址上。
无需使用 Kubernetes,我可以在每台机器上简单地创建 Docker 容器并轻松公开它。(X:80,Y:80,Z:80)
我该如何使用 Kubernetes 来解决这个问题?在没有 Kubernetes 的情况下,与我上面描述的解决方案等效的解决方案是什么?入口,但它需要类似 X:80 、 X:80/secondsite 、 X:80/thirdsite 的内容。
如果我需要的 IP 地址比虚拟机多,该如何解决这个问题?是否可以将 IP 地址范围分配给单个虚拟机并将其与 Ingress 一起使用或以其他方式使用?
如果这些问题看起来微不足道,我提前表示歉意,但我会很感激能给我一些指导的答案。
答案1
AWS/Google 等云平台是如何解决这个问题的
您创建部署并为部署提供服务。然后创建一个入口控制器(例如 nginx)。然后为该控制器创建一个 LoadBalancer 类型的服务,该控制器将创建一个类似 ELB 的负载均衡器。Kubernetes 将 ELB 侦听器端口映射回入口控制器服务打开的节点端口。然后创建一个入口,表示此主机转到此服务。入口控制器会使用更改后的配置重新加载。
当您自行开发时,您必须创建一个带有硬编码节点端口的入口服务。如果您未在服务上设置节点端口,则 kubernetes 将随机选择一个。如果您想自动化,您可以预先选择一个唯一的节点端口。然后,kubernetes 将在所有节点上打开相同的节点端口以获取流量。
然后在您的负载均衡器上以某种方式为其提供一个新的 VIP,并在所有节点上发送 80->nodeport。