本页面介绍了如何在大区中注册、列出和查看 Game Servers 集群的详细信息。
准备工作
开始之前,我们建议您先了解 Game Servers 概览中的关键概念。请确保您已执行以下任务:
- 确保您已启用 Game Services API。 启用 Game Services API
- 选择已安装 gcloud CLI 的 shell,或者使用 API 客户端:
进入 Google Cloud 控制台。
在控制台的右上角,点击激活 Cloud Shell 按钮:
- 创建服务帐号。
- 以 JSON 文件的格式下载私钥。
-
Set the environment variable
GOOGLE_APPLICATION_CREDENTIALS
to the path of the JSON file that contains your credentials. This variable applies only to your current shell session, so if you open a new session, set the variable again.
Cloud Shell
如需启动 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
curl / PowerShell
如需将 REST API 与 curl
或 Windows PowerShell 搭配使用,请执行以下操作:
客户端库
您可以使用客户端库以编程方式控制 Google Cloud Game Servers。如需了解库和身份验证的使用说明,请参阅客户端库概览。
注册集群
确保您已创建 Game Servers 大区。
如果您没有安装了 Agones 的 Google Kubernetes Engine (GKE) 集群,请执行以下操作:
为 Agones 创建公共 Google Kubernetes Engine 集群和防火墙规则。请务必启用 Kubernetes Engine API。
请注意,Game Servers 不支持专用集群。
验证 Agones 的防火墙规则是否已启用:
gcloud compute firewall-rules list --filter="name~'game-server.*'"
您会看到以下输出内容:
NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED game-server-firewall-test-cluster default INGRESS 1000 udp:7000-8000 False
确保您的 Agones 和 Kubernetes 集群版本符合要求,并且您在
agones-system
命名空间中安装了 Agones(请参阅确认 Agones 安装了解详情)。
注册游戏服务器集群
控制台
在 Google Cloud 控制台中,转到大区和集群页面。
点击添加游戏服务器集群。
从可选大区列表中选择游戏服务器集群所属的大区。如果需要,您可以点击创建大区按钮创建大区。
点击继续。
在游戏服务器集群 ID 框中,输入此游戏服务器集群的唯一标识符。
在 Kubernetes 集群列表中,选择安装了 Agones 的一个 Kubernetes 集群。
点击创建。
gcloud
您可以使用 Google Cloud CLI 在大区中注册 Game Servers 集群。
注册全球性游戏服务器集群
如需注册全球性游戏服务器集群,请执行以下操作:
运行以下命令并将占位符值(例如 realmID)替换为适当的值:
gcloud game servers clusters create gscID --realm=realmID --gke-cluster=gkeCluster --namespace=default --dry-run
输出会返回
targetState
,以便在注册新集群之前对其进行预览。如需注册并创建全球性集群,请运行以下命令:
gcloud game servers clusters create gscID --realm=realmID --gke-cluster gkeCluster --namespace=default --no-dry-run
注册地区级游戏服务器集群
如需注册地区级游戏服务器集群,请执行以下操作:
运行以下命令并将占位符值(例如 realmID)替换为适当的值:
gcloud game servers clusters create gscID --realm=realmID --gke-cluster gkeCluster --location=region --namespace=default --dry-run
输出会返回
targetState
,以便在创建新集群之前对其进行预览。如需注册并创建地区级集群,请运行以下命令:
gcloud game servers clusters create gscID --realm=realmID --gke-cluster gkeCluster --location=region --namespace=default --no-dry-run
如果 Game Servers 无法验证您尝试附加的集群,则可能会出现以下错误:
Cannot connect to the provided Kubernetes cluster "projects/project/locations/location/clusters/gkeCluster, check the name and make sure that the cluster exists
在这种情况下,请确保 gkeCluster 格式正确,集群位于 project 和 location 中。
变量占位符对应于以下说明:
- gscID 是您可以为此集群指定的唯一标识符。
- realmID 是您要在其中存储集群的大区的唯一标识符。
- gkeCluster 是 GKE 集群的完全限定资源路径,例如
projects/<projectId>/locations/<location>/clusters/<clusterId>
。 - region 是集群的地区。选择与父级大区相同的地区。
REST
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:IAM 设置中列出的 Google Cloud 项目 ID
- REALM_LOCATION:存储此集群的大区的区域,或者
global
。 - REALM_ID:存储此集群的大区的标识符
- GS_CLUSTER_ID:用户定义的集群标识符
- GKE_CLUSTER_LOCATION:GKE 集群的区域
- GKE_CLUSTER_ID:GKE 集群的标识符
请求 JSON 正文:
{ "name": "projects/PROJECT_ID/locations/REALM_LOCATION/realms/REALM_ID/gameServerClusters/GS_CLUSTER_ID", "connectionInfo": { "namespace": "default", "gkeClusterReference": { "cluster": "projects/PROJECT_ID/locations/GKE_CLUSTER_LOCATION/clusters/GKE_CLUSTER_ID" } } }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "name": "projects/PROJECT_ID/locations/REALM_LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.gaming.v1.OperationMetadata", "createTime": CREATE_TIME, "target": "projects/PROJECT_ID/locations/REALM_LOCATION/realms/REALM_ID/gameServerClusters/GS_CLUSTER_ID", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
创建游戏服务器集群后,Game Servers 会根据需要创建 Agones 队列和自动扩缩器。Game Servers 不会更改手动创建的 Agones 队列。
列出集群
控制台
在 Google Cloud 控制台中,转到大区和集群页面。
展开一个大区即可查看属于该大区的游戏服务器集群。
您可以使用过滤条件框,按不同属性过滤大区和集群列表。
gcloud
您可以使用 Google Cloud CLI 列出全球性集群或区域级集群。
如需列出全球性集群和地区级集群,请运行以下命令。添加可选的 --view=FULL
标志,以显示集群上安装的 Agones 和 Kubernetes 的版本。
gcloud game servers clusters list [--view=FULL; default="BASIC"]
如需仅列出一个地区中的集群,请运行以下命令,并将 region 替换为您要在其中列出集群的地区:
gcloud game servers clusters list --location=region [--view=FULL; default="BASIC"]
如需列出大区中的所有集群,请运行以下命令,并将 realmID 替换为父级大区,而将 region 替换为您要列出其中的集群的地区:
gcloud game servers clusters list --realm=realmID --location=region [--view=FULL; default="BASIC"]
REST
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:IAM 设置中列出的 Google Cloud 项目 ID
- REALM_LOCATION:大区的区域或
global
- REALM_ID:用户定义的大区标识符
根据您发送的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "gameServerClusters": [ { "name": "projects/PROJECT_ID/locations/REALM_LOCATION/realms/REALM_ID/gameServerClusters/my-gs-cluster-1", "createTime": CREATE_TIME, "updateTime": UPDATE_TIME, "connectionInfo": { "namespace": "default", "gkeClusterReference": { "cluster": "projects/PROJECT_ID/locations/GKE_CLUSTER_LOCATION/clusters/my-gke-cluster-1" } }, "etag": "8mBC7IJJFvY40k-rBabOOaGR6sSRG3dP6pI-frTuu9Y", "clusterState": { "agonesVersionInstalled": "1.15.0", "kubernetesVersionInstalled": "1.18.20-gke.900", "installationState": "AGONES_KUBERNETES_VERSION_SUPPORTED", "provider": "gke" } }, { "name": "projects/PROJECT_ID/locations/REALM_LOCATION/realms/REALM_ID/gameServerClusters/my-gs-cluster-2", "createTime": CREATE_TIME, "updateTime": UPDATE_TIME, "connectionInfo": { "namespace": "default", "gkeClusterReference": { "cluster": "projects/PROJECT_ID/locations/GKE_CLUSTER_LOCATION/clusters/my-gke-cluster-2" } }, "etag": "8mBC7IJJFvY40k-rBabOOaGR6sSRG3dP6pI-frTuu9Y", "clusterState": { "agonesVersionInstalled": "1.15.0", "kubernetesVersionInstalled": "1.18.20-gke.900", "installationState": "AGONES_KUBERNETES_VERSION_SUPPORTED", "provider": "gke" } } ] }
查看有关集群的详细信息
控制台
在 Google Cloud 控制台中,转到大区和集群页面。
展开一个大区即可查看属于该大区的游戏服务器集群。
在大区对应的最后一个表列中,点击省略号 more_vert,然后选择查看详细信息。
gcloud
您可以使用 Google Cloud CLI 查找有关集群的详细信息,例如创建时间或 GKE 集群详细信息。
如需查看集群的详细信息,请运行以下命令,并将占位符值(如 realmID)替换为适当的值:
gcloud game servers clusters describe gscID --realm realmID --location=region [--view=FULL; default="BASIC"]
输出会提供集群的详细信息。 添加可选的 --view=FULL
标志,以显示集群上安装的 Agones 和 Kubernetes 的版本。
变量占位符对应于以下说明:
- gscID 是您为游戏服务器集群指定的唯一标识符。
- realmID 是在其中存储集群的大区的唯一标识符。
- region 是集群的地区。选择与父级大区相同的地区。
REST
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:IAM 设置中列出的 Google Cloud 项目 ID
- REALM_LOCATION:大区的区域或
global
- REALM_ID:用户定义的大区标识符
- GS_CLUSTER_ID:用户定义的集群标识符
根据您发送的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "name": "projects/PROJECT_ID/locations/REALM_LOCATION/realms/REALM_ID/gameServerClusters/GS_CLUSTER_ID", "createTime": CREATE_TIME, "updateTime": UPDATE_TIME, "connectionInfo": { "namespace": "default", "gkeClusterReference": { "cluster": "projects/PROJECT_ID/locations/GKE_CLUSTER_LOCATION/clusters/MY_GKE_CLUSTER" } }, "etag": "8mBC7IJJFvY40k-rBabOOaGR6sSRG3dP6pI-frTuu9Y", "clusterState": { "agonesVersionInstalled": "1.15.0", "kubernetesVersionInstalled": "1.18.20-gke.900", "installationState": "AGONES_KUBERNETES_VERSION_SUPPORTED", "provider": "gke" } }
更新集群
gcloud
如需更新集群的字段,请在替换现有集群的标识符后运行 gcloud game servers clusters
update
命令。以下命令会更新集群的说明字段。
gcloud game servers clusters update gscID \ --realm=realmID --location=region \ --description="My updated description" --no-dry-run
如需查找其他集群字段的标志,请参阅 gcloud
参考文档。
REST
以下示例更新 description
字段。如要更新其他字段,请将字段名称添加到 ?updateMask=
查询参数并请求 JSON 正文。
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:IAM 设置中列出的 Google Cloud 项目 ID
- REALM_LOCATION:大区的区域或
global
- REALM_ID:大区的标识符
- GS_CLUSTER_ID:用户定义的集群标识符
请求 JSON 正文:
{ "description": "My updated description" }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "name": "projects/PROJECT_ID/locations/REALM_LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.gaming.v1.OperationMetadata", "createTime": CREATE_TIME, "target": "projects/PROJECT_ID/locations/REALM_LOCATION/realms/REALM_ID/gameServerClusters/GS_CLUSTER_ID", "verb": "update", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
问题排查
IAM 权限错误
如果权限设置不正确,您会看到以下错误:
Cannot connect to the provided Kubernetes cluster "projects/projectId/locations/location/clusters/gkeCluster", make sure that "service-projectNumber@gcp-sa-gameservices.iam.gserviceaccount.com" has been granted the required permissions to access the cluster
如果发生这种情况,请完成本部分中的步骤来设置 IAM 权限。
当您在 Google Cloud 项目中创建 Game Servers 资源时,Game Servers 还会创建一个 Game Servers Google 管理的服务帐号,其格式为 serviceAccount:service-projectNumber@gcp-sa-gameservices.iam.gserviceaccount.com
。
此服务帐号将被自动授予预定义的 Game Servers roles/gameservices.serviceAgent
角色。此角色赋予 Google 代管式服务帐号管理您注册的 GKE 集群所需的权限。如果您将其撤消,就会看到上述错误消息。
以下命令展示用于向服务帐号授予 Game Servers roles/gameservices.serviceAgent
角色的语法:
gcloud projects add-iam-policy-binding projectId --role roles/gameservices.serviceAgent --member serviceAccount:service-projectNumber@gcp-sa-gameservices.iam.gserviceaccount.com
其中:
- projectId 是项目的 ID。您可以通过运行
gcloud config get-value project
来获取 projectId。 - 运行
gcloud projects describe projectId
即可检索 projectNumber。
后续步骤
了解如何删除集群。