Game Servers Management on Kubernetes
Go to file
ChrisLiu da2700aa70
Create CHANGELOG.md
2022-12-09 18:46:02 +08:00
.github/workflows Add feature: Service Quality (#11) 2022-11-01 11:46:06 +08:00
.license update license checker (#4) 2022-09-23 10:26:53 +08:00
apis/v1alpha1 Feat: add ObservedGeneration to GameServerSet (#13) 2022-11-09 14:33:31 +08:00
config Feat: add ObservedGeneration to GameServerSet (#13) 2022-11-09 14:33:31 +08:00
docs update docs format for network plugin 2022-12-02 00:09:58 +08:00
hack update gencerts.sh 2022-09-26 11:45:51 +08:00
pkg Feat: add ObservedGeneration to GameServerSet (#13) 2022-11-09 14:33:31 +08:00
scripts add e2e test checker 2022-09-28 12:02:28 +08:00
test Refactoring GameServer Lifecycle Management (#10) 2022-11-03 17:53:40 +08:00
.dockerignore Kruise-Game init 2022-09-21 14:27:27 +08:00
.gitignore Kruise-Game init 2022-09-21 14:27:27 +08:00
CHANGELOG.md Create CHANGELOG.md 2022-12-09 18:46:02 +08:00
Dockerfile Kruise-Game init 2022-09-21 14:27:27 +08:00
LICENSE Initial commit 2022-08-22 19:30:40 +08:00
Makefile add e2e test checker 2022-09-28 12:02:28 +08:00
OWNERS Add OWNERS 2022-08-22 19:33:38 +08:00
PROJECT Kruise-Game init 2022-09-21 14:27:27 +08:00
README.md Feature/update docs (#17) 2022-11-22 20:15:53 +08:00
go.mod Add feature: Service Quality (#11) 2022-11-01 11:46:06 +08:00
go.sum Add feature: Service Quality (#11) 2022-11-01 11:46:06 +08:00
main.go Add feature: Service Quality (#11) 2022-11-01 11:46:06 +08:00

README.md

Kruise-game

English | 中文

Introduction

Kruise-Game is a subproject of OpenKruise for solving the problem of game server landing in Kubernetes.

OpenKruiseGame logo

Kruise-Game utilizes the features of Kruise, including:

  • In-Place Update
  • Update sequence
  • Ordinals reserve(skip)
  • Pod probe marker

Why is Kruise-Game?

Game servers are stateful services, and there are differences in the operation and maintenance of each game server, which also increase with time. In Kubernetes, general workloads manage a batch of game servers according to pod templates, which cannot take into account the differences in game server status. Batch management and directional management conflict in K8s. Kruise-Game was born to resolve that. Kruise-Game contains two CRDs, GameServer and GameServerSet:

  • GameServer is responsible for the management of the game server status. Users can customize the game server status to reflect the differences between game servers;
  • GameServerSet is responsible for batch management of game servers. Users can customize update/reduction strategies according to the status of game servers.

Features:

  • Game server status management
    • Mark the game servers status without affecting its lifecycle
  • Flexible scaling/deletion mechanism
    • Support scaling down by user-defined status & priority
    • Support specifying the game server to delete directly
  • Flexible update mechanism
    • Support hot update (in-place update)
    • Support updating game server by user-defined priority
    • Can control the range of the game servers to be updated
    • Can control the pace of the entire update process
  • Custom service quality
    • Support probing game servers containers and marking game server status automatically

Quick Start

License

Copyright 2022.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.