gcloud compute 使用提示

本页面包含一些使用 gcloud 命令行工具管理 Google Compute Engine 资源时可能有用的提示。如需查看所有可用 gcloud compute 标志和命令的完整列表,您可以使用内置的命令帮助 (--help)、已发布的参考文档gcloud core 文档

准备工作

获取资源的信息

您可以通过两种方式获取 Compute Engine 资源的信息:使用 list 命令返回资源列表,以及使用 describe 命令返回一个特定资源的详细信息。

使用 list 命令获取资源

list 命令旨在以人类可读的表的形式返回所请求资源的最相关数据。您还可以选择过滤结果,以返回更短、结果更相关的列表。

使用正则表达式对名称进行过滤
您可以使用 RE2 语法以与资源名称(例如,实例或磁盘名称)匹配。请参阅 gcloud compute instances list
命令标志
--limit

返回的结果数上限。如果与使用 describe 命令获取资源部分中描述的 --sort-by 标志一起使用,则此标志特别有用。

--sort-by SORT_BY

指定排序依据的字段(如果适用)。要按降序进行排序,请使用波浪号 ("~") 作为值的前缀。

使用 describe 命令获取资源

describe 命令旨在显示一个资源的数据。您必须在 describe 命令中提供资源的名称。如果您不记得资源名称,可以运行 list 命令来获取资源列表。例如,下面两个命令举例说明了一种情景:您可以列出映像以获取映像名称及其关联的项目,以便将这些数据作为输入提供给 describe 命令:

gcloud compute images list
NAME                                PROJECT        FAMILY     DEPRECATED STATUS
...
centos-7-v20170620                  centos-cloud   centos-7              READY
...
debian-9-stretch-v20170619          debian-cloud   debian-9              READY
...
gcloud compute images describe debian-9-stretch-v20170619 --project debian-cloud

describe 命令的默认输出为 YAML 格式,但您可以使用 --format 标志,以在 JSON、YAML 或文本输出格式之间进行选择。如果您正在解析输出,JSON 格式的输出可能非常有用,而文本格式的输出则会将每个属性单独列为一行。

gcloud compute regions describe us-central1 --format json
{
  "creationTimestamp": "2013-09-06T10:36:54.847-07:00",
  "description": "us-central1",
  "id": "6837843067389011605",
  "kind": "compute#region",
  "name": "us-central1",
  ...
  "status": "UP",
  "zones": [
    "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a",
    "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-b",
    "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f"
  ]
}

示例

list 命令的示例

列出资源时,您会获得一份一目了然的摘要数据表。例如,如需返回有关项目中实例的摘要数据,请使用 instances list 命令:

gcloud compute instances list
NAME               ZONE          MACHINE_TYPE  INTERNAL_IP    EXTERNAL_IP     STATUS
example-instance   asia-east1-b  n1-standard-1 10.240.95.199  107.167.182.44  RUNNING
example-instance2  us-central1-a n1-standard-1 10.240.173.254 23.251.148.121  RUNNING
test-instance      us-central1-a n1-standard-1 10.240.118.207 23.251.153.172  RUNNING

您可以使用正则表达式过滤 list 命令的结果,只需将 --filter 标志与 key ~ value 运算符一起使用即可。例如,过滤实例列表,以使其仅包含名称中含有“test”的实例:

gcloud compute instances list --filter="name ~ .*test.*"
NAME           ZONE          MACHINE_TYPE  INTERNAL_IP    EXTERNAL_IP     STATUS
test-instance  us-central1-a n1-standard-1 10.240.118.207 23.251.153.172  RUNNING

如需返回 statusDONEhttpStatus 不为 200 的地区操作列表,请对 operations list 命令应用 zone 过滤条件,然后对结果使用 grep 命令:

gcloud compute operations list --filter="zone:(us-central1-a)" | grep DONE | grep 200
NAME                                                    HTTP_STATUS TYPE   TARGET                               STATUS
operation-1397752585735-4f73fa25b4b58-f0920fd5-254d709f 400         delete us-central1-a/disks/example-instance DONE
operation-1398357613036-4f7cc80cb41e0-765bcba6-34bbd040 409         insert us-central1-a/instances/i-1          DONE
operation-1398615481237-4f8088aefbe08-cc300dfa-2ce113cf 409         insert us-central1-a/instances/i-2          DONE

