+86 189 8218 1436 周一至五 10:00-22:00

GCP的优势:小白也能懂的上云指南

TL;DR:用小白能懂的方式梳理 GCP 的优势,从创建 VM、SSH 登录到权限、计费和监控,帮你少踩运维坑。

它是什么

一句话解释:GCP 就是把服务器、存储、网络、数据库和监控等资源放在云端,按需开通和管理。把它想成“不用自己买机器的机房”:要虚拟机就开一台,要存文件就开存储,不用时关掉或删除。

所以,GCP的优势不只在资源多,还在全球网络、弹性扩容、按量计费、数据分析与运维自动化能力。全球网络让访问更近更稳;弹性扩容让高峰不必提前买机器;按量计费适合小步试;数据分析和运维自动化把日志、指标、报警、部署串起来。

小白先记住三个入口:网页控制台、gcloud 命令行、SSH 连接 VM。按顺序做,最不容易迷路。

  1. 网页控制台:打开 https://console.cloud.google.com/,登录 Google 账号。先选项目、开通结算、启用 Compute Engine API。为什么?资源都挂在“项目”下,没结算和 API,后面常报权限或未启用错误。坑:项目多时别选错。

  2. gcloud 命令行:它把点击变成可重复操作。装好 Google Cloud CLI 后在本地终端复制执行:第一条查工具,第二条登录,第三条选默认项目和区域。

    gcloud --version
    gcloud auth login
    gcloud init

    坑:初始化会弹选择,别一路回车选到公司项目;提示找不到命令就是没装,按官网对应系统安装;浏览器没打开先查复制内容和网络。

  3. SSH 连接 VM:这是进入某台虚拟机内部,确认机器开好了,也方便装软件、看文件。确认控制台里的结算和 API 已就绪,再复制执行:创建小练习机并连进去。

    gcloud compute instances create gcp-demo-vm --zone=asia-east1-b --machine-type=e2-micro --image-family=debian-12 --image-project=debian-cloud
    gcloud compute ssh gcp-demo-vm --zone=asia-east1-b

    坑:按量计费不是免费,VM 开着就可能扣费;该区域没配额会报错,换区域时三处区域要同步改;SSH 不是登录 GCP 账号。练完退出 VM 窗口,回本地终端复制删除命令,避免持续计费。

    gcloud compute instances delete gcp-demo-vm --zone=asia-east1-b --quiet

解决什么问题

很多小白想上线网站,第一道坎不是代码,而是买一台物理服务器:要装系统、拉网线、配路由、盯机房,买少了怕高峰期卡,买多了低谷期白烧钱。GCP的优势是把这些变成可创建、可复制、可关闭的云资源。先在控制台选好项目、开通结算,再打开右上角 Cloud Shell;下面这段会读取当前项目,开通常用 API,几分钟创建一台测试 VM,并只放行网站用的 80 端口。不要手改项目变量,复制执行即可。

PROJECT_ID="$(gcloud config get-value project 2>/dev/null)"
ZONE="asia-east1-b"
gcloud services enable compute.googleapis.com logging.googleapis.com monitoring.googleapis.com --project="$PROJECT_ID"
gcloud compute firewall-rules describe allow-http-gcpok --project="$PROJECT_ID" >/dev/null 2>/dev/null || gcloud compute firewall-rules create allow-http-gcpok --network=default --allow=tcp:80 --target-tags=http-server --description="Allow HTTP for gcpok demo" --project="$PROJECT_ID"
gcloud compute instances describe gcpok-demo-vm --zone="$ZONE" --project="$PROJECT_ID" >/dev/null 2>/dev/null || gcloud compute instances create gcpok-demo-vm --zone="$ZONE" --machine-type=e2-micro --image-family=debian-12 --image-project=debian-cloud --tags=http-server --project="$PROJECT_ID"

为什么这样做?VM 是云里的“电脑”,防火墙是“门卫”,项目是账单和权限的边界。流量高峰时,用托管实例组把同一启动模板复制成 2~3 台,并按 CPU 超过 60% 自动扩容;低谷时缩容到 1 台,测试机直接关机省钱。网站、后台服务、备份和日志也能集中到同一个 GCP 项目:网站和后台服务放 VM 或托管实例组,备份用快照或 Cloud Storage,日志自动进 Cloud Logging,不必每台机器重复装系统、拉网线、盯机房。

