为开源游戏部署服务器
在本快速入门中,您将了解如何借助 Google Cloud CLI 在 Game Servers 上使用游戏服务器大区、集群、部署、配置和发布。
如需在 Google Cloud 控制台中直接遵循有关此任务的分步指导,请点击操作演示:
准备工作
- 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
- 确保您已启用 Game Services API。 启用 Game Services API
选择 shell
为完成本快速入门,您可以使用 Cloud Shell 或本地 shell。
Cloud Shell 是一种 shell 环境,用于管理托管在 Google Cloud 上的资源。Cloud Shell 预安装有 gcloud
命令行工具。gcloud CLI 提供了 Game Servers 的主要命令行界面。
Cloud Shell
如需启动 Cloud Shell,请执行以下步骤:
进入 Google Cloud 控制台。
在控制台的右上角,点击激活 Cloud Shell 按钮:
控制台下方的框架内会打开一个 Cloud Shell 会话。您可以使用此 shell 运行 gcloud
命令。
本地 shell
安装 gcloud CLI。
确认您已为 Google Cloud CLI 设置所需的默认项目(否则,您稍后需要为每个命令明确指定 --project
标志):
gcloud config list project
如果无法运行以下命令来设置默认项目,请将 PROJECT_ID
替换为所需的项目 ID:
gcloud config set project PROJECT_ID
运行以下命令以验证 Google Cloud CLI 的版本。Game Servers 需要使用 306.0.0
版或更高版本的 gcloud CLI。
gcloud version
如需更新安装,请运行以下命令:
gcloud components update
如果选择本地 shell,则可能需要安装 Kubernetes 命令行工具 kubectl
:
gcloud components install kubectl
创建 Google Kubernetes Engine 集群
如需创建 Google Kubernetes Engine 集群,请执行以下操作:
在 Cloud 控制台中,启用 Kubernetes Engine API。
运行以下命令创建一个费用优化的集群,该集群在
us-central1-a
可用区中有一个节点:gcloud container clusters create gcgs-quickstart \ --cluster-version=1.23 \ --tags=game-server \ --scopes=gke-default \ --num-nodes=1 \ --no-enable-autoupgrade \ --machine-type=e2-standard-2 \ --zone=us-central1-a
运行以下命令来检索您在上一步中创建的 GKE 集群的凭据:
gcloud container clusters get-credentials gcgs-quickstart --zone=us-central1-a
kubectl
使用这些凭据在 Kubernetes 集群上运行命令。如需了解详情,请参阅为 kubectl 配置集群访问权限。
在 GKE 上安装 Agones
在本部分中,您将安装开源 Agones 游戏基础架构平台。如需安装 Agones,请执行以下操作:
运行以下命令以创建
agones-system
命名空间:kubectl create namespace agones-system
运行以下命令可安装 Agones:
kubectl apply -f https://raw.githubusercontent.com/googleforgames/agones/release-1.26.0/install/yaml/install.yaml
您可以通过检查 Kubernetes pod 的状态来验证 Agones 系统是否正在运行:
kubectl get --namespace agones-system pods
所有 pod 都应处于
Running
状态:NAME READY STATUS RESTARTS AGE agones-allocator-6694dcc89-7r75d 1/1 Running 0 28s agones-allocator-6694dcc89-m7ghq 1/1 Running 0 28s agones-allocator-6694dcc89-qp6cm 1/1 Running 0 28s agones-controller-56c98db844-llzzc 1/1 Running 0 22s agones-ping-d9d74c5c6-8kmt6 1/1 Running 0 24s agones-ping-d9d74c5c6-xwn4h 1/1 Running 0 24s
创建 Game Servers 资源
要创建 Game Servers 资源,请执行以下操作:
在 GKE 集群所在的位置创建大区:
gcloud game servers realms create realm-quickstart --time-zone EST --location us-central1
将 Agones GKE 集群注册到 Game Servers,并将其挂接到您在上一步中创建的大区:
gcloud game servers clusters create cluster-quickstart \ --realm=realm-quickstart \ --gke-cluster locations/us-central1-a/clusters/gcgs-quickstart \ --namespace=default \ --location us-central1 \ --no-dry-run
创建一个游戏服务器部署,用于存储所有游戏服务器配置,然后将其发布到游戏服务器集群中:
gcloud game servers deployments create deployment-quickstart
现在您已有了游戏服务器部署,可以使用 gcloud CLI 为其添加游戏服务器配置。
将以下示例 Agones 队列规范清单复制到当前目录中名为
fleet_configs.yaml
的新文件:- name: fleet-spec-1 fleetSpec: replicas: 2 template: metadata: labels: foo: bar spec: ports: - name: default portPolicy: Dynamic containerPort: 7654 template: spec: containers: - name: simple-game-server image: gcr.io/agones-images/simple-game-server:0.3
如需创建游戏服务器配置,请运行以下命令:
gcloud game servers configs create config-1 --deployment deployment-quickstart --fleet-configs-file fleet_configs.yaml
如需更新发布,请运行以下命令:
gcloud game servers deployments update-rollout deployment-quickstart --default-config config-1 --no-dry-run
如需验证默认命名空间下的一个队列的发布,请运行以下命令:
kubectl get fleet
下面描述了预期的输出:
NAME SCHEDULING DESIRED CURRENT ALLOCATED READY AGE fleet-deployment-quickstart-config-1 Packed 2 2 0 2 4s
输出会确认您是否已在集群中部署了一个队列,其中包含两个准备接受连接的简单 UDP 服务器副本。
测试与游戏服务器的连接
如需测试与游戏服务器的连接,请执行以下操作:
创建防火墙规则,打开连接到集群所需的 UDP 端口:
gcloud compute firewall-rules create gcgs-quickstart-firewall \ --allow udp:7000-8000 \ --target-tags game-server \ --description "Firewall to allow game server udp traffic"
接下来,获取单个游戏服务器的 IP 地址和端口号:
kubectl get gameserver
该命令会返回类似于以下内容的输出:
NAME STATE ADDRESS PORT NODE AGE fleet-deployment-quickstart-config-1-nndvr-5gvch Ready IP_ADDRESS PORT_NUMBER gke-gcgs-quickstart-default-pool-db3d2ee8-dlg7 11s fleet-deployment-quickstart-config-1-nndvr-vqwpl Ready IP_ADDRESS PORT_NUMBER gke-gcgs-quickstart-default-pool-db3d2ee8-dlg7 11s
如需测试连接,请运行 Netcat 命令。如需在 Linux 上安装 Netcat,请运行以下命令:
sudo apt install netcat
如需启动测试,请运行以下命令:
nc -u IP_ADDRESS PORT_NUMBER
接下来,输入
Hello
,该命令会返回如下所示的输出:Hello > ACK: Hello
使用 Ctrl+C 停止测试。
(可选)为开源游戏名称部署服务器
您可以更新发布,以便在集群中部署带有两个开源游戏服务器副本的机群。这些游戏服务器支持多人游戏版本的赛车游戏 SuperTuxKart。
使用以下 Agones 机群规范覆盖现有的
fleet_configs.yaml
文件:- name: supertuxkart fleetSpec: replicas: 2 template: metadata: labels: version: "1.0" spec: ports: - name: default containerPort: 8080 health: initialDelaySeconds: 30 periodSeconds: 60 template: spec: containers: - name: supertuxkart image: gcr.io/agones-images/supertuxkart-example:0.3
您无法更新现有游戏服务器配置,因为它们是不可变的。 创建引用更新后的队列规范清单的新配置:
gcloud game servers configs create stk-1 --deployment deployment-quickstart --fleet-configs-file fleet_configs.yaml
使用新配置对发布进行更新:
gcloud game servers deployments update-rollout deployment-quickstart --default-config stk-1 --no-dry-run
获取单个游戏服务器的 IP 地址和端口号:
kubectl get gameserver
启动 SuperTuxKart 客户端。
点击主菜单上的在线按钮,然后点击输入服务器地址 (Enter server address) 按钮。
输入单个游戏服务器的 IP 地址和端口号(来自上一步)。
点击开始竞赛,以启动游戏。
您可以在其他平台上下载 SuperTuxKart 客户端以连接到同一服务器并参与竞赛。
清理
为避免因本页中使用的资源导致您的 Google Cloud 帐号产生费用,请按照以下步骤操作。
如果您不想保留您在本快速入门中创建的任何资源,可以删除该项目:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
或者,如果您想要保留该项目,请完成以下步骤以手动删除您在本快速入门中创建的资源:
如需删除防火墙规则,请运行以下命令:
gcloud compute firewall-rules delete gcgs-quickstart-firewall
如需清除默认发布,请运行以下命令:
gcloud game servers deployments update-rollout deployment-quickstart --clear-default-config --no-dry-run
如需删除游戏服务器配置,请运行以下命令:
gcloud game servers configs delete config-1 --deployment deployment-quickstart
如果您已完成可选部分,请删除其他游戏服务器配置:
gcloud game servers configs delete stk-1 --deployment deployment-quickstart
如需删除游戏服务器部署,请运行以下命令:
gcloud game servers deployments delete deployment-quickstart
如需删除游戏服务器集群,请运行以下命令:
gcloud game servers clusters delete cluster-quickstart --realm=realm-quickstart --location=us-central1 --no-dry-run
如需删除大区,请运行以下命令:
gcloud game servers realms delete realm-quickstart --location=us-central1
如需停用 Game Services API,请运行以下命令:
gcloud services disable gameservices.googleapis.com
如需删除 GKE 集群,请运行以下命令:
gcloud container clusters delete gcgs-quickstart --zone=us-central1-a
后续步骤
如需了解 Game Servers 概念的技术介绍,请参阅 Game Servers 概览。
参阅方法指南,了解特定 Game Servers 任务。