2017-04-10 39 views
0

的数量为了练习使用Kubernetes缩放,我创建了以下方案:自动缩放荚Kubernetes取决于连接的用户


游戏:

  • 我有一个用Java编写的游戏,有两个玩家,一个主人(选择一个低于100的数字)和一个猜谜游戏(试图猜测这个数字)。
  • 服务器实例终止,一旦猜测者正确猜测了数字,或者其中一个玩家断开连接。
  • 每个服务器实例只允许最多2个连接(主,猜测)。

Kubernetes:

  • 每当服务器达到其最大连接数,我想Kubernetes自动启动另一台服务器实例,并使用新的服务器实例连接新用户。

我的想法是使用Kubernetes-Client从Java服务器实例,并更新从每个服务器实例的Kubernetes集群。在这种形式下,我将有一种分散管理集群的方式。

你对此有何看法?有没有更好的方法来解决这个问题?我可以举个例子来更新pod上的元数据,并使用某种形式的自动缩放吗?

回答

0

您可能想要使用kubernetes的集群autoscaler功能。请参阅docs

您使用固定用户数量作为自定义指标的方法可能会有效,但使用通用指标(例如节点上的CPU消耗)可能会更好。为此,您需要定义容器允许使用的最大消耗量。 autoscaler需要此信息来了解它是否可以在节点上安排其他Pod。

请注意,有两层可扩展性需要考虑。豆荚和节点。自动调整程序将采用您定义的度量标准,并在需要时安排附加的窗格。您的节点的Pod容量有限,所以现在,根据您使用的基础架构,还需要扩展工作节点的数量。例如,如果您在AWS上运行,您需要一个Autoscale组。设置此功能的最佳方法是根据排队的预定Pod将AWS自动缩放组放大。因此,无论何时在队列中有无法调度的窗格,您的自动调整组将添加另一个节点。这是一个解释它的great article