多租户 kubernetes 集群中的自动缩放

autoscaling in multi tenant kubernetes cluster

我正在 EC2 上设置 kubernetes 集群,我有以下要求。

  1. 支持具有预定义上限(资源利用率)的多个租户。
  2. 根据当前使用情况扩大和缩小集群。

我知道第 1 点可以通过 resource-quota 实现,资源配额页面还讨论了通过编写自定义控制器来扩展集群。我也可以简单地使用它来缩小规模吗?是否有可用的开源实现?

Kubernetes 提供 cluster-autoscaler 自动缩放集群,当我有多个命名空间时它是否有效? scale down对namespace的资源配额有什么影响?

如果总可用资源小于所有命名空间的资源配额之和会怎样?

Cluster Autoscaler 确保集群中的所有 pods 有足够的 space,无论它们 运行 的名称如何 space。基本上如果有一个 pod由于资源不足而无法调度的,CA会增加节点。如果有未充分利用的节点,它们可能会被 CA 删除。它与配额正交。

更具体地说:配额是一种限制可以在 namespace 中创建多少 'stuff' 的机制。他们不检查集群中是否有实际资源——只是强制执行每个名称space 的限制。如果超过限制,您将无法创建 Pod。如果您低于限制,则可以创建它,无论集群中是否有 space。如果没有 space 并且你有自动缩放器 运行ning 它将添加更多节点来使 space。如果没有 space 并且您没有自动缩放器,您的 pod 将保持 'pending' 直到其他内容被删除。

实际集群大小(以及向上或向下缩放集群)对配额没有任何影响。