GCP K8s 部署服务

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 标志的右边,有一个下拉选择器。长这样:


我的项目-123456

这就是项目选择器。它显示的是当前选中的项目名称。点那个下拉箭头,会弹出一个面板:

选择项目
⭐ 已加星标的项目
我的项目-123456
📁 全部项目
项目A
项目B
项目C

面板分几个区域:

  • 顶部搜索框:项目多了可以直接搜
  • 已加星标:你常用的项目,方便快速切换
  • 全部项目:你(或公司)所有有权限访问的项目

点击你要操作的那个项目。选中后面板关闭,左上角会变成你选的项目名。

⚠️ 如果你不确定该选哪个项目,问带你上手的同事。选了错误的项目,进了 GKE 也看不到集群——因为集群在别的项目里。

1.3 进入 Kubernetes Engine

GCP 的功能非常多,全都通过左侧导航菜单来访问。

看页面左侧,有一条竖直的导航栏。如果导航栏是收起来的(只显示一排小图标,没有文字),点左上角的 ☰ 三条横线图标(汉堡菜单)展开它。

展开后,菜单按功能分类排列,从上到下可以滚动。往下翻,找到 「Kubernetes Engine」

💰 结算
🔧 IAM 与管理
🛒 Marketplace
💻 Compute Engine
🔷 Kubernetes Engine ← 找这个
🗄️ Cloud Storage

一般在菜单中下部,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(状态):绿色 ✅ = 正常运行

点击你要操作的那个集群的名称(蓝色的链接),就进入了这个集群的详情页。

💡 如果列表是空的,说明这个项目下还没有集群。需要先去创建集群(不在本文范围内,参考 GCP 官方文档或问同事)。

1.5 了解 GKE 子菜单

进入集群详情页后,注意左侧子菜单变了。原来的主导航菜单旁边,出现了 GKE 专属的子菜单:

📋 集群
📦 工作负载(Deployments) ← 部署程序在这里
🔗 Services & Ingress ← 暴露服务在这里
⚙️ Config & Storage
🖥️ Nodes(节点)

这几个入口的含义:

  • Workloads(工作负载):管理 Deployment(你的程序)。创建、更新、查看日志、扩缩容都在这里
  • Services & Ingress:管理 Service(网络暴露)和 Ingress(域名入口)
  • Nodes(节点):查看集群的机器节点状态

后面的操作主要在这三个地方来回切换。

💡 如果你发现左侧子菜单不见了,说明你没有成功进入集群详情页。回到 1.4,确认点击了集群名称。

2. 部署后端


3. 部署前端

前端部署流程和 2.部署后端 基本相同。这里只列出差异点,重复的步骤不再赘述。

前端 Nginx 默认监听 80,端口和协议填 80 / TCP。


4. 配置 Ingress

Ingress 提供统一的域名入口,按 URL 路径把请求分给前后端 Service。


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?

按顺序排查:

  1. 确认 Service 类型选的是 Node Port 而不是 ClusterIP(去 Services 列表确认)。如果是 ClusterIP,删除 Service 重建
  2. 如果用了 ManagedCertificate,状态显示「Provisioning」是正常的——DNS 还没指向 LB IP,证书验证要等 IP 出来配了 DNS 后才能完成。先等 IP 出来

Q3:访问域名返回 502?

502 = GCP Load Balancer 联系到了 Ingress,但 Ingress 联系不到 Pod。按顺序排查:

  1. 确认 Service 类型是 Node Port
  2. 确认 Service 的 Selector 是否和 Deployment 的 Labels 一致(去 Services 详情页看 Selector,去 Deployment 详情页看 Labels,一个字母都不能差)
  3. 确认 Pod 状态是 Running 且 Readiness 通过(Deployments 列表看 Pod 状态)
  4. 确认 Ingress 路由规则里填的端口号,和容器监听的端口号是否一致

Q4:为什么 Service 类型必须是 Node Port?

ClusterIP 只在集群内部网络可达。GCP 的外部 Load Balancer 不在集群内部,它通过集群节点的端口转发流量到 Pod。所以需要 Node Port 在节点上开一个端口给它用。


相关文档

本文由 上传。


如果您喜欢这篇文章,请点击链接 GCP K8s 部署服务 查看原文。


您也可以直接访问:https://www.fanfine.cn/blog/317

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