跳到正文Lab学后总结 · Jimmy Huang's BlogLab学后总结
本页目录· 49 条
1. 一句话总结这个 Lab
这个 Lab 主要教你:如何从 Google Skills Academy 进入临时 GCP 实验环境,用 Console 和 Cloud Shell 创建云端虚拟机,并在 VM 上运行 NGINX / FastAPI 服务,最后用浏览器或 Postman 进行访问和测试。
2. 这个 Lab 实际做了什么
按照当前可读取到的材料,这个 Lab 大致是在带你完成一次“从零进入 Google Cloud,并让一台云端虚拟机提供 Web/API 服务”的流程。
2.1 Task 0:访问 Google Skills Academy 并启动实验环境
材料显示,你需要先进入 Google Skills Academy,搜索类似 Create virtual machine 的实验,然后点击 Start Lab 启动实验环境。
这一步的重点不是写代码,而是获得一个临时的 Google Cloud 实验账号和实验项目。实验平台通常会给你一组临时用户名、密码和 Google Cloud Console 入口。
你需要使用 Private Browser / Incognito Window 登录 Google Cloud Console,而不是直接使用自己的个人 Google 账号。
为什么要这样做?
因为 Lab 环境通常是临时的、受控的、带有实验额度或预配置权限的环境。如果你用自己的个人账号登录,可能会出现两个问题:
实验资源建在你自己的账号或项目里,可能产生真实费用;
你的个人账号权限、项目和实验账号混在一起,容易导致操作对象错误。
所以,Task 0 的本质是:
先进入“学校/实验平台给你的临时云环境”,确保后面创建的 VM、网络和服务都在 Lab 项目里,而不是你的私人 GCP 项目里。
2.2 Task 1:Create a VM
材料中显示了 Task 1: Create a VM,但截图后的具体参数没有完整以文字形式显示。
可以确定的是,这一步是在 Google Cloud 中创建一台 Compute Engine VM instance。
你可以把 VM 理解成:
一台运行在 Google 数据中心里的远程 Linux 电脑。
创建 VM 后,你通常会得到:
VM 是后续运行 NGINX 和 FastAPI 的基础。如果没有 VM,就没有地方安装 Web Server,也没有地方运行后端 API。
2.3 使用 Google Cloud Console 和 Cloud Shell / gcloud
材料的 Overview 提到,你会使用两种方式创建或管理 VM:
Google Cloud Console
Cloud Shell 中的 gcloud 命令行
这两种方式做的是同一类事情:管理 Google Cloud 资源。
材料没有显示完整命令,所以这里不写具体命令参数,避免编造。
2.4 在 VM 上创建 NGINX Web Server
Overview 明确提到:你会在虚拟机上创建 NGINX Web Server。
NGINX 是一个常见的 Web Server。初学者可以先这样理解:
NGINX 就像云端机器门口的“前台接待员”,负责接收 HTTP 请求,然后返回网页内容,或者把请求转交给后面的应用程序。
在这个 Lab 中,NGINX 的作用大概率是让你验证:
材料没有显示具体是否修改了 NGINX 配置文件、是否设置反向代理、是否只使用默认欢迎页,所以这些细节标注为 材料未显示/不确定。
2.5 在 VM 上部署 FastAPI 应用程序
Overview 也明确提到:你会部署 FastAPI application。
FastAPI 是一个 Python Web API 框架,常用于写后端接口。比如:
/ 返回欢迎信息;
/items 返回商品数据;
/predict 接收图片并返回模型预测结果;
/users 处理用户相关数据。
如果 NGINX 更像“Web 请求入口”,那 FastAPI 更像“真正处理业务逻辑的后端服务”。
让你从“只会创建 VM”进一步走到“能在 VM 上运行一个真实后端应用”。
材料没有显示具体 FastAPI 代码、端口、启动命令或是否使用 Uvicorn,所以这些实现细节为 材料未显示/不确定。
2.6 使用 Postman 测试服务
Postman 是一个 API 测试工具。它的作用是帮你模拟客户端请求,比如:
浏览器主要适合测试简单的 GET 页面,而 Postman 更适合测试 API。
云端 VM 上跑着服务,外部客户端可以通过 HTTP 请求访问它;Postman 就是用来模拟和检查这些请求的工具。
3. 每个核心组件有什么用
下面用初学者能理解的方式,把这个 Lab 里出现的重要组件拆开讲。
3.1 Google Skills Academy
Google Skills Academy 是一个学习和实验平台,用来启动 Google Cloud 相关的实践 Lab。
它负责给你提供实验入口、实验说明、临时账号和临时 Google Cloud 环境。
你可能需要自己准备 Google Cloud 账号、项目、Billing 和权限,容易产生费用,也不一定能完成课程指定的实验检查。
Google Skills Academy 是整个 Lab 的起点。你从这里进入 Google Cloud Console,然后在 GCP 里创建 VM、运行服务、测试 API。
3.2 Google Cloud Console
Google Cloud Console 是 Google Cloud 的网页管理后台。
你可以在里面创建 VM、查看 Compute Engine、查看 IP 地址、打开 SSH、检查资源是否创建成功。
你就只能用命令行操作 GCP,对初学者来说不直观,也更容易输错命令。
Console 是“图形化入口”。它管理的是 Google Cloud 项目里的资源,例如 VM、网络、防火墙等。
3.3 Cloud Shell
Cloud Shell 是 Google Cloud 提供的浏览器内置命令行环境。
你不用在自己电脑上安装 Google Cloud SDK,也可以直接在浏览器里运行 gcloud 命令。
材料中提到你会在 Cloud Shell 中使用 gcloud 命令创建或管理 VM。
你仍然可以用 Console 点按钮完成一部分任务,但你会少学一个非常重要的 DevOps 技能:用命令行自动化管理云资源。
Cloud Shell 是你和 GCP 资源之间的“命令行控制台”。它可以通过 gcloud 操作 VM、网络等资源。
3.4 gcloud 命令行工具
gcloud 是 Google Cloud 的官方命令行工具。
它可以用命令创建 VM、查看实例列表、修改配置、连接服务等。
你会更依赖网页点击操作。对于真实项目和 DevOps 来说,只会点 Console 不够,因为实际工作经常需要脚本化、自动化和重复部署。
gcloud 通常在 Cloud Shell 里运行,用来控制 GCP 项目里的 Compute Engine、网络、防火墙等服务。
3.5 Compute Engine VM Instance
Compute Engine VM 是 Google Cloud 上的虚拟机。
它是运行 NGINX 和 FastAPI 的地方。
没有 VM,就没有“服务器”。你就无法在云端安装 Web Server,也无法让外部通过 IP 访问你的应用。
VM 位于 Google Cloud 项目和 VPC 网络中,可以通过 Console / Cloud Shell 创建和管理。NGINX 与 FastAPI 运行在 VM 上,外部请求通过 IP 和防火墙规则访问 VM 上的服务。
3.6 SSH
通常你会通过 SSH 登录到 VM,然后在 VM 里面安装软件、启动服务、查看状态。
你虽然能创建 VM,但很难进入 VM 内部配置 NGINX 或 FastAPI。
Console 里常见的 “SSH” 按钮,实际上就是帮你打开一个远程终端,让你进入 VM 里面操作。
3.7 External IP 和 Internal IP
External IP 是公网地址。别人可以通过互联网访问这个地址,前提是防火墙允许。
Internal IP 是 Google Cloud VPC 内部地址,通常只给同一个 VPC 内的资源互相通信使用。
如果你要在浏览器或 Postman 里访问 VM 上的 NGINX/FastAPI,通常会用 External IP。
IP 是访问 VM 的“门牌号”。但有门牌号不等于一定能进去,还要看防火墙是否允许。
3.8 Firewall Rule
Firewall Rule 是 Google Cloud 网络层面的访问控制规则。
材料可读取文字中没有直接显示防火墙规则的具体配置,但如果你要从浏览器或 Postman 访问 VM 上的 Web/API 服务,通常需要相关防火墙规则允许 HTTP、HTTPS 或应用端口流量进入。
即使 VM 有 External IP,外部请求也可能被阻止。
浏览器访问 http://外部IP 失败;
Postman 请求超时;
VM 里面服务明明启动了,但外部访问不到。
Firewall Rule 是 VM 门口的“保安”。External IP 是门牌号,Firewall Rule 决定别人能不能通过这个门进来。
3.9 NGINX
NGINX 是一个常见的 Web Server,也可以作为反向代理服务器。
Overview 明确提到你会在 VM 上创建 NGINX Web Server。它可以用来接收 HTTP 请求并返回网页内容。
你仍然可以直接运行 FastAPI,但你会少理解一层真实项目中很常见的 Web Server / Reverse Proxy 结构。
NGINX 运行在 VM 上。外部用户通过 External IP 发请求,请求进入 VM 后可以由 NGINX 接收。如果配置了反向代理,NGINX 还可以把请求转发给 FastAPI。
3.10 FastAPI
FastAPI 是一个 Python 后端 API 框架。
Overview 明确提到你会部署 FastAPI application。它负责处理 API 请求并返回数据。
你可能只能看到 NGINX 的静态页面,无法体验真实后端 API 的请求和响应。
FastAPI 运行在 VM 上。它可能直接对外暴露端口,也可能藏在 NGINX 后面,由 NGINX 转发请求。具体方式材料未显示。
3.11 Postman
Goal 中提到会使用 Postman。它用来向你的云端服务发送请求,并查看返回结果。
你仍然可以用浏览器测试简单页面,但对于 POST 请求、JSON body、Headers、API response 的测试就不方便。
Postman 是外部客户端。它从你的电脑发请求到 VM 的 External IP 或 API endpoint,用来验证 NGINX/FastAPI 是否正常工作。
4. 用初学者类比解释
你可以把这个 Lab 想象成:你在 Google Cloud 里租了一间“远程办公室”,然后让这间办公室对外提供服务。
4.1 Google Skills Academy:学校前台
Google Skills Academy 就像学校前台。
今天做哪个实验;
给你临时门禁卡;
给你临时账号和密码;
告诉你从哪里进入实验场地。
你不要用自己的私人门禁卡进去,因为那样可能走错楼、进错房间,甚至产生自己的费用。
4.2 Google Cloud Console:物业管理大厅
Google Cloud Console 就像一个小区或办公楼的物业管理大厅。
开一间房;
看房间地址;
设置门禁;
查看电力、网络和资源。
对应到云里,就是创建 VM、查看 IP、配置网络、检查资源状态。
4.3 Cloud Shell:物业给你的维修工具箱
你不用自己带工具,打开网页就能使用里面的命令行工具。
gcloud 就像工具箱里的万能扳手,可以用命令帮你创建和管理云资源。
4.4 VM:你租到的办公室房间
NGINX 前台;
FastAPI 服务员;
Python 环境;
应用代码;
日志文件。
如果没有 VM,就相当于你只有物业账号,但没有真正的房间可以办公。
4.5 External IP:办公室门牌号
External IP 就是别人从大街上能看到的门牌号。
4.6 Firewall Rule:保安和门禁规则
谁能进;
从哪个门进;
能不能访问 80 端口;
能不能访问 8000 端口;
SSH 能不能进。
所以访问失败时,不一定是服务坏了,也可能是保安没放行。
4.7 NGINX:前台接待员
NGINX 可以直接把网页交给他,也可以说:“这个请求要找后面的 FastAPI 处理。”
4.8 FastAPI:真正处理业务的人
它不只是给你一张静态网页,而是可以处理逻辑,例如:
接收数据;
返回 JSON;
做计算;
连接数据库;
调用模型。
4.9 Postman:模拟客户来敲门
GET /
POST /login
POST /predict
GET /items
服务器有没有回应;
状态码是多少;
返回内容是什么;
请求哪里可能写错了。
5. 重点区分容易混淆的概念
5.1 Google Skills Academy 和 Google Cloud Console 的区别
Google Skills Academy 是实验平台。
Google Cloud Console 是云资源管理后台。
5.2 Lab 临时账号 和 个人 Google 账号 的区别
这个 Lab 明确提示使用 Private Browser 登录,原因就是避免你的个人账号和实验账号混在一起。
Lab 里创建资源时,应该使用实验账号和实验项目,不要误用自己的个人 GCP 项目。
5.3 Cloud Console 和 Cloud Shell 的区别
Console 更适合初学者看资源状态;
Cloud Shell 更适合写命令和自动化。
5.4 VM 和 Cloud Shell 的区别
Cloud Shell 是 Google 提供给你的浏览器命令行工具。
你在 Cloud Shell 里输入命令,不等于你已经进入 VM 里面。
如果你要在 VM 里安装 NGINX 或运行 FastAPI,通常需要先 SSH 到 VM。
5.5 External IP 和 Internal IP 的区别
External IP 是公网地址,外部浏览器/Postman 可以尝试访问。
Internal IP 是云内部地址,通常只能在同一个 VPC 内部访问。
你在自己电脑上用 Postman 访问时,一般需要 External IP。
5.6 IP 地址 和 Firewall Rule 的区别
有 External IP 只是说明“找得到这台机器”。
Firewall Rule 允许访问,才说明“能进门”。
服务是否启动;
端口是否正确;
防火墙是否放行;
访问的是 External IP 还是 Internal IP。
5.7 NGINX 和 FastAPI 的区别
NGINX 是 Web Server / 反向代理。
NGINX 更偏“接请求、转请求、返回静态内容”。
FastAPI 更偏“处理业务逻辑、返回 JSON 数据”。
但本 Lab 是否配置了这种反向代理关系,材料未显示,所以不能确定。
5.8 Browser 和 Postman 的区别
5.9 谁能访问谁?
根据材料可读取信息,可以确定的是:Lab 会创建 VM,并让 NGINX / FastAPI 在 VM 上运行或部署。
你可以通过 Console / Cloud Shell 管理 VM;
你通常通过 SSH 进入 VM;
浏览器/Postman 想访问 VM 上的服务,需要 External IP 和防火墙允许;
外部客户端通常不能直接访问 Internal IP;
如果防火墙没放行,即使服务运行了,外部也访问不到。
5.10 哪个是入口?哪个是服务?哪个是权限控制?哪个是网络控制?
6. 这个 Lab 有什么实际用途
这个 Lab 的实际价值很大,因为它对应真实后端开发和云部署的基础流程。
6.1 帮你理解“云服务器”到底是什么
很多初学者一开始听到 cloud、server、VM 会觉得很抽象。
创建 VM;
登录 VM;
安装 Web Server;
部署 API;
从外部访问它。
云服务器不是玄学,它本质上就是运行在云厂商数据中心里的远程电脑。
6.2 帮你理解后端应用如何部署到云端
本地运行 FastAPI 只代表你自己电脑能访问。
服务运行在远程机器;
通过 IP 访问;
需要考虑端口;
需要考虑防火墙;
需要考虑服务是否持续运行;
需要考虑 NGINX 或反向代理。
6.3 帮你建立 DevOps 基础
Console 图形化操作;
Cloud Shell 命令行;
gcloud;
VM;
Web Server;
API 测试。
这些都是 DevOps、Cloud Engineering、Backend Deployment 的基础。
以后你学 Kubernetes、Docker、CI/CD、Terraform、Ansible 时,这些概念都会反复出现。
6.4 帮你理解“服务访问失败”应该怎么排查
VM 是否创建成功?
VM 是否开机?
服务是否安装?
服务是否正在运行?
端口是否正确?
防火墙是否允许?
访问的是 External IP 还是 Internal IP?
Postman 请求路径是否正确?
6.5 对真实项目的意义
个人项目后端;
课程 Assignment API;
简单机器学习推理接口;
企业内部工具;
测试环境服务器;
Web 应用原型;
DevOps 实验环境。
虽然生产环境可能会使用 Cloud Run、Kubernetes、Load Balancer、Managed Instance Group、Terraform 等更高级工具,但最底层的理解仍然离不开这个 Lab:
一台云端机器 + 网络访问 + Web Server + 后端应用 + API 测试。
7. 最后画一张生动形象的示意图
下面这张图用 Mermaid 画出这个 Lab 的核心结构。
它不是截图,不会生成图片文件;只是 Markdown 里的文本图。
最后你应该带走的核心理解
完成这个 Lab 后,你最应该记住的不是某个按钮在哪里,而是这条主线:
云平台负责提供机器和网络,VM 负责运行程序,Web Server / API 框架负责处理请求,Postman 负责验证服务是否真的能被访问。
用户请求 → NGINX → FastAPI → 返回 JSON/业务结果
flowchart TD
titleNode["Lab Week 2:从 Google Skills Academy 到 GCP VM Web/API 服务"]
subgraph LabEntry["① 实验入口:Google Skills Academy"]
GSA["Google Skills Academy<br/>搜索 Lab / Start Lab"]
LabAccount["临时 Lab 账号<br/>用户名 + 密码 + 临时项目"]
Personal["个人 Google 账号<br/>不建议用于 Lab"]
end
subgraph GCP["② Google Cloud 实验项目"]
Console["Google Cloud Console<br/>网页图形界面"]
CloudShell["Cloud Shell<br/>浏览器里的命令行"]
Gcloud["gcloud CLI<br/>用命令管理资源"]
end
subgraph Network["③ 网络访问控制"]
VPC["VPC 网络<br/>云里的内部网络"]
Firewall["Firewall Rule<br/>门卫 / 保安"]
ExternalIP["External IP<br/>公网门牌号"]
InternalIP["Internal IP<br/>云内部地址"]
end
subgraph VMBox["④ Compute Engine VM:云端 Linux 电脑"]
VM["VM Instance<br/>运行服务的服务器"]
SSH["SSH<br/>进入 VM 操作"]
NGINX["NGINX Web Server<br/>接收 HTTP 请求"]
FastAPI["FastAPI App<br/>处理 API 业务逻辑"]
end
subgraph Client["⑤ 外部客户端"]
Browser["浏览器<br/>适合看网页"]
Postman["Postman<br/>适合测试 API"]
end
titleNode --> GSA
GSA --> LabAccount
Personal -. "❌ 不要混用个人账号做 Lab" .-> Console
LabAccount --> Console
Console -->|"点击创建 / 查看资源"| VM
Console -->|"打开 SSH"| SSH
CloudShell --> Gcloud
Gcloud -->|"命令创建 / 修改 VM"| VM
VM --> VPC
VPC --> InternalIP
VM --> ExternalIP
SSH --> VM
Browser -->|"HTTP 请求:访问 External IP"| ExternalIP
Postman -->|"GET / POST API 请求"| ExternalIP
ExternalIP --> Firewall
Firewall -->|"允许的端口才能进入"| NGINX
NGINX -->|"可能转发请求<br/>具体配置材料未显示"| FastAPI
Browser -. "❌ 不能直接访问 Internal IP" .-> InternalIP
Postman -. "❌ 防火墙未放行时请求会失败" .-> Firewall
Remember["你要记住的核心区别:<br/>1. Skills Academy 是实验入口,不是云资源本身。<br/>2. Console 是图形界面,Cloud Shell / gcloud 是命令行方式。<br/>3. VM 是真正运行 NGINX 和 FastAPI 的云端电脑。<br/>4. External IP 是公网门牌号,Firewall Rule 决定外部能不能进门。<br/>5. NGINX 偏入口/网页服务,FastAPI 偏后端 API 逻辑,Postman 用来测试 API。"]
FastAPI --> Remember
Google Skills Academy 给你临时实验环境
↓
你进入 Google Cloud Console
↓
你创建 Compute Engine VM
↓
你通过 SSH / Cloud Shell / gcloud 管理它
↓
你在 VM 上运行 NGINX 和 FastAPI
↓
浏览器或 Postman 通过 External IP 发请求
↓
Firewall 决定请求能不能进入 VM
↓
NGINX / FastAPI 返回网页或 API 响应