You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过脚本/命令获取GCP组织内所有项目的非GKE虚拟机列表

获取GCP组织内所有非GKE虚拟机列表

前提条件

  • 已安装并初始化 gcloud CLI,且登录账号具备以下权限:
    • 组织级项目浏览权限(roles/browser)
    • 各项目的Compute实例查看权限(roles/compute.viewer)

脚本实现(Shell)

下面的脚本会遍历组织内所有项目,筛选出非GKE节点的虚拟机,输出格式为项目ID | 实例名称 | 区域 | 机器类型:

#!/bin/bash

# 替换为你的组织ID(可通过gcloud organizations list获取)
ORG_ID="your-organization-id"

# 获取组织内所有项目ID
PROJECTS=$(gcloud projects list --organization=$ORG_ID --format="value(projectId)")

for PROJECT in $PROJECTS; do
  echo "正在扫描项目: $PROJECT"
  # 获取非GKE节点的虚拟机,GKE节点默认带有kubernetes.io/role=node标签
  gcloud compute instances list \
    --project=$PROJECT \
    --filter="-labels.kubernetes.io/role=node" \
    --format="value(name, zone.machineType.scope(), machineType.basename())" \
    | awk -v proj="$PROJECT" '{print proj " | " $1 " | " $2 " | " $3}'
done

使用说明

  1. 替换脚本中的ORG_ID为你的实际组织ID(执行gcloud organizations list可查看)
  2. 将脚本保存为list-vms.sh,赋予执行权限:chmod +x list-vms.sh
  3. 运行脚本:./list-vms.sh

关键过滤逻辑说明

GKE管理的节点会自动添加kubernetes.io/role=node标签,通过--filter="-labels.kubernetes.io/role=node"可以精准排除这类实例,比通过名称过滤更可靠。

可选优化

  • 如果需要将结果保存到文件,运行时追加输出:./list-vms.sh > vm-list.txt
  • 若遇到权限不足的项目,脚本会输出错误信息,可添加2>/dev/null屏蔽错误:
    gcloud compute instances list \
      --project=$PROJECT \
      --filter="-labels.kubernetes.io/role=node" \
      --format="value(name, zone.machineType.scope(), machineType.basename())" \
      2>/dev/null \
      | awk -v proj="$PROJECT" '{print proj " | " $1 " | " $2 " | " $3}'
    

内容的提问来源于stack exchange,提问作者siddharth panigrahi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 17:40:43