在GKE上的Federated Kubernetes集群中的HPA +集群自动缩放器+ OPA

时间:2017-11-22 08:14:06

标签: kubernetes google-kubernetes-engine open-policy-agent

我正在Google容器引擎(GKE)1.8.3-gke.0上设置kubefed的联合kubernetes群集。

似乎好的HPAcluster autoscaler由于kubernetes Admission Controller,我必须将开放政策代理用作this

  

默认情况下,副本在所有基础中均匀分布   集群。例如:如果您有3个已注册的群集   使用spec.replicas = 9创建联合部署,然后创建每个部署   3个群集中的部署将具有spec.replicas=3

但在我的情况下,负载将在每个区域动态更改,每个群集都应具有动态pod数。

我找不到(或者只是看不到)关于像我这样的案件的例子或手册。所以,问题是:

如果我的联合上下文中有三个群集,一个针对GKE的每个区域,那么策略应该采用什么方案?

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

应该是动态在这三个群集中传播广告的单一部署。

一个广告

  • 发送100 rps
  • 请求2个vCPU + 2Gb RAM
  • 单独放置在一个节点上(使用anti-affinity

如果可能,我如何配置OPA以使该架构有效?

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

1 个答案:

答案 0 :(得分:0)

你想要做的事情应该通过“联合水平Pod自动扫描器”来实现,他们的主要用例之一就是你的场景:

从Federated Pod Autoscaler的Requirements & Design Document引用:

  

用户可以使用replicaset(或部署)在联合群集中安排相同应用程序的副本。然而,用户可能还需要在每个群集中独立地缩放副本,具体取决于副本的当前使用度量;包括CPU,内存和应用程序定义的自定义指标。

actual documentation结论中的这一段描述了行为:

  

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

因此,如果我没有误解您的需求,则没有理由使用第三个产品,如Open Policy Agent或创建政策。