小白最容易踩的坑是“全开”和“以为关机就免费”:别把 22、3306、3389 对全网开放,示例只开 80 是为了演示;VM 关机后磁盘、静态 IP、快照、日志保留仍可能计费,练完要删除资源。示例依赖 default 网络,公司项目没有它时先问管理员,别乱改生产网络。权限也别共用一个 Owner,给协作者最小角色,出事才能看是谁改了什么。

  1. 在 Monitoring 里给 CPU、5xx、磁盘设阈值告警,通知到邮箱;先看告警记录和曲线,判断是变慢、报错还是没流量。
  2. 再看防火墙和实例状态,确认 80/443 是否放行、VM 是否 RUNNING。
  3. 最后看 Logs Explorer 的最近错误和 IAM 变更记录,按时间线定位。

这套“权限 → 防火墙 → 监控和告警 → 日志”的流程,让小白也能按步骤排查故障,而不是靠猜。不用时复制下面命令关机并看状态、日志;恢复访问时在控制台点“启动”即可。

PROJECT_ID="$(gcloud config get-value project 2>/dev/null)"
ZONE="asia-east1-b"
if gcloud compute instances describe gcpok-demo-vm --zone="$ZONE" --project="$PROJECT_ID" >/dev/null 2>/dev/null; then
  gcloud compute instances stop gcpok-demo-vm --zone="$ZONE" --project="$PROJECT_ID"
  gcloud compute instances describe gcpok-demo-vm --zone="$ZONE" --project="$PROJECT_ID" --format="get(status)"
fi
gcloud logging read "resource.type="gce_instance"" --limit=10 --freshness=1h --project="$PROJECT_ID" --format="table(timestamp,severity,textPayload)"
  • 如果第一次提示 API 正在启用,等一分钟再把第一段粘贴一次,它会自动跳过已建好的资源。
  • 如果看不到日志,确认 Cloud Logging 已开通,并把日志保留期调到够用又不过度收费。

怎么上手

第一次体验GCP的优势,别急着开机器。先在控制台建空项目;在「结算」准备好结算账号后,先设预算和邮件提醒(如 50 元、50%/90%/100%),最后把项目关联到结算账号,才算开通计费。这样忘记关资源也会先收到提醒。坑:提醒不会自动停机,磁盘、快照、静态 IP 停机后仍可能收费。

  1. 权限和位置先收窄。在「身份与访问管理(IAM)」别用 Owner 当练习号,只给当前任务需要的角色:Compute Instance Admin、Compute Security Admin、Service Usage Admin、Service Account User、Logs Viewer、Monitoring Viewer;打快照再临时加 Compute Storage Admin,用完收回。VM 选离用户近的地区,减少延迟和跨区流量费,规格先 e2-micro;示例以东亚用户用 asia-east1-b,不在东亚就把命令里的 ZONE 改成最近区域,别照抄;免费额度有地区限制,别上 GPU/高配。
  2. 创建并登录。控制台点 Compute Engine 创建也行;更省事是打开 Cloud Shell 复制下面命令:启用 API、建 VM、补防火墙、SSH 登录。来源写当前公网 IP,避免把 22/80 开给全网;默认网络可能已有 default-allow-ssh,练习后要检查旧规则。
export ZONE="asia-east1-b"
export VM_NAME="gcpok-demo"
export TAG="gcpok-web"
export MY_IP="$(curl -fsS https://api.ipify.org)/32"
gcloud services enable compute.googleapis.com logging.googleapis.com monitoring.googleapis.com
if ! gcloud compute instances describe "$VM_NAME" --zone="$ZONE" >/dev/null 2>&1; then
  gcloud compute instances create "$VM_NAME" 
    --zone="$ZONE" 
    --machine-type="e2-micro" 
    --image-family="debian-12" 
    --image-project="debian-cloud" 
    --tags="$TAG"
