快速入门

在本快速入门中,您将了解如何借助 gcloud 命令行工具在 Game Servers 上使用游戏服务器大区、集群、部署、配置和发布。

准备工作

  1. 登录您的 Google 帐号。

    如果您还没有 Google 帐号,请注册一个新帐号

  2. 在 Cloud Console 的项目选择器页面上,选择或创建 Cloud 项目。

    转到项目选择器页面

  3. 确保您的 Google Cloud 项目已启用结算功能。 了解如何确认您的项目已启用结算功能

  4. 确保您已启用 Game Services API。
  5. 启用 Game Services API

选择 shell

为完成本快速入门,您可以使用 Cloud Shell 或本地 shell。

Cloud Shell 是一种 shell 环境,用于管理托管在 Google Cloud 上的资源。Cloud Shell 预安装有 gcloud 命令行工具gcloud 工具为 Game Servers 提供了主要命令行界面。

Cloud Shell

如需启动 Cloud Shell,请执行以下步骤:

  1. 转到 Google Cloud Console。

    Google Cloud Console

  2. 在控制台的右上角,点击激活 Cloud Shell 按钮:

控制台下方的框架内会打开一个 Cloud Shell 会话。您可以使用此 shell 运行 gcloud 命令。

本地 shell

如需安装 gcloud,请安装 Cloud SDK,其中包含 gcloud 命令行工具。

确认您已为 gcloud 命令行工具设置所需的默认项目(否则,您需要以后为每个命令明确指定标志 --project):

gcloud config list project

如果无法运行以下命令来设置默认项目,请将 project-id 替换为所需的项目 ID:

gcloud config set project project-id

运行以下命令以验证 Google Cloud SDK 的版本。Game Servers 需要 306.0.0 或更高版本的 SDK。

gcloud version

如需更新安装,请运行以下命令:

gcloud components update

如果您选择本地 shell,则可能需要安装 kubectl

gcloud components install kubectl

创建 Google Kubernetes Engine 集群

如需创建 Google Kubernetes Engine 集群,请执行以下操作:

  1. 运行以下命令创建一个费用优化的集群,该集群在 us-central1-a 区域中有一个节点:

    gcloud container clusters create gcgs-quickstart \
    --cluster-version=1.15 \
    --tags=game-server \
    --scopes=gke-default \
    --num-nodes=1 \
    --no-enable-autoupgrade \
    --machine-type=e2-standard-2 \
    --zone=us-central1-a
    
  2. 运行以下命令来检索您在上一步中创建的 GKE 集群的凭据:

    gcloud container clusters get-credentials gcgs-quickstart --zone=us-central1-a
    

在 GKE 上安装 Agones

在本部分中,您将安装开源 Agones 游戏基础架构平台。如需安装 Agones,请执行以下操作:

  1. 运行以下命令以创建 agones-system 命名空间:

    kubectl create namespace agones-system
    
  2. 运行以下命令可安装 Agones:

    kubectl apply -f https://raw.githubusercontent.com/googleforgames/agones/release-1.7.0/install/yaml/install.yaml
    
  3. 您可以通过检查 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 资源,请执行以下操作:

  1. 在 GKE 集群所在的位置创建大区:

    gcloud game servers realms create realm-quickstart --time-zone EST --location us-central1
    
  2. 将 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
    
  3. 创建一个游戏服务器部署,用于存储所有相同的服务器配置,然后将其发布到游戏服务器集群中:

    gcloud game servers deployments create deployment-quickstart
    

    有了游戏服务器部署后,您可以使用 gcloud 工具将游戏服务器配置添加到该部署中。

  4. 将以下示例 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-udp
                  image: gcr.io/agones-images/udp-server:0.17
    
  5. 如需创建游戏服务器配置,请运行以下命令:

    gcloud game servers configs create config-1 --deployment deployment-quickstart --fleet-configs-file fleet_configs.yaml
    
  6. 如需更新发布,请运行以下命令:

    gcloud game servers deployments update-rollout deployment-quickstart --default-config config-1 --no-dry-run
    
  7. 如需验证默认命名空间下的一个队列的发布,请运行以下命令:

    kubectl get fleet
    

    下面描述了预期的输出:

    NAME                                     SCHEDULING   DESIRED   CURRENT   ALLOCATED   READY   AGE
    fleet-deployment-quickstart-config-1   Packed       2         2         0           2       4s
    

    输出会确认您是否已在集群中部署了一个队列,其中包含两个准备接受连接的简单 UDP 服务器副本。

测试与 UDP 服务器的连接

如需测试与 UDP 服务器的连接,请执行以下操作:

  1. 创建防火墙规则,打开连接到集群所需的 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"
    
  2. 接下来,获取单个游戏服务器的 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
    
  3. 如需测试连接,请运行 Netcat 命令。如需在 Linux 上安装 Netcat,请运行以下命令:

    sudo apt install netcat
    
  4. 如需启动测试,请运行以下命令:

    nc -u IP_address port_number
    
  5. 接下来,输入 Hello,该命令会返回如下所示的输出:

    Hello
    > ACK: Hello
    

清理

为避免系统因本快速入门中使用的资源向您的 Google Cloud 帐号收取费用,请按照以下步骤操作。

如果您不想保留您在本快速入门中创建的任何资源,可以删除该项目:

  1. 在 Cloud Console 中,转到管理资源页面。

    转到“管理资源”页面

  2. 在项目列表中,选择要删除的项目,然后点击删除
  3. 在对话框中输入项目 ID,然后点击关闭以删除项目。

或者,如果您想要保留该项目,请完成以下步骤以手动删除您在本快速入门中创建的资源:

  1. 如需删除防火墙规则,请运行以下命令:

    gcloud compute firewall-rules delete gcgs-quickstart-firewall
    
  2. 如需清除默认发布,请运行以下命令:

    gcloud game servers deployments update-rollout deployment-quickstart --clear-default-config --no-dry-run
    
  3. 如需删除游戏服务器配置,请运行以下命令:

    gcloud game servers configs delete config-1 --deployment deployment-quickstart
    
  4. 如需删除游戏服务器部署,请运行以下命令:

    gcloud game servers deployments delete deployment-quickstart
    
  5. 如需删除游戏服务器集群,请运行以下命令:

    gcloud game servers clusters delete cluster-quickstart --realm=realm-quickstart --no-dry-run --location=global
    
  6. 如需删除大区,请运行以下命令:

    gcloud game servers realms delete realm-quickstart
    
  7. 如需停用 Game Services API,请运行以下命令:

    gcloud services disable gameservices.googleapis.com
    
  8. 如需删除 GKE 集群,请运行以下命令:

    gcloud container clusters delete gcgs-quickstart --zone=us-central1-a
    

后续步骤

如需了解 Game Servers 概念的技术介绍,请参阅 Game Servers 概览

参阅方法指南,了解特定 Game Servers 任务。

查看 Terraform 部署示例