如何使用 gcloud 查找我的 dataproc 集群所在的区域?

How do I use gcloud to find which regions my dataproc clusters are in?

如果我发出 gcloud dataproc clusters list 列出了 0 个集群:

$ gcloud dataproc clusters list
Listed 0 items.

但是,如果我指定区域 gcloud dataproc clusters list --region europe-west1,我会得到一个集群列表:

$ gcloud dataproc clusters list --region europe-west1
NAME                WORKER_COUNT  STATUS   ZONE
mydataproccluster1  2             RUNNING  europe-west1-d
mydataproccluster2  2             RUNNING  europe-west1-d

我猜测无法在未指定 --region 的情况下获取集群列表是我组织管理员做出的决定的结果,但我希望有办法解决这个问题。我可以访问 https://console.cloud.google.com/ and see a list of all the clusters in the project, can I get the same using gcloud? Having to visit https://console.cloud.google.com/ 以便我可以发布 gcloud dataproc clusters list --region europe-west1 似乎有点限制。

必须指定 --region 是 gcloud 中 Dataproc 命令组的工作方式。开发人员控制台问题列出了针对所有区域的请求(您可以 request 让 gcloud 执行相同的操作)。

或者,您可以使用 global mutiregion(这是 gcloud 默认值)。这将与您的组织政策很好地互动。如果您的组织有 region-restricted 个 VM 位置,您将能够在欧洲创建 VM,但在其他地方创建 VM 时会出错。

底层区域服务 by-design 彼此隔离,因此没有 URL 与 returns 组合列表(因为那将是全局依赖和故障模式) ,不幸的是,目前 gcloud 库的布局使得在列出数据处理集群或作业时没有指定区域列表或 shorthand 为 "all regions" 的选项。

但是,您可以通过从计算 API:

获取可能的区域堆栈列表来解决此问题
gcloud compute regions list --format="value(name)" | \
    xargs -n 1 gcloud dataproc clusters list --region

唯一与计算区域之一不匹配的 Dataproc 区域是特殊的 "global" Dataproc 区域,它是跨越所有计算区域的独立 Dataproc 服务。

为方便起见,您也可以将 global 添加到 for-loop:

for REGION in global $(gcloud compute regions list --format="value(name)"); do gcloud dataproc clusters list --region ${REGION}; done