仅供内部使用的集群节点 pods

Cluster nodes only used by internal pods

我们使用 GKE 通过 Anthos 托管我们的应用程序,我们的默认节点池设置为自动缩放,但我注意到在 5 个 运行 pods 中,只有 2 个托管我们的实际服务。

其他都是运行内部服务,像这样:

问题是 运行 我们自己的服务没有足够的空间。我想这些对集群至关重要,否则集群将自动缩放并且节点将被删除。

解决此问题的最佳方法是什么?我想升级节点机器类型以允许每个节点有更多资源并在其中有更多空间,从而减少 运行 个节点,但我想确保我不是简单地遗漏了一些关于 GKE 工作原理的东西。

我现在已经挖掘了很长一段时间,但似乎这是我唯一的选择。

GKE 本身需要一些作为集群的一部分部署的附加资源。您可以针对较小的集群微调 resource usage of some of the GKE add-ons。此外,Anthos 您启用的每个 Anthos 功能通常也会部署一组控制器。 GKE 和 Anthos 试图最大限度地减少这些服务/控制器使用的计算资源,但在为节点计算正确的大小时,您确实需要考虑到它们。一个好的经验法则是假设系统 services/controllers 在使用 GKE/Anthos 时将使用 ~1 个 vCPU(它通常比那个低,但它使事情变得更容易)。因此,如果您的工作负载都请求 >=1 个 vCPU,您可能需要使用至少具有 4 个 vCPU 的节点。如果您不想预先配置所有内容,您还需要为节点池启用集群自动缩放器。

更好的选择是使用 node auto-provisioning,因为在这种情况下,您不需要 create/manage 自己的节点池,因为 GKE 会自动 add/remove 基于节点/节点池在您的部署请求的资源上。