它是什么
GCP(Google Cloud Platform)是谷歌云提供的云计算平台,你可以按需租用计算、存储、数据库和网络能力,不用自己买服务器、机房和硬盘。
先认四个名字:
- Compute Engine:对应 VM,也就是租一台云上虚拟电脑,跑网站、脚本、后台程序。
- Cloud Storage:存文件,如图片、备份、下载包;它是对象存储,不是 VM 的系统盘。
- Cloud SQL:托管数据库,如 MySQL、PostgreSQL,少操心安装、备份和补丁。
- VPC:负责网络,管子网、IP、路由、防火墙,决定谁能连到谁。
关系先按这条线看:一个项目通常绑定一个计费账号,由它付款;项目是“资源盒子”,VM、存储桶、数据库都建在里面;同一项目的资源可以放到不同区域和可用区。区域是地理大区,如 asia-east1;可用区是区域内具体机房,如 asia-east1-a,很多 VM 和磁盘要放同一可用区。IAM 权限像发钥匙,决定账号能看、改、删什么。坑在于:计费账号只管钱,不等于操作权限;区域只管位置,也不等于权限。
下面这组排查命令能直接复制执行。先确认工具、登录账号、当前项目和计费账号,不创建云资源,是为了避免一上来开错项目或立刻产生费用:
gcloud --version
gcloud auth login
gcloud auth list
gcloud config list
gcloud projects list
gcloud billing accounts list
常见坑:第一条若提示 command not found,说明还没装 Google Cloud CLI;登录后项目列表看不到项目,多半是账号没有被 IAM 授权,不是 GCP 坏了;配置查看结果里 project 为空或不是目标项目时,先别建资源,否则账单和权限很难查;计费账号列表为空也可能是没查看权限,别误判成没账单。还有,Compute Engine 开着会计费,Cloud SQL 访问少也可能持续计费,本节先只“看”,不要急着“建”。
解决什么问题
理解「GCP服务介绍与基本使用」,先看它替你省掉哪些麻烦。个人网站或测试环境不必买物理服务器:开一台很小的虚拟机,或用不用自己装系统的托管服务跑页面、接口、数据库即可。多数资源按实际用量付费并随时扩容,访问量涨了再升配置、加实例,或让平台自动加减机器。
零基础可先打开 GCP 控制台,点右上角 Cloud Shell,它已装好管理工具并带好登录状态。复制下面这组只读命令,是为了确认工具、账号和当前项目;项目像一个文件夹,账单、资源和权限都挂在它下面。
gcloud version
gcloud auth list
gcloud config list
gcloud projects list
确认配置列表里的项目没选错,再复制第二组:它打开计算、日志、监控的服务开关,并查看可选区域、已有机器、日志出口和项目权限。为什么先“看”再“建”?因为这些命令不会创建收费虚拟机,能先看清平台把资源、日志、监控、权限放在同一个项目里管理。
gcloud services enable compute.googleapis.com logging.googleapis.com monitoring.googleapis.com --project="$(gcloud config get-value project)"
gcloud compute regions list --project="$(gcloud config get-value project)"
gcloud compute instances list --project="$(gcloud config get-value project)"
gcloud logging sinks list --project="$(gcloud config get-value project)"
gcloud projects get-iam-policy "$(gcloud config get-value project)"
平台能力还能统一处理备份、日志、监控和权限管理:快照或备份计划、日志保留、指标告警、谁能做什么都按项目配置,不必自建机房、装采集器、写脚本轮班看盘,降低自建机房和手工运维成本。通过全球网络、多区域资源和项目权限,用户可就近接入,关键数据复制到不同地区,单区域故障时更容易恢复;开发、运维、财务的权限也能分开,提升访问体验、容灾能力和团队协作效率。
- 容易踩的坑:项目为空或选错,服务会开到别处、资源也看不到;先在控制台顶部切换项目。没有权限时找管理员,别反复试。
- 按量不是零成本:开通服务通常不等于买服务器,但虚拟机、磁盘、公网 IP、流量会计费;先设预算告警,测试完删除资源。
- 别以为全自动:改机器类型常要重启;备份周期、日志保留、告警通知要自己设;跨区域还要考虑同步、延迟和数据能否放在境外,权限别全给 Owner。
怎么上手
先别急着开机器。打开 console.cloud.google.com,用 Google 账号登录并开通 Cloud,按提示绑卡;免费额度不等于不扣钱。顶部「选择项目 → 新建项目」建 gcp-demo:项目是账单、权限、资源的盒子,别都塞进默认项目。再到「结算 → 预算和提醒」设月预算 50 元、50%/90% 邮件提醒;「IAM 和管理 → IAM → 授予访问权限」给同伴只加 监控查看者或 Compute Viewer。这叫最小权限:先能看、不能改,少踩误删和天价账单。坑:别给 Owner/Editor,别把密钥发群里。
装好 Cloud SDK 先跑一次,它会登录并选中项目/默认区;选错项目最常见,资源会建到别处,账单也对不上。
gcloud init
- Compute Engine → VM 实例 → 创建实例,名称 demo-web;区域 us-central1、可用区 us-central1-a,机型 E2 / e2-micro。免费额度常限指定区域,换区域时下面命令里的可用区参数必须同步改,否则会提示找不到实例。
- 系统盘选 Debian 12、10 GB 标准持久磁盘够用,别被默认的平衡盘带着走;防火墙只勾 允许 HTTP 流量,它给实例加 http-server 标签,配合默认规则放行 80。别勾 HTTPS,也别开放 0.0.0.0/0 的 22,浏览器 SSH 不需要。
点实例行的 SSH 就能用浏览器连;想用本机终端,复制:
gcloud compute ssh demo-web --zone=us-central1-a
连上后粘贴,第一次更新会等一两分钟。用 sudo 只包住 echo、却把重定向留给当前 shell,常报权限不足;所以下面用 tee,nginx 装好才会监听 80。
sudo apt-get update
sudo apt-get install -y nginx
echo '<h1>你好,GCP!</h1>' | sudo tee /var/www/html/index.html > /dev/null
sudo systemctl restart nginx
查外部 IP 后访问 http://IP;打不开多半是创建时没勾 HTTP,补规则和标签(只跑一次,提示已存在可忽略):
gcloud compute firewall-rules create allow-http-demo --allow=tcp:80 --target-tags=http-server --description="Allow HTTP for demo-web"
gcloud compute instances add-tags demo-web --tags=http-server --zone=us-central1-a
gcloud compute instances describe demo-web --zone=us-central1-a --format='get(networkInterfaces[0].accessConfigs[0].natIP)'
实例详情「监控」页看 CPU、网络、磁盘;先练开关机并确认状态。停机不再算 vCPU/内存,但磁盘等仍计费。
gcloud compute instances stop demo-web --zone=us-central1-a
gcloud compute instances start demo-web --zone=us-central1-a
gcloud compute instances describe demo-web --zone=us-central1-a --format='get(status)'
练完一定删除,别只关机;第二行做了容错,没建过自定义规则也不会报错。
gcloud compute instances delete demo-web --zone=us-central1-a --quiet
gcloud compute firewall-rules delete allow-http-demo --quiet 2>/dev/null || true
与替代方案对比
选 GCP 前,先问三件事:要不要自己管机器、能否接受按量计费、愿不愿学一点运维。
和本地服务器比:本地机要采购、等送货、找机房、接电接网;GCP 在网页里几分钟开一台虚拟机,省掉采购和机房维护。但机器不在手边,控制台、SSH、API 更依赖网络;谁能开机、删数据、看账单,要靠账号和权限;资源开着就可能计费。常见坑是以为“没人访问就不花钱”,其实空
最佳实践
刚上手 GCP,先记住:少花钱、少给权限、能找回。建议在控制台右上角打开 Cloud Shell,下面命令都可整段复制;它们只查看或备份,不会删除资源。若提示未登录,按提示点授权即可。
先配置预算提醒和账单导出:在“结算 → 预算和提醒”创建预算,范围选当前项目,阈值设 50%、80%、100%;再到“结算 → 账单导出”开启 BigQuery 导出,必要时导出到 Cloud Storage。这样费用异常会邮件提醒,事后也能按项目、服务查明细。坑:预算提醒不是自动关机,也不会阻止扣费;账单有延迟,看到提醒时可能已经花钱。
给测试资源设置标签、负责人和关机计划:统一加 env=test、owner=姓名、shutdown=2200,并在 Compute Engine 的“实例调度”里绑定每天 22:00 停止;不会用调度时,先写进日历手动停。这样月底知道谁建的、何时删,也能少算 CPU 时间。坑:标签不会自动省钱;VM 停了,磁盘、快照、静态公网地址仍可能收费。
遵循最小权限原则,日常操作不用高权限账号:查看、启停用普通账号或 Viewer/Compute Viewer,Owner、Editor 只留给少数管理员;服务账号 JSON 密钥不要写进代码或公开仓库,优先让服务直接绑定服务账号。下面命令核对当前账号、项目权限和已有密钥,发现陌生密钥要立刻轮换。坑:密钥提交到 GitHub 后,删掉提交记录不等于失效,扫描机器人可能几分钟就拿来挖矿。
gcloud config list
gcloud projects get-iam-policy "$(gcloud config get-value project)" --format=yaml
for SA in $(gcloud iam service-accounts list --format='value(email)'); do echo "== $SA =="; gcloud iam service-accounts keys list --iam-account="$SA" --format='table(name,validAfterTime,validBeforeTime)'; done
先画资源清单再创建服务:写清项目、区域、服务名、开放端口、负责人、预计月费、删除日期;没写清就别点“创建”。每周定期清理闲置 VM、磁盘、快照和公网地址;把常用命令写成脚本,先跑清单再人工确认删除,避免误删。
printf '%sn'
'#!/usr/bin/env bash'
'set -e'
'PROJECT=$(gcloud config get-value project)'
'echo "当前项目:$PROJECT"'
'gcloud compute instances list --format="table(name,zone,status,labels)"'
'gcloud compute disks list --format="table(name,zone,sizeGb,status)"'
'gcloud compute snapshots list --format="table(name,diskSizeGb,creationTimestamp)"'
'gcloud compute addresses list --format="table(name,region,address,status)"'
> gcp-daily-check.sh
chmod +x gcp-daily-check.sh
./gcp-daily-check.sh
重要配置做版本记录,变更前先备份并准备回滚:把导出的 IAM、实例、磁盘清单和控制台截图放进 Git,一次只改一小步;出问题时按备份 YAML 或截图恢复。下面命令会生成当天备份目录并提交,适合改权限、改网络、删资源前执行。坑:配置只记在聊天记录里,换电脑或换人就找不到;别把查看脚本随手改成批量删除脚本。
DATE=$(date +%F)
mkdir -p "gcp-backup/$DATE"
gcloud config list > "gcp-backup/$DATE/gcloud-config.txt"
gcloud projects get-iam-policy "$(gcloud config get-value project)" > "gcp-backup/$DATE/iam-policy.yaml"
gcloud compute instances list --format=yaml > "gcp-backup/$DATE/instances.yaml"
gcloud compute disks list --format=yaml > "gcp-backup/$DATE/disks.yaml"
git init -q
git add "gcp-backup/$DATE"
git -c user.name="GCP Backup" -c user.email="backup@example.com" commit -q -m "backup gcp config" || true
常见问题(FAQ)
没有信用卡可以试用 GCP 吗?
通常需要绑定付款方式,新账号可能有免费额度或试用金,以官网活动为准。
只学控制台够不够?
入门够用,但批量操作和自动化建议尽早学习 gcloud。
创建 VM 后为什么费用还在增加?
VM 停机后磁盘和公网地址仍可能计费,不用时请删除相关资源。
SSH 连不上 VM 怎么办?
先查防火墙规则、外部地址、SSH 密钥和实例状态,再看日志。
不想自己折腾 GCP?我们提供云平台代维护、上云迁移与账单代付服务,一对一技术支持。
