列出 Google Cloud 上所有提供的机器类型

List all offered machine types on Google Cloud

AWS CLI 提供命令 describe-instance-types 来列出所有提供的 EC2 实例类型。它还允许按不同的属性过滤它们。是否可以使用 Google Cloud CLI 执行类似的操作?

我想列出所有提供的机器类型及其属性。此外,我想通过它们的属性(内存大小、cpus 等)过滤它们。

是的。

https://cloud.google.com/sdk/gcloud/reference/compute/machine-types/list

ZONE="us-west1-c" # For example
gcloud compute machine-types list \
--project=${PROJECT} \
--filter=zone=${ZONE}

产量:

NAME              ZONE        CPUS  MEMORY_GB  DEPRECATED
c2-standard-16    us-west1-c  16    64.00
c2-standard-30    us-west1-c  30    120.00
c2-standard-4     us-west1-c  4     16.00
c2-standard-60    us-west1-c  60    240.00
c2-standard-8     us-west1-c  8     32.00

NOTE ZONE is always us-west1-c

并且:

gcloud compute machine-types list \
--project=${PROJECT} \
--filter=guestCpus=8

产量:

NAME            ZONE                       CPUS  MEMORY_GB  DEPRECATED
c2-standard-8   us-central1-a              8     32.00
e2-highcpu-8    us-central1-a              8     8.00
e2-highmem-8    us-central1-a              8     64.00
e2-standard-8   us-central1-a              8     32.00
n1-highcpu-8    us-central1-a              8     7.20

NOTE CPUS is always 8

您可以将 --format=json--format=yaml 附加到任何 gcloud 命令以使用这些格式显示结果。

但要获得更多详细信息(和更多过滤),您需要 gcloud compute machine-types describe(而不是 list):

TYPE="n1-standard-1"
gcloud compute machine-types describe ${TYPE} \
--project=${PROJECT} \
--zone=${ZONE}

产量:

creationTimestamp: '1969-12-31T16:00:00.000-08:00'
description: 1 vCPU, 3.75 GB RAM
guestCpus: 1
id: '3001'
imageSpaceGb: 10
isSharedCpu: false
kind: compute#machineType
maximumPersistentDisks: 128
maximumPersistentDisksSizeGb: '263168'
memoryMb: 3840
name: n1-standard-1
selfLink: https://www.googleapis.com/compute/v1/projects/${PROJECT}/zones/${ZONE}/machineTypes/n1-standard-1
zone: us-west1-c

了解 Google 服务的另一种方式是通过 APIs Explorer

例如,Compute Engine 的 API 是 here

这在这种情况下很有用,因为它可以帮助您理解(每个 Google API 方法)返回的类型,包括 machineTypes.List.

由此,您可以确定要使用的过滤条件。

APIs Explorer 还提供了一种直接与底层 REST API 交互的方法,它将生成例如curl 给你的命令。

因此,您可以:

而不是 gcloud compute machine-types list ...
PROJECT=...
ZONE=...

TOKEN=$(gcloud auth print-access-token)

# Compute Engine machineTypes.List()
URL="https://compute.googleapis.com/compute/v1/projects/${PROJECT}/zones/${ZONE}/machineTypes"

curl \
--silent
--header "Authorization: Bearer ${TOKEN}" \
--header "Accept: application/json" \
--compressed \
"${URL}?filter=guestCpus%3D8"