假设我有一台运行 ubuntu 的笔记本电脑(2 核、4G 内存、512G 常规磁盘)和一台未安装操作系统的台式机(4 核、16G 内存、512G SSD 磁盘)(即一套新的计算资源 - 磁盘空间、内存、CPU 处理能力等)。
我想知道我是否可以让我的笔记本电脑“吸收”(笔记本电脑是人机交互的界面;即没有桌面输入设备)新的计算资源。所以基本上,我希望看到在“吸收”之后,突然在笔记本电脑的系统监视器中看到 6 个内核、20G 内存、磁盘空间变成 1TB,运行一些应用程序(例如 Firefox),速度会快得多...诸如此类。
而下次再买一台台式机,又可以被两台设备再次“吸收”,组成一个更加强大的“集群”。
我明白我想要的听起来很像集群。是的,我可以设置 nfs 和 mpi 来形成集群。但在这种情况下,当我在笔记本电脑上打开 Firefox 时(请注意,笔记本电脑是人机交互的唯一界面,没有桌面输入设备),它仍将在笔记本电脑上本地运行;当我下载越来越多的文件时,nfs 服务器将再次变满,我如何使用新机器动态添加更多磁盘空间?
我的理解是,使用集群,您可以明确地将计算任务(运行您编写的控制台程序)分派到某些节点;但在这里,我真正想要的是一种方法来轻松扩展我的计算能力,使我在日常使用新买的硬件时受益 - 如果我需要安装特殊版本的操作系统(比如,ABC gnu linux),只需命名它即可。态度是,好的笔记本电脑,你是我的仆人,你有一些功能强大的台式机作为你的奴隶。我不关心您使用哪个从属,不要问我想要哪个从属来处理工作,只需自己安排调度并尽快完成工作。用更专业的术语来说,我不应该在命令中指定哪个节点将处理任务。本质上和等效地,我突然拥有了一台更强大的笔记本电脑,其他一切对我作为用户来说都是透明的。
也许我还没有完全理解 mpi 集群的本质——请指出我是否真的可以通过 MPI 集群实现我想要的。
请赐教,谢谢。
答案1
你用它做什么?这是一个很大的话题。
我们将纯 GUI 组件排除在外,因为这些组件所涉及的资源与内存和 CPU(人机界面、GPU)不同,并且无法真正分布(当然,您可以分布 GPU 以应对较大的处理负载,但让我们暂时将该用例排除在外)。
让我们来讨论一下服务器应用程序(回到我之前的问题,即使像 emacs 这样面向用户的东西也可以通过服务器后端运行)。
您可以创建一个 Kubernetes 集群,这样您基本上就可以在集群的任何地方安排任何您想要的东西。Kubernetes 将运行任何 docker 镜像,智能分配,因此限制是无限的。因此,您已经分配了 CPU 和 RAM。
现在来谈谈更持久状态的问题。文件在哪里?数据在哪里?
你可以用很多种不同的方式来解决这个问题。
您应该从拥有分布式文件系统(或分布式块存储)开始。一个“合适的”系统。在这个类别中,唯一的明星似乎是 LizardFS。我会远离 Ceph。
任何人,从任何地方,无论 kubernetes 分配到哪里,都可以访问 lizardfs 端点。
如果您正在运行数据库,当然可以集群运行数据库。组成集群的数据库实例最终将数据保存在哪里?我会说两个地方之一:
组成数据库集群的数据库实例只是 docker 容器,像其他 docker 镜像一样由 kubernetes 分配(当然,每个物理节点只有一个),并且可以使用本地磁盘无论它们被分配到哪里(目前不是持久卷)。
Kubernetes 提供了无数种类型的持久卷,可以从集群上运行的数据库实例访问这些卷。
请注意,提供程序本身可以作为 Kubernetes 工作负载运行,每台物理机器一个。这样做时,它们使用本地磁盘资源并将其提供给整个集群。
遗憾的是,LizardFS 目前尚未包含在内,但是您可以将 LizardFS 公开为 NFS 端点并从 Kubernetes 集群中使用它(我还没有看到任何人这样做,如果您看到任何链接,请分享。)
它可以使用分布式文件存储本身(这可能会更慢,有“两个间接级别”)。
请注意,存储中的分布可以实现两件事: - HA,您拥有数据的多个副本,这意味着如果一个副本不可用,您可以继续搅动。 - 水平扩展。基本上,数据被分片并分配给不同的节点。(每个分片都可以在 HA 中运行)。
当然还有混合模式,归根结底还是要在 CAP 定理内做出妥协。这是一个复杂的问题。例如,看看如何阿兰戈做到了。
数据库的示例包括:
- Janusgraph 与 Cassandra 后端
- 安格数据库
- 东方数据库
关系数据库有自己的 HA 设置,当然可以在 K8S 上运行。对于 HA/分片一体化设置(例如 ArangoDB),现在已经不那么容易了。
您可能还会对其他技术感兴趣。“当我成为真实的man”列表 :-)。请注意,这些有更高的硬件要求,更多的节点,更多的总 RAM 等。
- Docker Swarm
核心操作系统
Openstack
分布式操作系统
Openshift
- Fabric8
PS:是的,您可以在预定的 K8S 容器上运行 X 服务器……现在我不想考虑它,因为我对服务器端已经考虑得够多了。我相信有足够多的人在 Kubernetes 中运行 x 服务器,因为他们无所事事……PS2:不幸的是,我的声誉只够 2 个链接,但所有关键词都可以很容易地在 Google 上搜索到。