fi
if ! gcloud compute firewall-rules describe "allow-${VM_NAME}" >/dev/null 2>&1; then
  gcloud compute firewall-rules create "allow-${VM_NAME}" 
    --allow=tcp:22,tcp:80 
    --source-ranges="$MY_IP" 
    --target-tags="$TAG" 
    --description="Allow SSH and HTTP from my IP"
fi
gcloud compute ssh "$VM_NAME" --zone="$ZONE"

进入 VM 后,在 SSH 窗口复制下面命令:先看系统、磁盘、内存和服务状态,再装 nginx 放简单网页,并装 Ops Agent 让监控、日志更完整。注意这些不在 Cloud Shell 里跑;网页打不开,多半是防火墙、目标标签或 nginx 没启动。

uname -a
df -h
free -m
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 enable --now nginx
systemctl status nginx --no-pager
curl -I http://localhost
curl -sSO https://dl.google.com/cloudagents/add-google-cloud-ops-agent-repo.sh
sudo bash add-google-cloud-ops-agent-repo.sh --also-install
sudo systemctl status google-cloud-ops-agent --no-pager
exit

退出 SSH 后回到 Cloud Shell,打开 Monitoring、Logs Explorer 看指标和日志,再复制下面命令做快照。把命令、时间、区域、规格和截图记成清单,下次照着跑就是可复用运维清单。坑:快照只保存磁盘数据,不是整机备份;停止 VM 不等于删除磁盘、快照和静态 IP,练完记得删除。

export ZONE="asia-east1-b"
export VM_NAME="gcpok-demo"
gcloud compute disks snapshot "$VM_NAME" 
  --snapshot-names="${VM_NAME}-snap-$(date +%Y%m%d%H%M%S)" 
  --zone="$ZONE"

与替代方案对比

选 GCP 就像租房,咱们先拿它和几种常见「住法」比一比,你就知道适不适合自己了。

和自建物理服务器比:以前买机器得等发货、找机柜、接网线,硬盘坏了还得自己跑机房换。用 GCP 点几下就开机,采购和机房维护全省了。但天下没有免费午餐,你得接受云上按量计费的规则,还得花点时间搞懂「VPC 网络」「防火墙规则」这些新词。小白最容易踩的坑是:以为点「停止」就不花钱了,其实挂着的硬盘、没释放的闲置 IP 照样扣费,不用了必须彻底「删除」。

和其他云厂商比:各家基础功能都差不多,但 GCP 的强项很鲜明:一是自带全球骨干网,海外用户访问不容易绕路变卡;二是数据与分析产品(比如 BigQuery)查海量数据特别快,不用自己搭数据库熬通宵调优;三是容器(GKE)和自动化运维体验更顺手,很适合以后想省事、不想碰服务器的人。

和你电脑里的本地虚拟机比:本地虚拟机(如 VirtualBox)断网也能跑,适合离线瞎折腾、改坏了秒还原快照,或者跑固定内网的小工具。但只要你想让外网同事访问、或者突然来一波流量要加机器,本地就扛不住了。云上 VM 天生带公网入口,配合实例组能自动扩容,这才是对外服务的主场。

不是所有业务都要立刻搬家。低流量的固定服务别一上来就买高配,先开一台最小规格的 e2-micro 验证水温和账单最稳妥。不用在自己电脑装软件,点开 GCP 控制台右上角的「Cloud Shell」(自带工具的网页终端),整段复制下面这行回车即可:

gcloud compute instances create my-first-test 
  --zone=asia-east1-b 
  --machine-type=e2-micro 
  --image-family=debian-12 
  --image-project=debian-cloud

为什么这么做?e2-micro 常在免费额度内,跑个测试页绰绰有余;选 asia-east1-b 对中文用户延迟较友好。末尾的 表示「换行接着写」,千万别只贴第一行,要连后面几行一起复制,不然终端会报错说缺参数。

最后再拦一个坑:测完记得删,否则下个月可能冒出几毛钱流量费。删也用命令,别回网页只点「停止」:

gcloud compute instances delete my-first-test --zone=asia-east1-b

先花十分钟跑通「创建 → 访问 → 删除」这个闭环,比看十篇对比文都管用。等确认业务真需要弹性了,再慢慢加配置也不迟。

最佳实践

