它是什么:先认识 GCP 的产品地图
打开 GCP 控制台,上百个图标很容易劝退。别慌,把它想成一盒乐高:GCP 就是一组可拼装的云服务——计算干活、存储放东西、网络把机器连起来、数据库存整齐的表格、监控与权限看状态管门禁。用到哪块拼哪块,不用一次买齐。
小白最不划算的就是先背产品名。按四个大白话问题对号入座就好:网站跑在哪里?文件放哪里?谁能访问?花了多少钱? 答案清楚了,再回头看那些英文名,会发现只是给答案贴了个标签。
常见起点只有六个,按开箱顺序认一遍:
- 项目:资源的收纳盒。坑:删项目=连盒全删,别在测试项目里顺手绑了正式域名。
- 结算账号:绑卡的地方。坑:先设预算提醒再开机器,忘关跑一晚,账单会吓一跳。
- 虚拟机:回答「跑在哪」,就当租了台远程电脑。
- 对象存储:回答「文件放哪」,图片和备份放这儿比挂硬盘便宜。
- 虚拟私有云(VPC):回答「谁能访问」。坑:别图省事把 0.0.0.0/0 全端口敞开。
- 日志与监控:网站打不开时,回看刚才发生了啥。
接着敲几条只读命令,把地图对上实物。为什么先只读?因为它不新建资源、不会手滑产生费用,却能把控制台里的方块和上面四问一一对应。装好 Cloud SDK 后整段复制即可:
gcloud auth login
gcloud config list
gcloud projects list
gcloud billing accounts list
gcloud compute instances list --format="table(name,zone,status)"
gcloud storage buckets list
gcloud logging logs list --limit=10
最常见的坑是没选当前项目,上面几条全返回空列表,你会以为「我啥都没开」,其实只是看错了收纳盒。补这条自动选中第一个项目,再重跑一次列表就好:
gcloud config set project "$(gcloud projects list --format='value(projectId)' --limit=1)"
最后一问「花了多少钱」先不用记命令,去控制台「结算 → 预算与提醒」点一眼更直观。到这里,你手里拿的是四问六件套,而不是上百个看不懂的图标了。
解决什么问题:从不懂到能跑起来
分不清 Compute Engine、Cloud Run、GKE 时,别研究全家桶。本节只定一个最小目标:一台 Linux VM 跑起小网站或测试环境,浏览器看到 Nginx 默认页就算成功。选 e2-micro + Debian 12 + 10GB 盘:组件少、费用低,弄坏删掉重来,比在托管服务里找原因快。
先防出错:控制台新建一个只用于练习的项目,别混进正式业务;给自己或同伴选能建 VM、看日志、管防火墙的最小角色,别图省事发 Owner;到结算页面里的“预算和提醒”设 50%、90%、100% 提醒。坑:预算默认只提醒,不会自动关机;提示没权限就照控制台提示补对应角色;也别顺手开 GPU、大磁盘、静态 IP、负载均衡,它们最容易让账单变脸。
确认当前项目是新建项目,打开 Cloud Shell,下面整段第一次只跑一次:开 API、建低配 VM、只新增网站用的 80 规则、用 SSH 密钥装 Nginx,并打印外部 IP。
mkdir -p "$HOME/.ssh"; chmod 700 "$HOME/.ssh"
Z=asia-east1-b; K="$HOME/.ssh/gcp_web_test"
test -f "$K" || ssh-keygen -t ed25519 -f "$K" -N "" -q
gcloud services enable compute.googleapis.com
gcloud compute instances create web-test-vm --zone="$Z"
--machine-type=e2-micro
--image-family=debian-12
--image-project=debian-cloud
--boot-disk-size=10GB
--tags=http-server
gcloud compute firewall-rules create allow-http-web-test --allow=tcp:80 --target-tags=http-server
sleep 20
gcloud compute ssh web-test-vm --zone="$Z" --ssh-key-file="$K" --command='sudo apt-get update; sudo apt-get install -y nginx; sudo systemctl enable --now nginx'
gcloud compute instances describe web-test-vm --zone="$Z" --format='value(networkInterfaces[0].accessConfigs[0].natIP)'
把输出的 IP 贴到浏览器,访问 http://外部IP。控制台 Compute Engine 的虚拟机实例页面点 SSH 按钮也能进;上面的 SSH 命令用的是刚生成的密钥,不用记密码。坑:私钥别发人、别传 GitHub;只新增 80 规则,别再建 22、3389 或全部端口的宽规则,默认网络自带的 SSH 规则够用。
连上后只练三件事:重启、看日志、打补丁。下面依次是停止再启动、看 Nginx 最近 50 行日志、更新系统包:
Z=asia-east1-b; K="$HOME/.ssh/gcp_web_test"
gcloud compute instances stop web-test-vm --zone="$Z"
gcloud compute instances start web-test-vm --zone="$Z"
sleep 30
gcloud compute ssh web-test-vm --zone="$Z" --ssh-key-file="$K" --command='sudo journalctl -u nginx --no-pager -n 50'
gcloud compute ssh web-test-vm --zone="$Z" --ssh-key-file="$K" --command='sudo apt-get update; sudo apt-get upgrade -y'
卡住先重启,打不开先看日志,补丁补安全洞。坑:停止后不收 CPU/内存,但磁盘仍收费;默认外部 IP 在停止再启动后可能变,旧地址失效就重跑前面打印 IP 的那条命令,别急着买静态 IP。最后一条升级命令先在测试项目练,正式业务先备份。用完删 VM,或删整个测试项目最干净。
怎么上手:十分钟搭出第一个可用环境
先把“地基”打稳:打开 console.cloud.google.com,用谷歌账号登录,新建一个项目(比如叫 first-demo),再在「结算」里绑定银行卡。为什么先做这步:谷歌云按项目算钱、算权限,不绑卡很多资源建不出来。别慌,新账号通常有免费额度,去「结算 → 额度与免费层级」确认是否仍有效;顺手在「预算与提醒」设 50 元阈值,坑点:不设提醒,测试完忘关机器,下个月容易收到意外账单。同时在右上角记下项目 ID,后面命令要用。
- 选区域:在控制台「Compute Engine → 设置」看可用区,挑离自己或用户近的,例如
asia-east1-b(台湾)。为什么:近一点网页打开更快,跨区传数据还可能另收费。 - 建一台低配 Linux VM,只开 22(SSH)和 80(网页):
gcloud compute instances create my-first-vm --project=替换成你的项目ID --zone=asia-east1-b --machine-type=e2-micro --image-family=debian-12 --image-project=debian-cloud --tags=http-server --boot-disk-size=10GB gcloud compute firewall-rules create allow-http --project=替换成你的项目ID --allow=tcp:80 --target-tags=http-server --description="只开网页端口"坑点:别图省事开「允许所有端口」,扫描器几分钟就会来敲门;
e2-micro在免费额度内,别手滑选成n2-standard-8。 - 登录并部署一个简单页面:
gcloud compute ssh my-first-vm --project=替换成你的项目ID --zone=asia-east1-b sudo apt update && sudo apt install -y nginx echo '<h1>我的第一个谷歌云页面</h1>' | sudo tee /var/www/html/index.html sudo systemctl enable --now nginx curl http://localhost看到那行标题就说明成了;浏览器开「VM 外部 IP」也能看到。为什么先 update:旧软件源常报 404,小白最容易卡在这。
- 收尾看一眼:控制台「Compute Engine → 日志」看
nginx启动记录,「监控」看 CPU 曲线,「结算 → 费用明细」确认今天只花了几分钱。命令党可用:gcloud compute instances get-serial-port-output my-first-vm --project=替换成你的项目ID --zone=asia-east1-b | tail -n 20 gcloud beta billing budgets list --billing-account=替换成结算账号ID
最后提醒:练完在控制台「停止」或直接 gcloud compute instances delete my-first-vm --zone=asia-east1-b --project=替换成你的项目ID。为什么:停了才不继续计费,这是十分钟上手里最该养成的一个习惯。
与替代方案对比:什么时候选 GCP
6. 如果对谷歌云的产品不是太了解,先别背产品名,按「要解决什么问题」选。和自建服务器比,GCP 不用买机器、租机柜、换硬盘,也不用管机房;需要时开一台,测完删掉就释放。代价是账单和权限要自己看懂:开着就计费,哪怕没人访问;没权限会报 PERMISSION_DENIED,重试没用。先按提示登录并选测试项目,别选公司生产项目。
gcloud init
gcloud auth list
gcloud config list
gcloud services enable serviceusage.googleapis.com --quiet
gcloud services list --enabled --filter="name:compute.googleapis.com OR name:bigquery.googleapis.com"
为什么这么做:gcloud init 定下当前账号和项目,后面命令都落在这里;区域下面写死,避免选错。中间两行打印配置给自己核对;最后两行先打开服务查询能力,再看 Compute Engine、BigQuery 有没有启用。提示开通结算就按浏览器页面做完再回来。接着用最小机型体验「按量创建」:
gcloud services enable compute.googleapis.com --quiet
gcloud compute instances create gcpok-demo
--zone=us-central1-a
--machine-type=e2-micro
--image-family=debian-12
--image-project=debian-cloud
--tags=http-server
--labels=env=demo,owner=beginner
gcloud compute instances describe gcpok-demo
--zone=us-central1-a
--format='value(networkInterfaces[0].accessConfigs[0].natIP)'
e2-micro 是为了少花钱,http-server 配合默认防火墙留 80 端口,最后取公网 IP;输出空白多半是组织策略没给外部 IP。坑:IP 打不开先查防火墙或默认 VPC 是否被删,别急着重装;免费额度以控制台为准,创建成功就开始计费。
和其他云厂商比,GCP 的优势主要在 网络、数据分析和全球基础设施:全球骨干网、BigQuery、跨区域部署,用户分散、报表大时更顺手。但换哪家云都要同一套习惯:最小权限、预算告警、标签、监控、备份、及时释放。用标签筛练习机,换云也别丢:
gcloud compute instances list
--filter='labels.env=demo'
--format='table(name,zone,machineType,status)'
确认只有 gcpok-demo 再释放;--quiet 跳过确认,删除不可恢复。删完看一眼有无残留磁盘或静态 IP。
gcloud compute instances delete gcpok-demo
--zone=us-central1-a
--quiet
和本机虚拟机、Docker 比:只离线练 ls、写 Python,本机更省事,删了不出账单;要公网访问、域名 HTTPS、多人协同、流量来了弹性扩容,才选云上 VM。别为练几条命令开云机器又忘删,这是最常交的学费。
最佳实践:小白也能少踩坑
如果对谷歌云的产品不是太了解,别一上来就照着架构图堆服务。最稳的打法就三句:先小后大、先控权限和费用、先写好运维清单。下面每一步都能照着点、照着贴。
一、先小后大。先开一台最低配、单区域的 VM,把网站或脚本跑通再说。别急着勾「多区域」「负载均衡」「自动扩缩」——它们就算没流量也会产生转发规则和健康检查的费用,小白最常见的一脸懵就是「我啥也没干怎么扣钱了」。先确认跑过 gcloud init,再复制这段:
gcloud compute instances create my-first-vm
--zone=asia-east1-b
--machine-type=e2-micro
--image-family=debian-12
--image-project=debian-cloud
--tags=lab
--boot-disk-size=10GB
真有流量了,再加托管实例组和负载均衡。坑点:改机型要先停实例,别在跑着的服务上直接点「升级」,很容易连不上还以为机器坏了。
二、先控权限和费用。给来帮忙的同学只发「能看」的权限,千万别顺手给 Owner,删项目往往只差一次误点。同时打标签、把日志留存改成 30 天、挂上每日快照:
export PROJECT_ID=$(gcloud config get-value project)
gcloud projects add-iam-policy-binding $PROJECT_ID
--member="user:newbie@example.com"
--role="roles/compute.viewer"
gcloud compute instances add-labels my-first-vm
--zone=asia-east1-b --labels=owner=newbie,env=test
gcloud logging buckets update _Default
--location=global --retention-days=30
gcloud compute resource-policies create snapshot-schedule daily-backup
--region=asia-east1 --schedule=daily --max-retention-days=7
gcloud compute disks add-resource-policies my-first-vm
--zone=asia-east1-b --resource-policies=daily-backup
预算提醒建议在控制台搜「预算和提醒」,填 100 元、勾 50% 和 90% 邮件通知就行;这一步比手敲命令少填错一个结算账号 ID,对小白更友好。为什么要打标签?月底账单能一眼看出机器是谁开的;没标签的人,最后只能对着一串 vm-8732 猜。日志别永久留,留存越久存储越贵。
三、先写好运维清单。出事时人容易脑子空白,所以提前落盘。先自动抓一份:
{
echo "区域: $(gcloud compute instances describe my-first-vm --zone=asia-east1-b --format='value(zone)')"
echo "外网IP: $(gcloud compute instances describe my-first-vm --zone=asia-east1-b --format='value(networkInterfaces[0].accessConfigs[0].natIP)')"
echo "系统: debian-12"
echo "备份: $(gcloud compute snapshots list --format='value(name)' | head -1)"
echo "回滚: gcloud compute instances reset my-first-vm --zone=asia-east1-b"
} > 运维清单.txt
cat 运维清单.txt
再手工补这几项,别偷懒:
- 开放端口:只开 22 和 80;别图省事写
0.0.0.0/0 全部端口,这是最常被扫到的坑。 - SSH 密钥:记下
~/.ssh/google_compute_engine的路径,换了电脑没它就登不上。 - 系统版本:写清 debian-12,升级前先手动拍一次快照。
- 备份位置:快照在 asia-east1,想跨区恢复得先复制过去,不是点一下就回来。
- 回滚步骤:先
reset,不行再用快照重建盘,千万别一慌就删实例。
把这三条变成习惯,哪怕你还分不清 GKE、Cloud Run 和 Compute Engine,第一个月也基本不会把试验搞成事故或账单惊吓。跑通了,再慢慢加东西不迟。
常见问题(FAQ)
完全不懂 GCP,第一步该做什么?
先建项目、设预算提醒,再创建一台低配 Linux VM 练手。
需要一开始就学很多产品吗?
不需要,先掌握计算、存储、网络、权限和账单五类即可。
怎么避免账单突然变高?
选低配、设预算提醒、关掉不用资源,并每天看费用明细。
不会用命令行可以运维吗?
可以,先用控制台和 SSH 完成登录、重启、看日志,再学 gcloud。
不想自己折腾 GCP?我们提供云平台代维护、上云迁移与账单代付服务,一对一技术支持。
