跳到主要内容
博客计算无延迟,全碎片:利用 Xonotic、K3s 和边缘计算提升您的游戏水平

无延迟,全碎片:利用 Xonotic、K3s 和边缘计算提升游戏水平

无延迟_全速前进_提升你的游戏水平

让我们为游戏玩家设定一个场景:你正在进行一场人生中最精彩的比赛(你希望今天也能进行流媒体游戏)。你正在瞄准完美的制胜一击,你已经在想象胜利的画面会弹出......然后游戏出现了延迟。你被对手干掉了。游戏结束。

我们都有过这样的经历,在实时游戏中,一个小故障让你失去了荣耀和胜利的时刻。对这种经历的沮丧导致了完全自托管游戏的再次流行,这样你就可以作为玩家控制自己的命运。但遗憾的是,并不是每款游戏或每个玩家都能选择自托管。但是,如果我们告诉你有一种方法,可以在无需购买和维护自己的硬件的情况下,将延迟问题消除在萌芽状态呢?

只需稍加开发,您就可以建立自己的分布式游戏天堂,让服务器离您(玩家)更近,创造自己的低延迟体验。进入强大的三人组: Xonotic, K3s阿卡迈云.

边缘到底是什么?

边缘计算不依赖于数百(甚至数千)英里外的大型集中式数据中心,而是将处理能力带到离数据源更近的地方,在这种情况下,数据源就是你。这大大降低了产生可怕延迟的延迟时间,原因很简单,数据不需要跑那么远。

为什么选择 K3?保持轻便灵活

K3s 是一个轻量级 Kubernetes 发行版。可以把 Kubernetes(或 K8s)想象成一个非常智能、高效的应用程序管理器,它可以处理部署、扩展,并确保一切顺利运行。K3s 是 K8s 的一个分支,专为资源有限的环境而设计。它小巧、快速、高效,可以成为您的游戏基础架构帮手。

阿戈内斯呢?游戏服务器大师

Agones是一个开源的 Kubernetes 原生项目,专为管理专用游戏服务器而设计。它能处理游戏服务器实例的扩展、分配和运行等复杂问题,让你可以专注于碎片化游戏,而不是摆弄服务器配置。

让我们开始建设!(有趣的部分)

We’re going to set up a Xonotic server (a fast-paced, free, open-source FPS) on a Linode instance, managed by K3s and Agones. Get ready to experience Xonotic like never before! If you’d like to follow our full guide, go to the docs.

步骤 1:Terraform 时间--奠定基础

Terraform是我们的 "基础设施即代码 "工具。它能让我们在文件中定义服务器设置,使其可重复且易于管理。首先,安装它:

brew install terraform

(注:如果您使用的不是 macOS,请查看Terraform 网站,了解适用于您操作系统的安装说明)。

步骤 2:项目设置 - 您的游戏总部

让我们为项目创建一个目录:

mkdir xonotic

cd xonotic

步骤 3:Terraform 脚本--构建服务器(和防火墙)

创建一个名为 main.tf 并粘贴以下代码。 

这就是神奇的地方!我们将定义 Linode 实例、设置防火墙并配置所需的一切。 

在本例中,我们在Akamai的分布式计算区域之一丹佛部署了一个专用计算实例。我们建议使用8GB专用实例,它有4个vCPU,适合多个挑战者使用。

注意:您需要访问分布式计算区域,目前这些区域的可用性有限,因此本示例代码无法按原样运行。

# Specify the required Terraform provider

terraform {

  required_providers {

    linode = {

      source = "linode/linode"

      version = ">= 1.27.0"  # Ensure a version that supports metadata

    }

  }

}

# Define variables for sensitive information

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

}

# Configure the Linode provider

provider "linode" {

  token = var.linode_token

}

# Define the cloud-init configuration

data "template_file" "cloud_init" {

  template = <<EOF

#cloud-config

package_update: true

package_upgrade: true

runcmd:

  - apt update -y

  - apt upgrade -y

EOF

}

# Create a 8GB dedicated Linode instance in Denver

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)

  }

}

# Create a firewall to allow incoming traffic on port 22 and 7000-8000

resource "linode_firewall" "my_firewall" {

  label = "xonotic-firewall"

# Drop everything that is not covered by an explicitly rule

  inbound_policy = "DROP"

# Allow all outbound traffic

  outbound_policy = "ACCEPT"

  # Rule to allow SSH (port 22)

  inbound {

    label    = "allow-ssh"

    action   = "ACCEPT"

    protocol = "TCP"

    ports    = "22"

    ipv4     = [var.admin_ip]

  }

  # Rule to allow custom port range (7000-8000)

  inbound {

    label    = "allow-custom-ports"

    action   = "ACCEPT"

    protocol = "UDP"

    ports    = "7000-8000"

    ipv4     = ["0.0.0.0/0"]

    ipv6     = ["::/0"]

  }

  # Rule to allow Agones port 8080

  inbound {

    label    = "allow-custom-ports"

    action   = "ACCEPT"

    protocol = "TCP"

    ports    = "8080"

    ipv4     = ["0.0.0.0/0"]

    ipv6     = ["::/0"]

  }

  # Associate the firewall with the instance

  linodes = [linode_instance.my_instance.id]

}

# Output the instance's IP address

output "instance_ip" {

  value = linode_instance.my_instance.ip_address

}

现在,创建一个名为 terraform.tfvars 并添加您的 Linode API 令牌和根密码(别忘了替换占位符!):

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

这将下载 Linode 提供程序。然后,应用配置:

terraform apply

系统会提示您确认更改。键入 yes 并点击 Enter。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.

第 6 步:安装 K3s--轻量级 Kubernetes 强国

这非常容易!只需在 Linode 实例上运行此命令即可:

curl -sfL https://get.k3s.io | sh -

下载并安装 K3s。需要一两分钟。

步骤 7:安装 Agones - Game Server Orchestration Time!

现在我们安装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 客户端,请从https://xonotic.org/ 下载适用于您操作系统的 Xonotic 客户端。

步骤 12:连接和游戏!- 碎片时间

  1. 启动 Xonotic: 启动客户端。
  2. 多人模式: Go "多人游戏"。
  3. 服务器连接:选择手动加入服务器。
  4. 输入 IP 和端口: 输入从 kubectl get gs 指挥。
  5. 加入游戏:连接并享受低延迟的 Xonotic 体验!

清理(当你结束统治时)

移除阿戈内斯舰队和游戏服务器实例:

kubectl delete -f https://raw.githubusercontent.com/googleforgames/agones/release-1.47.0/examples/xonotic/fleet.yaml

然后您可以使用 terraform destroy 在项目目录中删除 Linode 实例和防火墙,以避免进一步的成本增加。

结束语游戏的未来掌握在你手中

您刚刚使用边缘计算、K3 和 Agones 构建了一个强大、低延迟的游戏设置。这展示了如何摆脱对游戏提供商自有服务器的完全依赖,让您的游戏体验离家更近。这将使游戏更流畅、反应更灵敏、更有趣,而且不会再有延迟引起的损失。 

Akamai在全球拥有超过25个分布式核心计算区域,可供云计算客户使用。为了让工作负载离家更近 ,您可以利用我们的分布式计算区域,在云提供商服务不足的主要城市(包括奥克兰、约翰内斯堡和波哥大)部署专用实例。注册账户,查看可用分布式区域的完整列表,并与我们的云计算顾问取得联系,了解您是否有资格访问您所在位置的资源或创建支持票据

If you want to learn more, check out our guide on how to set up a Xonotic server with K3s and Agones.

注释

留下回复

您的电子邮件地址将不会被公布。 必须填写的字段被标记为*