0

0

使用 kruiseGame 进行云原生游戏

王林

王林

发布时间:2024-09-03 11:52:20

|

803人浏览过

|

来源于dev.to

转载

什么是克鲁斯游戏?

kruise-game 是 openkruise 旗下的一个开源项目,旨在为游戏工作负载(即游戏服务器)带来云原生转型。

但是游戏服务器到底是什么?
游戏服务器基本上是虚拟机或容器,处理 pvp 多人在线游戏后端的核心功能

下面我展示了现代 pvp 在线游戏使用的基本游戏服务器架构

使用 kruiseGame 进行云原生游戏

为什么我们真的需要克鲁斯游戏。默认的 k8s 资源不足以满足游戏工作负载吗?

现代 pvp 游戏变得越来越复杂,例如,它们需要多个游戏服务器来处理不同类型的服务。
现代 pvp 游戏(例如 valorant)需要游戏服务器进行游说、配对,以及运行实际游戏逻辑和管理游戏状态的服务器。处理如此多的游戏服务器是一项艰巨的任务,无法手动完成。那么现在怎么办?

我们有 kubernetes 来拯救。k8s 具有自动化操作和管理
功能可以为我们处理这个负担,只需部署您的游戏服务器映像,我们就完成了,对吗?不是真的

我希望事情这么简单。问题是你没有在这里部署常用的无状态 web 应用程序。游戏服务器不同,它们的要求也不同。k8s 默认资源适合无状态应用程序,但游戏服务器有更复杂的生命周期,它们是有状态的,而且它们的网络要求也不同。

  • 首先,游戏服务器需要直接无损连接到客户端(udp 连接),为此我们需要 pod 的固定 ip 地址,k8s pod 的 ip 在删除、缩放期间会更改。

  • 如果将 pod 用于游戏服务器,您也缺乏对 pod 的控制,有一种称为滚动更新的东西,您可以更新游戏服务器的某些实例来测试更新,并逐渐推广到其他实例防止停机,k8s 调度程序不知道您正在使用游戏服务器,它会以随机方式更新 pod,基本上您无法控制游戏服务器的更新策略。所以您对游戏服务器更新几乎没有灵活性。

为了缓解这些问题,kruise-game 定义了两个专门为游戏服务器工作负载设计的自定义资源 gameservergameserverset

  • gameserver:指对指定游戏服务器进行运维和管理操作的抽象。主要用于游戏服务器的更新顺序控制、状态控制、游戏服务器网络变更等运维和管理操作。

  • gameserverset:指一组游戏服务器生命周期管理的抽象。主要用于副本数量管理、游戏服务器启动等生命周期控制。

kruise-game 提供的游戏服务器管理功能:-

  • 基于镜像的热更新和配置的热重载

  • 更新、删除、隔离指定游戏服务器

  • 内置多种网络模型(固定ip地址和端口、无损直连、全球加速)

  • 自动缩放

  • 自动化运维(服务质量)

    Haiper
    Haiper

    一个感知模型驱动的AI视频生成和重绘工具,提供文字转视频、图片动画化、视频重绘等功能

    下载
  • 独立于云服务提供商

  • 复杂的游戏服务器编排

下图展示了 kruise-game 在 k8s 上的部署架构

使用 kruiseGame 进行云原生游戏

开始玩克鲁斯游戏:0

  1. 获取 k8s 集群和 helm

你需要一个 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

使用 kruiseGame 进行云原生游戏

有关 kruise-game 的更多信息和详细信息,请参阅 kruise-game 文档。

感谢您的阅读,希望您喜欢这个:)。

相关专题

更多
Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务
Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务

Golang云原生微服务Kubernetes (K8s) 是指 使用 Go 语言(Golang)编写的云原生微服务,并利用 Kubernetes 平台进行容器化部署、自动化管理、弹性伸缩和高效编排的一整套现代应用架构方案。

9

2025.12.22

tcp和udp的区别
tcp和udp的区别

TCP和UDP的区别,在连接性、可靠性、速度和效率、数据报大小以及适用场景等方面。本专题为大家提供tcp和udp的区别的相关的文章、下载、课程内容,供大家免费下载体验。

116

2023.07.25

udp是什么协议
udp是什么协议

UDP是OSI参考模型中一种无连接的传输层协议。本专题为大家带来udp是什么协议的相关文章,免费提供给大家。

267

2023.08.08

tcp和udp有什么区别
tcp和udp有什么区别

tcp和udp的区别有:1、udp是无连接的,tcp是面向连接的;2、udp是不可靠传输,tcp是可靠传输;3、udp是面向报文传输,tcp是面向字节流传输。想了解更多tcp相关的内容,可阅读本专题下面的相关文章。

348

2024.11.14

PHP 命令行脚本与自动化任务开发
PHP 命令行脚本与自动化任务开发

本专题系统讲解 PHP 在命令行环境(CLI)下的开发与应用,内容涵盖 PHP CLI 基础、参数解析、文件与目录操作、日志输出、异常处理,以及与 Linux 定时任务(Cron)的结合使用。通过实战示例,帮助开发者掌握使用 PHP 构建 自动化脚本、批处理工具与后台任务程序 的能力。

21

2025.12.13

PHP 命令行脚本与自动化任务开发
PHP 命令行脚本与自动化任务开发

本专题系统讲解 PHP 在命令行环境(CLI)下的开发与应用,内容涵盖 PHP CLI 基础、参数解析、文件与目录操作、日志输出、异常处理,以及与 Linux 定时任务(Cron)的结合使用。通过实战示例,帮助开发者掌握使用 PHP 构建 自动化脚本、批处理工具与后台任务程序 的能力。

21

2025.12.13

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

4

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Git 教程
Git 教程

共21课时 | 2.3万人学习

Git版本控制工具
Git版本控制工具

共8课时 | 1.5万人学习

Git中文开发手册
Git中文开发手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号