由使用 gcutil 改为使用 gcloud compute

gcloud compute 现已正式发布,Compute Engine 建议所有用户由使用 gcutil 改为使用 gcloud compute 工具。gcloud compute 是一种统一命令行工具,与 gcutil 相比,该工具的功能进行了多项改进,包括:

  • Tab 键填充
  • 就地升级
  • 各种手册页面式帮助信息
  • 可选择不同的输出格式

为帮助用户从使用 gcutil 改为使用 gcloud compute,本指南简要介绍了这两种工具之间的主要更改。如需详细了解 gcloud compute 工具,请参阅 gcloud compute 文档。

全新的 gcloud 命令

除了少数几个例外,所有现有的 gcutil 命令在 gcloud compute 工具中都有等效的命令。您可以访问参考页面或运行 gcloud compute --help 以获得完整的 gcloud 命令列表。下表简要概述了常用的 gcutil 命令的变化。

gcutil 命令 gcloud compute 命令

gcutil addinstance INSTANCE

gcloud compute instances create INSTANCE
备注

创建一个实例。

  • 可以设置默认地区/区域,否则“gcloud compute”会提示您指定地区/区域。
  • 创建具有默认属性的虚拟机,例如:
    • 机器类型:n1-standard-1
    • 映像:debian-9

请参阅创建和启动实例

gcutil 命令 gcloud compute 命令

gcutil deleteinstance INSTANCE

    gcloud compute instances delete INSTANCE \
           [--keep-disks {boot,all,none}]
备注

删除实例。请参阅删除实例

gcutil 命令 gcloud compute 命令

gcutil ... --cache_flag_values

    gcloud configs set project PROJECT
    gcloud configs set compute/zone ZONE
    gcloud configs set compute/region REGION
    
备注

设置项目、地区和区域的默认值。请参阅设置默认地区和区域

gcutil 命令 gcloud compute 命令

gcutil push/pull

gcloud compute scp
备注

在本地计算机和虚拟机之间复制文件。请参阅在实例和本地计算机之间复制文件

gcutil 命令 gcloud compute 命令

gcutil deleteRESOURCE

gcloud compute RESOURCES delete
备注

删除资源,例如:


gcloud compute instances delete example-instance
gcutil 命令 gcloud compute 命令

gcutil getRESOURCES

gcloud compute RESOURCES describe
备注

描述单个资源,例如:


gcloud compute instances describe example-instance

gcutil 命令 gcloud compute 命令

gcutil listRESOURCES

gcloud compute RESOURCES list
备注

列出该类型的所有资源。例如,要列出实例,可使用以下命令:


gcloud compute instances list

gcutil 命令 gcloud compute 命令

gcutil setmetadata

    gcloud compute instances add-metadata
    gcloud compute instances remove-metadata
    gcloud compute project-info add-metadata
    gcloud compute project-info remove-metadata
备注

乐观锁定现在由该工具完成,因此无需手动指定指纹。请参阅设置自定义实例元数据

gcutil 命令 gcloud compute 命令

gcutil … --dump_request_response

尚未提供。

gcutil 命令 gcloud compute 命令

gcutil … --log_level=DEBUG

gcloud … --verbosity debug
备注

此外,日志存储在每个命令对应的文件(位于 ~/.config/gcloud/logs)中。

gcutil 命令 gcloud compute 命令

gcutil ssh INSTANCE --ssh_user

    gcloud compute ssh USER@INSTANCE
备注

请参阅连接实例

gcutil 命令 gcloud compute 命令

    gcutil … \
    --image=projects/project-id/global/images/image
    

    gcloud compute … --image image-name \
           --image-project image-project
备注

请参阅从映像启动实例

gcutil 命令 gcloud compute 命令

    gcutil deleteinstances --[no]delete_pd
    gcutil deleteinstances --[no]delete_boot_pd
    

    gcloud compute instances delete … \
           --delete-disks {all,none,boot}
    gcloud compute instances delete … \
           --keep-disks {all,none,boot}
    
备注

如果一个磁盘被标记为自动删除,该磁盘会被自动删除,除非您使用 --keep-disks 标志指定保留该磁盘。

默认实例设置

现在,当您通过 gcloud compute 创建实例时,可使用系统为虚拟机的映像和机器类型提供的几个默认值。您可以省略 --image--machine-type 标志以选择使用这些默认值,或者提供合适的标志来替换这些设置。默认的新虚拟机设置如下:

  • 默认映像:最新的 debian-9 映像
  • 默认机器类型:n1-standard-1

例如,您只需运行以下命令:

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

gcloud compute 将使用上述映像和机器类型创建实例。

输出格式

默认输出格式发生了变化,具体取决于您运行的命令。例如,如果您运行 describe 命令以获取有关单个资源的信息,则响应输出将采用 YAML 格式。您可以使用 --format 标志以不同的输出格式(如 JSON 或文本)返回响应:

gcloud compute instances list --format {json,yaml,text}
    

更新元数据现在是指执行添加操作

设置或更新元数据时,您不再需要提供指纹。默认情况下,所有元数据更改都被视为添加操作。您可以添加单个元数据条目或更新条目,而无需对所有元数据执行批量更新。只有传入的元数据键相应的条目会发生变化。

gcloud compute instances add-metadata example-instance \
             --metadata cookies=chocolate
    

指定映像项目

以前,要指定一个确切的映像,您需要提供一个包含项目名称的部分映像 URI,如下所示:

gcutil addinstance example-instance \
             --image=projects/debian-cloud/global/images/debian-9
    

gcloud compute 中,您现在必须使用新的 --image-project 标志来指定映像项目:

gcloud compute instances create example-instance \
             --image debian-9-stretch-vYYYMMDD
             --image-project debian-cloud
    

您也可以提供完整的 URI:

gcloud compute instances create example-instance \
             --image https://compute.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-9-stretch-vYYYMMDD