openkruise / kruise-game

Game Servers Management on Kubernetes
https://openkruise.io/kruisegame/introduction
Apache License 2.0
432 stars 60 forks source link

[feat] add maxAvailable param for external scaler #188

Open chrisliu1995 opened 13 hours ago

chrisliu1995 commented 13 hours ago

当前基于external scaler的自动水平伸缩机制如下:

但定向缩容的机制并不适应于所有场景,例如:

  1. 空闲的GameServer处于None状态,等待承载对局
  2. GameServer被分配,承载对局时会处于Allocated状态
  3. 当对局结束,业务并不希望同时结束GameServer生命周期,而是复用该GameServer,用于承载其他新的对局,则再次将其置为None状态

整个过程不存在WaitToBeDeleted状态的GameServer,但业务希望处于None的GameServer,也就是空闲的游戏服数量有所限制,不能无限增长。此时需要的语义与minAvailable正好相反,即maxAvailable.

为与定向缩容机制兼容,maxAvailable生效逻辑为:

xucheng217 commented 11 hours ago

非常有用,解决了我们公司某个服务想要复用gameserver的问题。