为 GKE kubernetes 集群选择节点大小

Selecting a node size for a GKE kubernetes cluster

我们正在讨论生产 GKE 集群的最佳节点大小。

一般情况下,小节点多还是大节点少好?

例如我们在以下两个选项中进行选择

  1. 3 x n1-standard-2 (7.5GB 2vCPU)
  2. 2 x n1-standard-4 (15GB 4vCPU)

我们 运行 在这些节点上:

我认为有两点需要考虑:

  • 复制

像 Elasticsearch 或 Redis 集群/sentinel 这样的服务只有在有足够的 Pods 运行 服务时才能提供可靠的冗余:如果你有 2 个节点,5 个 elasticsearch Pods ,很可能 3 Pods 将在一个节点上,而 2 个将在另一个节点上:您的最大复制将是 2。如果您碰巧在同一节点上有 2 个副本 Pods 并且它出现故障,您丢失整个索引。

[编辑]:如果您使用持久块存储(这最适合持久性,但设置起来很复杂,因为每个节点都需要自己的块,这使得扩展变得棘手),您不会 'lose the whole index',但这是如果您依赖本地存储,则为真。

因此,节点越多越好。

  • 性能:

显然,您需要足够的资源。较小的节点具有较低的资源,因此如果 Pod 开始获得大量流量,它将更容易达到其限制并且 Pods 将被弹出。

Elasticsearch 非常耗费内存。您必须考虑 运行 所有这些 Pods 是否需要更大的节点。

最后,随着您的需求增长,您可能希望混合使用不同的容量节点,在 GKE 中,这些节点将具有容量标签,可用于设置资源配额和内存限制,CPU。您还可以添加自己的标签以确保某些 Pods 最终出现在某些类型的节点上。