2

我正在Google Container Engine (GKE) 上使用kubefed1.8.3-gke.0建立一个联邦 kubernetes 集群。

似乎对于一个好的HPA集群自动缩放器,我必须使用 Open Policy Agent 作为kubernetes 准入控制器因为:

默认情况下,副本平均分布在所有底层集群中。例如:如果您有 3 个已注册的集群,并且您使用 来创建联合部署spec.replicas = 9,那么 3 个集群中的每个部署都将具有spec.replicas=3.

但在我的情况下,每个区域的负载都会动态变化,每个集群都应该有动态的 Pod 数量。

我找不到(或只是看不到)关于我的案例的示例或手册。所以,问题是:

如果我的联合上下文中有三个集群,一个策略应该有什么场景,一个用于 GKE 的每个区域

  • eu(1000 rps,标有“region=eu”的节点)
  • us(200 rps,标有“region=us”的节点)
  • 亚洲(100 rps,节点标记为“region=asia”)

它应该是在这三个集群中动态分布 Pod 的单一部署。

一个吊舱应该

  • 发球 100 rps
  • 请求 2 个 vCPU + 2Gb RAM
  • 单独放置在一个节点上(具有反亲和性

如果可能的话,我如何配置 OPA 以使该架构工作?

提前感谢您提供指向相应手册的任何链接。

4

1 回答 1

0

您尝试做的事情应该可以通过“Federated Horizo​​ntal Pod Autoscaler”实现,它们的主要用例之一正是您的场景:

引用Federated Pod Autoscaler的需求和设计文档:

用户可以使用副本集(或部署)跨联合集群调度同一应用程序的副本。然而,用户可能还需要让每个集群中的副本独立扩展,具体取决于副本的当前使用指标;包括 CPU、内存和应用程序定义的自定义指标。

实际文档中,结论中的这段话描述了行为:

使用联合 HPA 是为了确保工作负载副本移动到最需要它们的集群,或者换句话说,在负载超出预期阈值的地方。联合 HPA 功能通过操纵它在联合集群中创建的 HPA 上的最小和最大副本来实现这一点。它实际上依赖集群内的 HPA 控制器来监控指标并更新相关字段 [...] 另一方面,联合 HPA 控制器仅监控集群特定的 HPA 对象字段并更新最小副本和最大副本集群 HPA 对象中那些具有副本匹配阈值的字段。

因此,如果我没有误解您的需求,就没有理由使用 Open Policy Agent 之类的第三方产品或创建策略。

于 2017-11-22T16:30:28.857 回答