头图
关于作者: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官网以获取适合你操作系统的安装说明。)
image.png

步骤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客户端:

  1. 打开游戏客户端
  2. 选择"多人游戏"模式
  3. 手动输入服务器信息
  4. 输入通过kubectl get gs命令获取的IP地址和端口号
  5. 连接服务器,享受超低延迟的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服务器的完整指南。


Akamai
1 声望1 粉丝

Akamai 支持并保护网络生活。全球各大优秀公司纷纷选择 Akamai 来打造并提供安全的数字化体验,为数十亿人每天的生活、工作和娱乐提供助力。 我们横跨云端和边缘的计算平台在全球广泛分布,不仅能让客户轻松开发...