如需获取按 us-central1-a 地区名称降序排列 (--sort-by ~NAME) 的磁盘列表,请使用 disks list 命令:

gcloud compute disks list --sort-by ~NAME --filter="zone:(us-central1-a)"

在某些情景中,您可能想获取资源的完整 URI 链接,例如将 list 命令的输出传递给另一个要获取资源链接列表的命令或应用的请求。要显示完整的 URI 资源链接,请将 --uri 标志与 list 命令一起使用。

gcloud compute instances list --uri --filter="name~'^example-.*'"
https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/example-instance1
https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/example-instance2

要在用于删除实例的命令中使用之前的 list 命令输出,请使用:

gcloud compute instances delete $(gcloud compute instances list --uri --filter="name~'^example-.*'")

describe 命令的示例

要获取一个实例的详情,请指定该实例(包括地区)。例如,如需返回“asia-east1-b”地区中名为“example-instance”的实例的信息,您可以使用 instances describe 命令:

gcloud compute instances describe example-instance --zone asia-east1-b

默认情况下,这会返回 YAML 格式的输出。要将输出更改为 JSON 或文本格式(每行一个属性),请使用 --format 标志。例如,要返回同一个实例的文本输出,请使用以下命令:

gcloud compute instances describe example-instance --zone asia-east1-b --format text
---
canIpForward:                                False
creationTimestamp:                           2014-04-19T06:43:04.087-07:00
disks[0].autoDelete:                         False
disks[0].boot:                               True
disks[0].deviceName:                         example-instance
...

如需获取特定操作的详细信息,请使用 operations list 命令查找该操作的完全限定 URI:

gcloud compute operations list --filter="zone:(us-central1-a)"
NAME                                                    TYPE   TARGET                                      HTTP_STATUS STATUS
operation-1406155165815-4fee4032850d9-7b78077c-a170c5c0 delete us-central1-a/instances/example-instance    200         DONE
operation-1406155180632-4fee4040a67c1-bf581ed8-ab5af2b8 delete us-central1-a/instances/example-instance-2  200         DONE
...

然后,在 operations describe 命令中使用该 URI:

gcloud compute operations describe \
operation-1406155165815-4fee4032850d9-7b78077c-a170c5c0 --zone us-central1-a
endTime: '2014-07-23T15:40:02.463-07:00'
id: '31755455923038965'
insertTime: '2014-07-23T15:39:25.910-07:00'
kind: compute#operation
name: operation-1406155165815-4fee4032850d9-7b78077c-a170c5c0
operationType: delete
progress: 100
...

使用以下命令可获取 JSON 格式 (--format json) 的实例设置。

gcloud compute instances describe example-instance \
    --zone us-central1-a
    --format json
{
   ...
   "name": "example-instance",
   "networkInterfaces": [
    {
      "accessConfigs": [
        {
          "kind": "compute#accessConfig",
          "name": "external-nat",
          "natIP": "107.167.187.66",
          "type": "ONE_TO_ONE_NAT"
        }
      ],
      "name": "nic0",
      "network": "https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default",
      "networkIP": "10.240.111.51"
    }
   ],
   ...
   "status": "RUNNING"
   ...
}

了解您获得了哪个用户的授权

可使用以下命令了解您获得了哪个帐号的授权:

gcloud auth list

撤消刷新令牌

要在您正使用 Cloud SDK 的机器上撤消帐号的凭据,请使用以下命令:

gcloud auth revoke

这将强制您使用 gcloud init 重新进行身份验证。

您也可以撤消 Cloud SDK 访问您的资源的权限。例如,如果您的刷新令牌被破解,您可以执行此操作。要撤消 Cloud SDK 的权限,请执行以下操作:

  1. 登录您的 Google 帐号页面。
  2. 点击安全,然后点击帐号权限部分中的查看全部
  3. 选择 Google Cloud SDK 并点击撤消访问权限

重新启动实例

如需重置“us-central1-a”地区中名为“example-instance”的实例,请使用 instances reset 命令:

gcloud compute instances reset example-instance --zone us-central1-a

如需了解重置的影响,请参阅重置实例文档。

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Compute Engine 文档