首页 > 解决方案 > Kubernetes / Agones 服务缩减

问题描述

我有一个运行 x 数量的游戏服务器(pod)的部署。我正在使用 Agones 来确保与玩家连接的游戏服务器不会因缩减规模而停止。此外,我使用一个服务(“连接”到所有游戏服务器)作为 Pod 的 LoadBalancer,据我了解,当玩家连接到该服务时,它会随机选择一个游戏服务器。这在放大时效果很好,但在缩小时效果不佳。由于 Agones 会阻止上面有玩家的游戏服务器缩小,因此 Pod 的数量基本上不会减少,因为该服务没有考虑所需副本的数量(实际数量更高,因为上面有玩家的游戏服务器不会被缩小) .

有没有办法阻止 LoadBalancer 服务选择不再需要的游戏服务器(副本)?例如:当前的网络负载只需要 3 个副本,但目前有 5 个,因为有 5 个服务器上有播放器阻止它们关闭。我只想将新负载分布在 3 个所需的副本(游戏服务器)上,让其他 2 个有机会接触到 0 个玩家,因此它最终能够自行关闭。

标签: kubernetesscalingagones

解决方案


我建议不要使用 LoadBalancer 将玩家分散到您的游戏实例中,而是使用 Agones GameServerAllocation API 让 Agones 为您找到可用的游戏服务器。

如果您允许多个玩家连接到同一个游戏服务器,请查看基于玩家容量分配的集成模式。Agones 会将玩家打包到具有可用容量的游戏服务器上(而不是将它们分散开),这将防止您将极少数玩家分布在所有游戏服务器上,当您使用负载平衡器将玩家分配到游戏时会发生这种情况服务器。


推荐阅读