GCP K8S 部署服务
全程在 GCP(Google Cloud Platform,谷歌云平台)控制台网页操作。不需要 YAML,不需要终端。
前提:已有 GKE(Google Kubernetes Engine,谷歌 Kubernetes 引擎)集群,镜像已推送到 Artifact Registry(谷歌构件仓库)。
1. 进入工作区
这是每次操作的第一步,也是最容易懵的一步。刚打开 GCP 控制台,页面信息量很大,跟着下面走就行。
1.1 打开控制台并登录
浏览器访问 https://console.cloud.google.com。
如果你还没有 Google 账号,需要先注册一个。如果公司用的是 Google Workspace(企业邮箱),用公司邮箱登录。登录后会进入 GCP 控制台首页。
第一次进入看到的是概览仪表盘,上面有项目信息、资源用量等卡片。不用管这些,直接看下一步。
1.2 选择项目
GCP 里所有资源(集群、镜像、虚拟机)都属于某个项目。项目选错了,后面什么都看不到。
看页面最左上角,Google Cloud 标志的右边,有一个下拉选择器。长这样:
这就是项目选择器。它显示的是当前选中的项目名称。点那个下拉箭头,会弹出一个面板:
✕
面板分几个区域:
- 顶部搜索框:项目多了可以直接搜
- 已加星标:你常用的项目,方便快速切换
- 全部项目:你(或公司)所有有权限访问的项目
点击你要操作的那个项目。选中后面板关闭,左上角会变成你选的项目名。
1.3 进入 Kubernetes Engine
GCP 的功能非常多,全都通过左侧导航菜单来访问。
看页面左侧,有一条竖直的导航栏。如果导航栏是收起来的(只显示一排小图标,没有文字),点左上角的 ☰ 三条横线图标(汉堡菜单)展开它。
展开后,菜单按功能分类排列,从上到下可以滚动。往下翻,找到 「Kubernetes Engine」:
一般在菜单中下部,Compute Engine 和 Cloud Storage 的附近。
点击「Kubernetes Engine」。页面会跳到 GKE 的集群列表页。
1.4 选择集群
进入 GKE 后,默认看到的是 「Clusters(集群)」页面。这里列出了当前项目下所有的 GKE 集群。
每个集群一行,显示的信息:
| 集群 | 位置 | 节点数 | 状态 |
|---|---|---|---|
| my-cluster-1 | asia-east1-a | 3 | ✅ 正常 |
| staging-cluster | us-central1-a | 2 | ✅ 正常 |
| prod-cluster | asia-east1-a | 5 | ✅ 正常 |
- Name(名称):集群的名字,创建集群时自己起的
- Location(位置):机房所在地,如
asia-east1= 台湾,us-central1= 美国中部 - Total size(节点数):集群有几台机器在跑
- Status(状态):绿色 ✅ = 正常运行
点击你要操作的那个集群的名称(蓝色的链接),就进入了这个集群的详情页。
1.5 了解 GKE 子菜单
进入集群详情页后,注意左侧子菜单变了。原来的主导航菜单旁边,出现了 GKE 专属的子菜单:
这几个入口的含义:
- Workloads(工作负载):管理 Deployment(你的程序)。创建、更新、查看日志、扩缩容都在这里
- Services & Ingress:管理 Service(网络暴露)和 Ingress(域名入口)
- Nodes(节点):查看集群的机器节点状态
后面的操作主要在这三个地方来回切换。
2. 部署后端
- GCP-K8s-部署Deployment — 创建 Deployment 和暴露 Service
3. 部署前端
前端部署流程和 2.部署后端 基本相同。这里只列出差异点,重复的步骤不再赘述。
前端 Nginx 默认监听 80,端口和协议填 80 / TCP。
4. 配置 Ingress
Ingress 提供统一的域名入口,按 URL 路径把请求分给前后端 Service。
- GCP-K8s-部署Ingress.md — UI 操作版 Ingress 完整配置
5. 日常操作
| 操作 | 在哪里做 |
|---|---|
| 查看 Pod 运行状态 | 工作负载(Workloads)列表,行颜色绿色 = 正常,红色/橙色 = 异常 |
| 查看 Pod 日志 | 工作负载(Workloads)→ 点进名称 → 点进某个 Pod → Logs 标签页 |
| 更新代码 | 推送新镜像(docker push 新 tag)→ 去 Deployment 详情 YAML 里改 image 为新版本号 → 保存。GKE 自动滚动更新,逐个替换 Pod,不中断服务 |
| 扩容 / 缩容 | 工作负载(Workloads)→ 点进名称 → Actions → Scale → 填新副本数 |
| 回滚 | 工作负载(Workloads)→ 点进名称 → Actions → Rollback → 选历史版本 |
| 删除 Deployment | 工作负载(Workloads)列表 → 勾选 → 顶部删除图标。同时会自动删除关联的 Pod |
| 删除 Service | Services & Ingress → Services 标签 → 勾选 → 删除 |
| 删除 Ingress | Services & Ingress → Ingress 标签 → 勾选 → 删除。⚠️ 会同时删除 GCP Load Balancer,IP 会被释放。如果有 DNS 指向这个 IP,记得同步更新 |
6. 常见问题
Q1:Pod 一直在 红色/橙色 状态,怎么排查?
进入工作负载(Workloads)→ 点进出问题的 Deployment → 点进出问题的 Pod:
- 先看 Events(事件) 标签页 — 如果看到
ImagePullBackOff,说明镜像拉不下来,检查镜像名拼写是否正确、是否已经 push - 再看 Logs(日志) 标签页 — 看程序是不是启动就崩溃了,报什么错
Q2:Ingress 超过 15 分钟还不出现 IP?
按顺序排查:
- 确认 Service 类型选的是 Node Port 而不是 ClusterIP(去 Services 列表确认)。如果是 ClusterIP,删除 Service 重建
- 如果用了 ManagedCertificate,状态显示「Provisioning」是正常的——DNS 还没指向 LB IP,证书验证要等 IP 出来配了 DNS 后才能完成。先等 IP 出来
Q3:访问域名返回 502?
502 = GCP Load Balancer 联系到了 Ingress,但 Ingress 联系不到 Pod。按顺序排查:
- 确认 Service 类型是 Node Port
- 确认 Service 的 Selector 是否和 Deployment 的 Labels 一致(去 Services 详情页看 Selector,去 Deployment 详情页看 Labels,一个字母都不能差)
- 确认 Pod 状态是 Running 且 Readiness 通过(Deployments 列表看 Pod 状态)
- 确认 Ingress 路由规则里填的端口号,和容器监听的端口号是否一致
Q4:为什么 Service 类型必须是 Node Port?
ClusterIP 只在集群内部网络可达。GCP 的外部 Load Balancer 不在集群内部,它通过集群节点的端口转发流量到 Pod。所以需要 Node Port 在节点上开一个端口给它用。
相关文档
- GCP K8s 部署服务 — 入口导航、项目选择、集群选择
- GCP-K8s-部署Deployment — 创建 Deployment 和暴露 Service
- GCP-K8s-部署Ingress.md — UI 操作版 Ingress 完整配置