先别急着买高配。打开 Cloud Shell,确认已选好项目并绑定结算账号;下面命令取当前项目,不用手填 ID。用 e2-micro 和 10GB 系统盘起步,不够再升配;–labels 给每台 VM 写 owner/env/cost,方便分账,–tags 只用于套防火墙。坑:labels 和网络标签不是一回事;一上来开高配、开 0.0.0.0/0,最容易把 GCP的优势 用成账单。新项目照做;共享项目执行前删掉删除默认规则那一行。

PROJECT_ID="$(gcloud config get-value project 2>/dev/null)"
ZONE="asia-east1-b"
REGION="asia-east1"
VM_NAME="demo-vm"
MY_IP="$(curl -s https://ipinfo.io/ip)"
[ -n "$MY_IP" ] || MY_IP="$(curl -s https://ifconfig.me)"
MY_IP="$MY_IP/32"
gcloud services enable compute.googleapis.com --project="$PROJECT_ID"
cat > /tmp/startup-script.sh <<'EOF'
#!/bin/bash
set -e
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get -y upgrade
apt-get -y install unattended-upgrades cron
systemctl enable --now cron
printf '0 23 * * * root /sbin/shutdown -h nown' > /etc/cron.d/auto-shutdown
chmod 0644 /etc/cron.d/auto-shutdown
EOF
gcloud compute firewall-rules delete default-allow-ssh --project="$PROJECT_ID" --quiet 2>/dev/null || true
gcloud compute firewall-rules describe allow-ssh-from-my-ip --project="$PROJECT_ID" >/dev/null 2>&1 || gcloud compute firewall-rules create allow-ssh-from-my-ip --project="$PROJECT_ID" --allow=tcp:22 --source-ranges="$MY_IP" --target-tags=ssh-allowed --direction=INGRESS --priority=1000
gcloud compute instances describe "$VM_NAME" --zone="$ZONE" --project="$PROJECT_ID" >/dev/null 2>&1 || gcloud compute instances create "$VM_NAME" --project="$PROJECT_ID" --zone="$ZONE" --machine-type=e2-micro --image-family=debian-12 --image-project=debian-cloud --boot-disk-size=10GB --labels=owner=beginner,env=test,cost=low --tags=ssh-allowed --metadata-from-file=startup-script=/tmp/startup-script.sh
gcloud compute resource-policies describe daily-backup --region="$REGION" --project="$PROJECT_ID" >/dev/null 2>&1 || gcloud compute resource-policies create snapshot-schedule daily-backup --project="$PROJECT_ID" --region="$REGION" --max-retention-days=7 --on-source-disk-delete=keep-auto-snapshots --daily-schedule --start-time=03:00
gcloud compute disks describe "$VM_NAME" --zone="$ZONE" --project="$PROJECT_ID" --format='value(resourcePolicies)' | grep -q "daily-backup" || gcloud compute disks add-resource-policies "$VM_NAME" --project="$PROJECT_ID" --zone="$ZONE" --resource-policies="projects/$PROJECT_ID/regions/$REGION/resourcePolicies/daily-backup"

接着到「结算 > 预算和提醒 > 创建预算」:范围选当前项目,金额填你能接受的上限,阈值填 50%、90%、100%,一定勾邮件通知。预算提醒不会自动停机,只是刹车灯;小白常见坑是设了预算却没勾通知,或以为关机后磁盘、静态 IP、快照也免费。上面启动脚本让测试机每天 23:00 自动关机,补丁每次开机自动跑,快照每天 03:00 留 7 天;生产机别照抄自动关机。

权限和端口按最小给。IAM 里给真人账号,不要共用 Owner:只看资源给 Compute Viewer,需要重启才给 Compute Instance Admin,需要 SSH 再给 OS Login;服务账号别下载长期 JSON 密钥。防火墙只开必要端口,没有网站就别开 80/443;上面规则只放行当前公网 IP 的 22。SSH 用密钥登录,不设密码,它会用本机密钥:

PROJECT_ID="$(gcloud config get-value project 2>/dev/null)"
ZONE="asia-east1-b"
VM_NAME="demo-vm"
gcloud compute ssh "$VM_NAME" --project="$PROJECT_ID" --zone="$ZONE"

