它是什么
准备使用 GCP Compute Engine 建立虚拟机时,先别急着点创建:Compute Engine 是 GCP 的弹性计算服务,VM 实例就是云上的一台电脑。你不用买实体主机,只要选定项目、区域和可用区,GCP 就会交付一台可调整的 VM 实例:CPU、内存、磁盘大小、网络设置都能按需要改,但有些调整要停机,别以为随时无损切换。项目像文件夹,也是账单和权限边界;区域像城市,可用区像城市里的独立机房。这样分层,是为了管理权限、费用、延迟和故障隔离。小白常踩的坑是建完找不到机器,多半是当前项目或区域切错了;只挑便宜的远处区域,也可能访问慢。
一台 VM 通常由这些基础组件组成,先认清零件,后面点选项才不会乱:
- 机器类型:决定 CPU 和内存,越大越贵,练手先选小型。
- 启动磁盘:装系统的硬盘;若随实例删除,数据也会没。
- 镜像:系统模板,创建时复制成启动盘。
- 网络:分配 VPC、子网和 IP,让 VM 能通信。
- 防火墙规则:像门禁;不放通 SSH 的 22 端口会连不上,但别开放所有端口。
- 身份权限:由 IAM 和服务账号决定谁能操作、VM 能访问哪些资源;太大有风险,太小会失败。
常见系统镜像包括 Linux 与 Windows Server。新手建议先用 Linux 镜像练习,因为选择多、启动轻、SSH 连接简单;Windows Server 常涉及授权费、管理员密码和远程桌面端口,更容易卡住。为了让“镜像”不抽象,可以先只查询公开 Linux 镜像,不创建 VM,也就不会马上产生虚拟机费用:
gcloud compute images list --project=debian-cloud --filter="family:debian-12" --limit=5
如果提示未登录、未选择项目,或找不到 gcloud,别以为命令写错:前者按提示登录或选项目,后者说明本机还没装 Google Cloud CLI。真正建立 VM 时,再确认项目、区域、可用区和计费;机器类型、磁盘一直开着都会产生费用。
解决什么问题
你可以把 Compute Engine 想成“云上的一台电脑”。使用 GCP Compute Engine 建立虚拟机,解决的是最现实的问题:不用采购、装系统、接网线的物理服务器,就能很快拿到有 CPU、内存、磁盘,可联网、可扩容、可按需计费的计算环境。配置不够再升 CPU、内存和磁盘;不用时关机或删除。先开小机器试,比买硬件省事省钱。
- 网站、博客、演示站:放云上给别人访问,本地电脑可关机。
- 测试环境:装错依赖、改坏配置,删掉重建,不污染自己的电脑。
- 后台任务、小规模服务:定时脚本、简单 API 可 24 小时在线,避免笔记本长期开机。
- 跳板机:集中管理远程入口,但别把登录端口开放给所有人。
动手前,先在 GCP 控制台右上角打开 Cloud Shell,再复制下面命令。它只检查信息,不创建资源,也不会产生虚拟机费用:
gcloud auth list
gcloud config list project
gcloud services list --enabled --format="value(config.name)" | grep '^compute.googleapis.com$' || echo 'Compute Engine API 尚未启用,或当前账号没有查看权限'
为什么先跑它?小白最常见的坑不是“不会建”,而是账号登错、项目选错、Compute Engine API 没启用,后面会找不到机器或看不懂账单。三行分别确认登录账号、当前项目和 API 状态;若看到提示,建机前先启用 API 或换有权限的账号。还要留意:区域别选太远,迁移麻烦;可联网不等于网站能访问,后面还要配公网 IP 和防火墙端口。
环境跑顺后,别只靠手工重装。快照像给硬盘拍照片,方便回滚;镜像像把装好系统的盘子做成模板;实例模板把规格、镜像、磁盘、网络等设置记成清单。配合它们,可以缩短恢复时间,减少新开测试机时反复安装系统、装依赖、改配置的工作。坑在于:快照不等于完整备份,代码、数据库、防火墙规则、启动脚本也要一起管;测试完记得关机或删除,按需计费不是免费,开着就会继续算钱。
怎么上手
第一次使用 GCP Compute Engine 建立虚拟机,先别急着点“创建实例”。在控制台新建项目、开通结算并绑定结算账号、设账单预算提醒,再到“API 和服务”启用 Compute Engine API。项目是资源篮子;不开结算或没启 API,常报权限/配额错误,启用后等几十秒。再选区域、可用区、机器类型,练习可用 asia-east1、asia-east1-b、e2-micro。离用户近延迟低,但价格、机型、外部 IP 跟区域绑定,建完再换很麻烦。
进入“VM 实例”创建:名称填 web-vm;镜像选 Ubuntu 22.04 LTS,启动磁盘 20GB;网络标签填 http-server。防火墙按用途放行 HTTP 或 SSH 端口:HTTP 用 tcp:80,来源 0.0.0.0/0,目标标签也要填 http-server;SSH 的 22 默认通常已放行,若自建规则,来源只填自己的公网 IP。标签像贴纸,规则按贴纸匹配;常见坑是标签写错、忘建规则,或把 22 对全网开放,网页打不开还被暴力扫描。
连接建议点实例右侧“SSH”,浏览器终端免配密钥;也可在 Cloud Shell 用下面的 gcloud 命令,项目会自动带好:
gcloud config set compute/zone asia-east1-b
gcloud compute ssh web-vm
登录后复制下面几行:更新系统是补安全补丁,普通账号 deploy 可减少误用 root 的风险,nginx 用来验证 80 端口,curl、git 是常用工具。若要让 deploy 登录,再配 SSH 公钥或强密码,别用简单密码。
sudo apt update
sudo apt -y upgrade
sudo useradd -m -s /bin/bash deploy
sudo usermod -aG sudo deploy
sudo apt install -y nginx curl git
上线前按清单检查:外部 IP能否访问,临时 IP 重启可能变,正式站点要保留静态 IP;防火墙只开必要端口;磁盘容量是否够;账单预算和提醒是否生效。不用时及时停止或删除实例。坑是停止不等于全免费,磁盘、预留 IP 仍可能计费,长期不用先备份再删除。
与替代方案对比
选方案别只看价格,先看愿意管到哪一层。用 GCP Compute Engine 建虚拟机,像租一台远程电脑:系统、磁盘、防火墙、权限都要安排。
对比前,在 GCP 控制台右上角点 Cloud Shell(终端图标),粘贴下面两行,确认账号、项目、默认区域和项目 ID。这么做是因为账单、权限、网络规则都挂在「项目」下;小白常见坑是开多个项目没切换,以为机器没建出来,或把测试费记到正式账单。
gcloud config list
gcloud config get-value project
- 本地物理机:VM 开通快,几分钟选区域、大小、系统;忙时加配置、闲时关机,弹性强。物理机要采购、上架、装系统,还要预估几年用量。但长期 24 小时满载时,主机、磁盘、流量持续计费,总成本可能更高。坑:只算主机单价,忘了磁盘、快照、静态 IP。
- App Engine、Cloud Run 等托管服务:它们把代码交给平台跑,平台帮忙接流量和扩缩容(忙时加机器);Compute Engine 控制权更大,能装软件、改系统、开端口。代价是补丁(系统更新)、安全、备份、告警、扩缩容都要自己管。坑:把 VM 当自动扩容的网站空间,流量一涨就卡。
- 轻量 VPS:</strong
最佳实践
先按最小权限原则收紧权限:给 VM 绑定专用服务账号,在 IAM 里只授需要的角色,例如只读存储桶就给 Storage Object Viewer,别给 Editor/Owner。原因是泄露时损失可控。常见坑是把 JSON 密钥写进代码、镜像或公开仓库;线上程序应直接用 VM 的服务账号。本机调试可复制执行(下面命令默认已登录 Cloud SDK 并选好项目;没选会报错):
gcloud auth application-default login
只开放必要端口,够用就好:网站只开 80、443,22、3389 别对 0.0.0.0/0 开放;优先用浏览器 SSH 或 IAP 隧道,VM 可不配公网 IP。先看规则:
gcloud compute firewall-rules list --format="table(name,allowed,sourceRanges,targetTags)"
默认 VPC 可复制下面命令建 IAP SSH 规则,再到 VM 编辑页加网络标签 allow-iap-ssh。坑是没加标签规则不生效;看到全网开放 22,很容易被扫描爆破。
gcloud compute firewall-rules describe allow-ssh-from-iap || gcloud compute firewall-rules create allow-ssh-from-iap --network=default --allow=tcp:22 --source-ranges=35.235.240.0/20 --target-tags=allow-iap-ssh
Ubuntu/Debian 在浏览器 SSH 里每月或补丁发布后执行下面命令,定期更新系统并审计成功/失败登录记录。原因是旧漏洞最常见;能连上不等于安全。
sudo apt update && sudo apt -y upgrade
last -n 20
sudo lastb -n 20 || true
sudo journalctl -u ssh.service --since "7 days ago" --no-pager
给系统盘在 Compute Engine 的“快照计划”里建每日计划并绑定,保留 7~30 天;在“结算 → 预算和提醒”设 50%、90%、100% 邮件提醒;给实例加 owner、env、cost-center 标签,方便归属和成本核算。注意网络标签只管防火墙,成本归属要用资源标签;预算提醒不会自动关机。
生产别只放一台 VM:至少准备健康检查、日志、备份和多可用区方案,用负载均衡加托管实例组跨区部署,日志送 Cloud Logging,数据库另导出并演练恢复,避免单点故障。坑是同区两台不算高可用,只备份不恢复演练,出事可能才发现备份不能用。
常见问题(FAQ)
新建 VM 后怎么远程登录?
在控制台点 SSH,或配置密钥后用 SSH 客户端连接,先确认防火墙放行 22 端口。
选哪个区域和机型最稳妥?
优先选离用户近、价格合适的区域;新手从 e2-medium 或小型共享核机型试起。
关机后还会不会产生费用?
停止实例通常不再收取计算费,但磁盘、静态 IP 和快照仍可能产生费用。
不开放 22 端口可以连接吗?
可以用浏览器 SSH 或 IAP 隧道,但仍需正确配置身份权限和防火墙规则。
不想自己折腾 GCP?我们提供云平台代维护、上云迁移与账单代付服务,一对一技术支持。
