Kubernetes - 跨 3 个办公地点的 HA 分布式设置

Kubernetes - 跨 3 个办公地点的 HA 分布式设置

我想扩展我的内部本地堆叠 HA Kubernetes,使其具有 3 个控制平面、3 个工作节点集群,分布在 3 个办公地点。因此,每个控制平面和 1 个工作节点将位于每个办公室。每个控制平面都有自己的静态 IP。

我无法理解如果办公室 1 断电,负载平衡器(我使用的是 metallb)如何发挥作用。流量如何重定向到办公室 2 和 3?

例如,访问在 office-1-node 上运行的 nextcloud 的外部、公共用户可能正在使用与 office-1-node 静态 IP 关联的 fqdn cloud.company.com。(尽管 nextcloud 可能在 office-2-node 或 office-3-node 中的工作节点或主机上运行……但就用户而言,这不是问题。)

如果 office-1-node 断电,什么会将 cloud.company.com 指向 office-2-node 或 office-3-node 的静态 IP?

我仍在学习,因此请在回答时记住这一点。

答案1

我可以看到 Metal LB 已部署(https://metallb.universe.tf/installation/)作为控制器(处理 IP 分配)和守护进程集(组件 - 扬声器 -> 我认为这是根据https://metallb.universe.tf/concepts/)所以这个LB基本上是作为Kubernetes资源部署的。

现在回到你的问题,如果 office-1-node 发生中断,其他节点的守护进程集中的 pod 将按要求运行(进行外部公告并使服务可访问),而其他主节点的控制器将继续处理 IP 分配。

资源:

  1. Kubernetes 控制器https://kubernetes.io/docs/concepts/architecture/controller/
  2. Kubernetes Daemonsethttps://kubernetes.io/docs/concepts/workloads/controllers/daemonset/
  3. Kubernetes Metallb 清单 -https://github.com/metallb/metallb/blob/main/manifests/metallb.yaml

编辑:回答第二条评论中的问题。首先,您需要购买一个域名(来自 godaddy、bigrock、AWS Route53 等)。其次,创建一个 CNAME 将该域名指向您的负载均衡器的 IP(可选带端口)(在您的情况下,可以以循环方式使用 office-1、2、3 的 IP 来确保正常运行时间)。这种循环方式称为DNS 负载平衡.或者你可以实现DNS 故障转移就像在 AWS Route53 中一样,通过在负载均衡器中实施健康检查。完成后,外部用户将继续访问 kubernetes 中的服务(来自 office-2 和 3)

相关内容