坑:换了网络,公网 IP 会变,执行下面更新;别图省事把来源写 0.0.0.0/0,也别把私钥传到 GitHub。补丁和备份要写成固定流程,别靠记忆;备份没恢复演练,等于没备份。

PROJECT_ID="$(gcloud config get-value project 2>/dev/null)"
MY_IP="$(curl -s https://ipinfo.io/ip)"
[ -n "$MY_IP" ] || MY_IP="$(curl -s https://ifconfig.me)"
MY_IP="$MY_IP/32"
gcloud compute firewall-rules update allow-ssh-from-my-ip --project="$PROJECT_ID" --source-ranges="$MY_IP"

监控和日志也要清单化。先启用服务并把默认日志桶保留 30 天;保留不是永久,留太久也会产生存储费:

PROJECT_ID="$(gcloud config get-value project 2>/dev/null)"
gcloud services enable logging.googleapis.com monitoring.googleapis.com --project="$PROJECT_ID"
gcloud logging buckets update _Default --location=global --retention-days=30 --project="$PROJECT_ID"
  1. 告警:在「监控 > 提醒」建 3 条:CPU > 80% 持续 5 分钟、磁盘 > 85%、VM 停止;通知填自己真会看的邮箱。
  2. 查日志:Cloud Logging 选最近 30 分钟,先看 ERROR、启动脚本、SSH 登录;别一上来重装系统。
  3. 恢复:按顺序做「重启 VM → 回滚到上线前快照 → 切回旧版本」,每步记录时间。
  4. 复盘:写清时间线、影响、根因、修复、预防动作和负责人;下次把能自动化的步骤补进脚本。

坑:只建告警不填通知渠道,等于没告警;故障复盘不写预防动作,下次还会同样翻车。

每月清理一次不用资源。先只列清单,不自动删;确认名称后再到控制台删除,避免误删生产盘:

PROJECT_ID="$(gcloud config get-value project 2>/dev/null)"
gcloud compute instances list --project="$PROJECT_ID" --format='table(name,zone,status,machineType,labels)'
gcloud compute addresses list --project="$PROJECT_ID" --format='table(name,region,address,status)'
gcloud compute disks list --project="$PROJECT_ID" --format='table(name,zone,sizeGb,users)'
gcloud compute snapshots list --project="$PROJECT_ID" --format='table(name,creationTimestamp,diskSizeGb)'

坑:预留静态 IP 不用也收费;旧快照越攒越多;删盘通常不可恢复,别用脚本一把梭。

上线前先做成本估算和回滚方案:用价格计算器按区域、机型、磁盘和出网流量估一次月费并截图;再保存配置和打上线前快照,写清「失败就回滚到哪个快照、谁执行、多久回滚」。别只看见 GCP的优势:弹性、按量计费和监控齐全很好,但权限过宽、端口全开、忘记清理,都会让你忽视配置不当带来的风险。

PROJECT_ID="$(gcloud config get-value project 2>/dev/null)"
ZONE="asia-east1-b"
VM_NAME="demo-vm"
STAMP="$(date +%Y%m%d-%H%M%S)"
gcloud compute disks snapshot "$VM_NAME" --project="$PROJECT_ID" --zone="$ZONE" --snapshot-names="pre-release-$STAMP"
gcloud compute instances describe "$VM_NAME" --project="$PROJECT_ID" --zone="$ZONE" --format='yaml(name,machineType,networkInterfaces,tags,labels,metadata)' > "$HOME/gcp-release-config-$STAMP.yaml"

常见问题(FAQ)

小白学习 GCP 要先买服务器吗?

不用。先建项目和预算提醒,再开一台小规格 VM 练手即可。

GCP的优势适合个人网站吗?

适合,但要先估算流量和费用,配置自动关机、备份与监控。

不会 gcloud 能不能用 GCP?

可以。先用网页控制台熟悉流程,再逐步学习 gcloud 提高效率。

SSH 登录失败常见原因是什么?

多为防火墙端口、密钥、账号权限或 VM 状态异常,按顺序排查。

不想自己折腾 GCP?我们提供云平台代维护、上云迁移与账单代付服务,一对一技术支持。

查看代维服务 →

发表评论