节点池与一个池中的节点数

node pools vs number of nodes in one pool

在配置 k8 集群时,在数字海洋的仪表板中,在选择集群容量下,我看到一个选项可以在池中添加节点或完全添加一个新池。我不太明白其中的区别。

DO 给出了以下对我来说很模糊的建议 -

Increasing the number of nodes in a pool lets you run more instances of the scheduled services. Adding more node pools allows you to schedule pods to different node pools so each pod has the RAM, CPU, and storage it requires. You can add and remove nodes and node pools at any time.

任何人都可以给我一个例子,当一个人增加一个池中的节点时,当一个人完全创建一个不同的池时?

谢谢!

假设我 运行 我的网站服务器使用 Kubernetes。最初,我只是建立了我的网站并在我的节点池-a 中提供了两个节点,因此任何访问我网站的人都将被定向到节点池-a 中的两个节点之一。几周后,我的访问者增加了,所以我在节点池中添加了另一个节点,现在有 3 个节点可以为我的访问者提供服务。

现在,我决定为我的网站添加一项新功能。这与较旧的节点池(是微服务)隔离,因此这需要一个带有 x 个节点的新节点池 b。然后任何使用该功能的访问者都将被定向到 node-pool-b

基本上,垂直和水平缩放是相同的逻辑。

垂直扩展 = 在当前机器上增加 memory/CPU = 增加现有节点池中的节点 水平扩展 = 添加更多机器 = 添加新的节点池以服务于不同的目的。

来自 GCP 的文档:

A node pool is a group of nodes within a cluster that all have the same configuration.

节点池有一个特定的节点类型,它告诉他们可以使用什么类型的虚拟机作为他们的节点。比如我可以有这三个节点池:

highmem:4 vCPUs,32G RAM,无 GPU

highcpu: 8 vCPUs, 16G RAM 无 GPU

GPU:4 vCPUs,8G RAM,1 Nvidia Tesla GPU

我可以独立扩展这些节点池中的每一个,我的池中可以有 3 个 highmem 节点用于使用大量内存但较少的进程 CPU,而我的池中只有 1 个节点使用大量 CPU 但 RAM 较少的进程的 highcpu 池。同时,我有一个用于 GPU 进程(例如 Tensorflow 或图像处理程序)的节点池。 Assigning pods to node pools 通过资源定义中的节点选择器或关联选项完成。

因此,拥有不同的节点池使您能够针对不同的目的使用经过微调的 VM。如果您仅限于单个池,则必须使用具有大量 RAM、CPU 和 GPU 的大型 VM,这将极其昂贵且效率低下。

请注意,节点池并不意味着允许 "isolation" 个应用程序。为了在逻辑上分离应用程序,可以使用命名空间而不是节点池。节点池仅用于管理所使用的资源和虚拟机类型。