kruise-game は、openkruise のオープンソース プロジェクトで、ゲーム ワークロード、別名ゲーム サーバーにクラウド ネイティブの変革をもたらすことを目的としています。
でも、ゲームサーバーとは実際何ですか?
ゲーム サーバーは基本的に、PVP マルチプレイヤー オンライン ゲームのバックエンドでコア機能を処理する仮想マシンまたはコンテナです
以下に、最新の PvP オンライン ゲームで使用される基本的なゲーム サーバー アーキテクチャを示します
なぜクルーズゲームが本当に必要なのでしょうか。デフォルトの k8s リソースはゲームのワークロードに十分ではありませんか?
最新の PvP ゲームはますます複雑になっており、たとえば、さまざまな種類のサービスを処理するには複数のゲーム サーバーが必要です。
valorant のような最新の PvP ゲームには、ロビー活動、マッチメイキング、そして実際にゲーム ロジックを実行してゲームの状態を管理するためのゲーム サーバーが必要です。非常に多くのゲーム サーバーを処理するのは大変な作業であり、手動で行うことはできません。さて、どうなるでしょうか?
まあ、自動化された操作と管理を備えた Kubernetes.K8s を使用する必要があります
この負担は、ゲーム サーバー イメージを展開するだけで完了します。そうではありません
これくらい簡単だったらいいのにと思います。問題は、ここで通常のステートレス Web アプリをデプロイしていないことです。ゲーム サーバーは異なり、その要件も異なります。k8s のデフォルト リソースはステートレス アプリに適していますが、ゲームサーバーにはより複雑なライフサイクルがあり、ステートフルであると同時に、ネットワーク要件も異なります。
まず第一に、ゲームサーバーはクライアントへの直接ロスレス接続 (udp 接続) を必要とします。そのためにはポッドの固定 IP アドレスが必要です。k8s ポッドの IP は削除やスケーリング中に変更されます。
また、ポッドをゲームサーバーに使用する場合、ポッドを制御することができません。ゲームサーバーのいくつかのインスタンスを更新して更新をテストし、徐々に他のインスタンスにロールアウトするローリングアップデートと呼ばれるものがあります。ダウンタイムを防ぎます。K8s スケジューラは、ユーザーがゲーム サーバーを操作していることを認識せず、ランダムな方法でポッドを更新します。基本的に、ゲーム サーバーの更新戦略を制御することはできません。そのため、ゲーム サーバーの更新には柔軟性がほとんどありません。
これらの問題を軽減するために、kruise-game はゲーム サーバー ワークロード用に特別に設計された 2 つのカスタム リソース gameServer と gameserverSet
を定義します。gameServer: 指定されたゲーム サーバー上の O&M および管理操作の抽象化を指します。主に更新シーケンス制御、ゲームサーバーの状態制御、ゲームサーバーのネットワーク変更などのO&Mおよび管理業務に使用されます。
gameServerSet: ゲーム サーバーのグループのライフサイクル管理の抽象化を指します。主にレプリカ数管理やゲームサーバーの起動などのライフサイクル管理に使用されます。
kruise-game がゲームサーバーの管理のために提供する機能:-
イメージに基づくホット アップデートと構成のホット リロード
指定したゲームサーバーの更新、削除、隔離
複数の組み込みネットワーク モデル (固定 IP アドレスとポート、ロスレス直接接続、およびグローバル アクセラレーション)
オートスケーリング
自動化されたO&M (サービス品質)
クラウド サービス プロバイダーから独立しています
複雑なゲームサーバーオーケストレーション
下の画像は、k8s 上の kruise-game デプロイメント アーキテクチャを示しています
クルーズゲームを始めましょう :0
kruise-game には k8s クラスターが必要です。k8s クラスターを入手する最も簡単な方法は、マシンに minikube をインストールすることです。また、マシンに Helm がインストールされていることを確認してください。
2.minikube を開始します
minikube start
3.helm を使用して kruise-game をインストールします
#kruise-game relies on openkruise so you need to install openkruise first # Firstly add openkruise charts repository if you haven't do this. $ helm repo add openkruise https://openkruise.github.io/charts/ # [Optional] $ helm repo update # Install the latest version. $ helm install kruise openkruise/kruise --version 1.6.3 #now instakk kruise-game $ helm install kruise-game openkruise/kruise-game --version 0.8.0
4.minikube ダッシュボードに移動します
minikube dashboard
5.kruise-game-system 名前空間を使用する必要があります。kruise-game のインストールおめでとうございます
kruise-game の詳細については、kruise-game のドキュメントを参照してください。
読んでいただきありがとうございます。楽しんでいただければ幸いです:)。
以上がkruiseGame を使用したクラウドネイティブ ゲームの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。