本页提供了一些有助于您使用 gcloud
命令行工具管理 Compute Engine 资源的提示。如需查看所有可用 gcloud compute
标志和命令的完整列表,您可以使用内置的命令帮助 (--help
)、已发布的参考文档或 gcloud core 文档。
准备工作
-
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以选择以下任一选项向 Compute Engine 进行身份验证:
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
获取资源的信息
您可以通过以下两种方式提取 Compute Engine 资源的相关信息:使用 list
命令返回资源列表,以及使用 describe
命令返回特定资源的相关详细信息。
使用 list
命令提取资源
list
命令旨在以直观易懂的表格形式返回所请求资源的最相关数据。您还可以选择过滤结果,以返回包含更相关结果的更简洁列表。
- 使用正则表达式对名称进行过滤
- 您可以使用 RE2 语法来匹配资源名称(例如实例或磁盘名称)。参阅
gcloud compute instances list
命令。 - 命令标志
--limit
返回的结果数上限。此标志与
--sort-by
标志(请参阅使用 describe 命令提取资源部分)一起使用时会特别实用。--sort-by SORT_BY
指定排序依据的字段(如果适用)。如需执行降序排序,请在值的前面加上波浪号(“~”)。此标志与按以下顺序应用的其他标志交互:
--flatten
、--sort-by
、--filter
、--limit
。
使用 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 e2-standard-2 10.240.95.199 107.167.182.44 RUNNING example-instance2 us-central1-a e2-standard-2 10.240.173.254 23.251.148.121 RUNNING test-instance us-central1-a e2-standard-2 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 e2-standard-2 10.240.118.207 23.251.153.172 RUNNING
如需返回 status
为 DONE
且 httpStatus
不为 200
的地区操作列表,请对 operations list
命令应用 zone
过滤条件,然后对结果使用 grep
命令:
gcloud compute operations list --filter="zone:(us-central1-a)" | grep DONE | grep -v 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
如需按名称的降序顺序 (--sort-by ~NAME
) 获取 us-central1-a
中的磁盘列表,请使用 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://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/example-instance1 https://compute.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
命令示例
如果您只想获取一个实例的相关详细信息,请指定该实例(包括地区)。
例如,您可以使用 instances describe
命令来返回“asia-east1-b”地区中名为“example-instance”的实例的相关信息:
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
撤消刷新令牌
如需撤消您正在使用 Google Cloud CLI 的机器上的账号凭据,请使用以下命令:
gcloud auth revoke
这会强制您使用 gcloud init
重新进行身份验证。
您也可以撤消 gcloud CLI 访问您的资源的权限。例如,如果您的刷新令牌被破解,您可以执行此操作。如需撤消 gcloud CLI 的权限,请执行以下操作:
- 登录您的 Google 账号页面。
- 点击安全,然后点击账号权限部分中的查看全部。
- 选择 Google Cloud SDK 并点击撤消访问权限。
重新启动实例
如需重置“us-central1-a”地区中名为“example-instance”的实例,请使用 instances reset
命令:
gcloud compute instances reset example-instance --zone us-central1-a
如需了解重置的影响,请参阅重置实例文档。