关于作者:Michael Archer 是一位资深的技术战略师,拥有超过20年的高增长行业经验,专注于物联网、移动视频内容传输和网络架构。
为玩家设定场景
设想你在享受一场精彩的游戏,正准备完成完美的致命一击,脑海中已经浮现出胜利画面的画面……突然,游戏卡顿了。你被对手击败,游戏结束。
我们都曾经历过这种情况,一个小小的实时故障让你错失了荣耀时刻和胜利的机会。对这种体验的沮丧促使了完全自托管游戏的复兴,因为它让玩家能够掌控自己的命运。然而,不幸的是,自托管并不是所有游戏或玩家的可行选项。那么,如果我们告诉你,有一种方法可以消除卡顿问题,而无需购买和维护自己的硬件,你会怎么看呢?
只需简单开发,你就可以通过将服务器部署到离你(玩家)更近的地方,创造你自己的低延迟体验,打造一个分布式的游戏天堂。进入强力三重奏:Xonotic、K3s和Akamai Cloud的边缘计算。
什么是边缘计算?
与依赖于可能远在几百(甚至几千)英里外的庞大中心化数据中心不同,边缘计算将计算能力更靠近数据源——在这种情况下,数据源就是你自己。这样,数据传输的距离大大缩短,从而显著减少了卡顿带来的延迟。
为什么选择K3s?保持轻量与灵活
K3s是一个轻量级的Kubernetes分发版。可以把Kubernetes(或K8s)看作是一个非常智能和高效的应用程序管理器,它负责部署、扩展并确保一切运行顺利。K3s是K8s的一个衍生版本,专为资源受限的环境设计。它小巧、快速并且非常有效——可以成为你游戏基础设施的得力助手。
那Agones呢?游戏服务器大师
Agones是一款专为管理专用游戏服务器而设计的开源、Kubernetes原生项目。它能自动处理游戏服务器实例的扩缩容、分配和运行等复杂操作,让您专注于酣畅对战,无需纠缠于服务器配置。
开始搭建吧!(有趣的部分来了)
我们将使用 K3s 和 Agones 在 Linode 实例 上部署一个 Xonotic 服务器(一款快节奏、免费且开源的第一人称射击游戏)。准备好体验前所未有的 Xonotic 对战吧!如果想查看完整教程,请前往文档。
步骤1:Terraform时间——铺设基础
Terraform是“基础设施即代码”工具。通过它,我们可以用配置文件定义服务器环境,让部署过程可重复且易于管理。首先,安装:brew install terraform
(注:如果你并非使用macOS系统,查看Terraform官网以获取适合你操作系统的安装说明。)
步骤2:项目设置——你的游戏总部
创建目录来存放项目:
`mkdir xonotic
cd xonotic`
步骤3:Terraform脚本——构建你的服务器(和防火墙!)
创建一个名为 main.tf的文件,并粘贴以下代码:
这里就是见证奇迹的地方!我们将定义 Linode 实例、设置防火墙,并完成所有必要的配置。
在本示例中,我们将在 Akamai 的分布式计算区域之一 —— 丹佛(Denver)部署一台专用计算实例。我们推荐使用配备 4 个 vCPU 的 8GB 专用实例,这个配置足以支持多名玩家同时竞技。
注意:要直接运行此示例代码,你需要先申请访问目前处于限量开放的分布式计算区域。
# 指定所需的Terraform提供程序
terraform {
required_providers {
linode = {
source = "linode/linode"
version = ">= 1.27.0"
}
}
}
# 定义敏感信息变量
variable "linode_token" {
description = "Linode API token"
type = string
sensitive = true
}
variable "root_password" {
description = "Root password for the instance"
type = string
sensitive = true
}
variable "admin_ip" {
description = "IPv4 address to be used to access the instance"
type = string
sensitive = true
}
# 配置Linode提供程序
provider "linode" {
token = var.linode_token
}
# 定义cloud-init配置
data "template_file" "cloud_init" {
template = <<EOF
#cloud-config
package_update: true
package_upgrade: true
runcmd:
- apt update -y
- apt upgrade -y
EOF
}
# 创建一个8GB的Linode实例(位于丹佛)
resource "linode_instance" "my_instance" {
label = "xonotic-game-server"
region = "us-den-1"
type = "g6-dedicated-edge-4"
image = "linode/ubuntu20.04"
root_pass = var.root_password
booted = true
metadata {
user_data = base64encode(data.template_file.cloud_init.rendered)
}
}
# 创建防火墙以允许22端口和7000-8000端口的传入流量
resource "linode_firewall" "my_firewall" {
label = "xonotic-firewall"
inbound_policy = "DROP"
outbound_policy = "ACCEPT"
inbound {
label = "allow-ssh"
action = "ACCEPT"
protocol = "TCP"
ports = "22"
ipv4 = [var.admin_ip]
}
inbound {
label = "allow-custom-ports"
action = "ACCEPT"
protocol = "UDP"
ports = "7000-8000"
ipv4 = ["0.0.0.0/0"]
ipv6 = ["::/0"]
}
inbound {
label = "allow-custom-ports"
action = "ACCEPT"
protocol = "TCP"
ports = "8080"
ipv4 = ["0.0.0.0/0"]
ipv6 = ["::/0"]
}
linodes = [linode_instance.my_instance.id]
}
# 输出实例的IP地址
output "instance_ip" {
value = linode_instance.my_instance.ip_address
}
然后,创建一个名为 terraform.tfvars的文件,并添加你的Linode API token和root密码(不要忘记替换占位符!):
linode_token = "your_linode_api_token"
root_password = "your_root_password"
admin_ip = "your_ipv4_address/32"
重要的安全提示: 请保管好你的 terraform.tfvars文件,并且不要将其提交到公共代码库中!
若不清楚当前使用的 IP 地址,可运行以下命令查询本机公网
`IP:
curl http://whatismyip.akamai.com`
步骤4:初始化并应用——让Terraform大显身手!
首先,初始化Terraform:terraform init
然后,应用配置:terraform apply
系统将提示您确认更改。输入yes并按回车,Terraform随即为您配置Linode实例并设置防火墙。这个过程可能需要几分钟。可以趁机喝杯咖啡(或者练练枪法…)。
步骤5:SSH连接——您的服务器已就绪!
Terraform完成后,将输出实例的IP地址。您也可以在Linode 云管理平台中,通过新建实例的"网络"选项卡查看反向 DNS 名称。使用以下 SSH 命令进行连接:ssh root@your_instance_ip_or_dns
将 your_instance_ip_or_dns替换为实际的IP地址或DNS名称。您需要输入在 terraform.tfvars中设置的root密码。
步骤6:安装K3s——轻量级的Kubernetes强力支持
这一步非常简单!只需在Linode实例上运行以下命令:curl -sfL https://get.k3s.io | sh –
这会下载并安装K3s。大约需要一到两分钟。
步骤7:安装Agones——游戏服务器编排时间!
现在我们来安装Agones,它将管理我们的Xonotic游戏服务器。运行以下命令:
kubectl create namespace agones-system
kubectl apply --server-side -f https://raw.githubusercontent.com/googleforgames/agones/release-1.47.0/install/yaml/install.yaml
这将创建一个专门的命名空间来运行Agones,并将其部署到K3s集群中。
步骤8:确认Agones正在运行——检查状态
确保一切顺利运行:
kubectl describe --namespace agones-system pods
您将会看到输出,指示Agones pod正在运行。
步骤9:部署并获取Xonotic游戏服务器状态
kubectl apply -f https://raw.githubusercontent.com/googleforgames/agones/release-1.47.0/examples/xonotic/fleet.yaml
watch kubectl describe gameserver
步骤10:获取游戏服务器IP——准备连接!
获取游戏服务器和IP地址:kubectl get gs
步骤11:安装Xonotic客户端
如果您还没有安装Xonotic客户端,请从 Xonotic官网 下载并安装。
步骤12:连接并开战——火力全开时刻!
启动Xonotic客户端:
- 打开游戏客户端
- 选择"多人游戏"模式
- 手动输入服务器信息
- 输入通过kubectl get gs命令获取的IP地址和端口号
- 连接服务器,享受超低延迟的Xonotic对战体验!
清理工作
要删除Agones舰队和游戏服务器实例,请执行:
kubectl delete -f https://raw.githubusercontent.com/googleforgames/agones/release-1.47.0/examples/xonotic/fleet.yaml
然后在项目目录中使用 terraform destroy命令删除Linode实例和防火墙,避免产生额外费用。
结论:未来游戏,尽在掌握
您刚刚使用边缘计算、K3s和Agones构建了一个强大的低延迟游戏环境。这证明您可以摆脱对游戏厂商服务器的完全依赖,将游戏体验带到离您更近的地方。这样的部署让游戏运行更流畅、响应更迅速、体验更有趣——再也不用担心因延迟而输掉比赛。
Akamai提供超过25个全球分布的核心计算区域,供我们的云计算客户使用。为了让工作负载更接近用户,您还可以利用我们的分布式计算区域,在奥克兰、约翰内斯堡和波哥大等云服务覆盖不足的主要城市部署专用实例。立即注册账户,查看完整的可用分布式区域列表,联系我们的云顾问,了解您所在区域的资源使用资格,或者创建支持工单。
如需了解更多,请参阅我们关于如何使用K3s和Agones搭建Xonotic服务器的完整指南。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。