GCP K8S 部署Deployment

GCP K8S 部署Deployment

前提:已完成 GCP K8s 部署指南-进入工作区 中的项目选择、集群选择和子菜单导航。


2. 部署后端

2.1 进入 Workloads 并选择集群和命名空间

左侧子菜单点击 「Workloads(工作负载)」,进入工作负载页面。

页面顶部有工具栏和两个下拉框用于选择集群和命名空间:

工作负载
刷新
部署
删除
集群:my-cluster-1
命名空间:default
重置
保存

名称 状态 类型 Pod 命名空间 集群
负载名 ok Deployment 3/3 命名空间名 集群名
  • 集群:下拉选你要部署到的 GKE(Google Kubernetes Engine,谷歌 Kubernetes 引擎)集群。如果只有一个,默认已选中
  • 命名空间:下拉选命名空间,选择要部署服务的命名空间

选好集群和命名空间后,点击列表上方的 「部署」按钮,开始部署新的服务。


2.2 容器配置

点击「部署」后进入「创建部署作业」表单。第一步是容器配置:

创建部署作业

现有容器映像
从已推送的镜像中选择

新建容器映像
直接输入镜像地址或使用 Docker Hub 公共映像


选择
输入你的映像路径,或从 Artifact Registry(谷歌构件仓库)中选择。你还可以尝试使用官方 nginx 映像 nginx:latest 进行部署。

环境变量


🗑️

初始命令

添加其他容器
继续

表单从上到下的每个区域:

① 修改内容 — 选择镜像来源。已经推送到 Artifact Registry(谷歌构件仓库)的镜像选「现有容器映像」。如果是 Docker Hub 的公共镜像(如 nginx:latest),也可以选这个然后直接在输入框填镜像地址。

② 映像路径 — 点「选择」按钮,右侧滑出抽屉面板:

Artifact Registry
Container Registry


📁 gcr.io
└─ 📁 我的项目-123456
└─ 📁 镜像环境,如 dev
└─ 📁 项目名
└─ 🖼️ hash [dev.5]

取消
选择

抽屉顶部有两个标签页:「Artifact Registry」和「Container Registry」。Container Registry(GCR)已被 Google 关停(2025 年 5 月),现在统一使用 Artifact Registry。先点「Container Registry」,如果里面没有旧镜像,再切到「Artifact Registry」。

在抽屉里:

  • 项目:顶部下拉确认是当前项目。一个账号可能关联多个项目,确保选的是镜像所在的项目
  • 镜像路径树:逐级展开,gcr.io(旧格式,Artifact Registry 仍兼容)→ 项目ID → 环境 → 项目名 → 版本号。新项目可能显示为 {region}-docker.pkg.dev 格式
  • 版本号:最底层叶子节点如 🖼️ hash [dev.5]hash 是旧版存储格式标记,看括号里的 dev.5 才是版本号
  • 点击版本号后点「选择」,抽屉关闭,路径自动填入

③ 环境变量 — 以键值对形式给容器注入配置。比如 APP_ENV = TEST,程序用 os.Getenv("APP_ENV") 读取。不需要的话跳过,不要填无意义的值。

④ 初始命令 — 覆盖容器镜像默认的启动命令。一般留空即可。

⑤ 添加其他容器 — 一个 Pod 里可以跑多个容器(如主程序 + 日志采集 sidecar)。大部分情况一个容器就够了,不用管。

填完后点 「继续」,进入下一步配置。


2.3 配置

继续往下翻到配置区域:

配置
Deployment 是一种配置,用于定义 Kubernetes 部署、管理以及扩缩容器映像的方式。Kubernetes 会确保你系统的配置与这种配置相符。默认情况下,系统会创建三个副本。


标签
使用 Kubernetes 标签来控制为你的节点安排工作负载的方式。标签将应用于此节点池中的所有节点;集群一经创建,便无法更改标签。


配置 YAML
Kubernetes 部署是使用 YAML 文件以声明方式定义的。最佳做法是将这些文件存储在版本控制中,以便你可以持续跟踪一段时间内部署配置的变化。

集群

将在其中创建部署作业的集群。

继续
  • 部署名称:填 backend。* 表示必填。这个名字就是 Deployment 在列表里显示的名字,建议和容器名一致
  • 命名空间:前面选好的值会自动带入,确认一下即可
  • 标签:GCP 根据 Deployment 名称自动生成 app: backend。标签的作用是让 Service 能找到对应的 Pod——后面公开 Service 时 GCP 会自动通过这个标签关联。如果你手动改过标签,公开时要确保 Service 的 Selector 和标签一致
  • 配置 YAML:点「查看 YAML」可以预览 GCP 帮你生成的完整 YAML 内容。初次部署不用管,以后熟悉了可以直接在这里编辑 YAML 来代替填表单
  • 集群:显示当前要部署到的集群名称和机房位置。如果发现集群不对,回到 2.1 重新选择

2.4 公开(可选)

往下翻到「Expose(公开)」区域:

公开(可选)
此操作会创建一项 Kubernetes 服务。服务可让您的部署接收流量,并可以指定部署的公开方式。您以后可以随时从"部署"详情页面公开您的部署。

将部署作为新服务公开

不要勾选。我们习惯先创建 Deployment → 改镜像标签 → 再从 Deployment 详情里单独公开,两步分开更清晰。


2.5 提交部署

翻到表单最底部,点蓝色的 「部署」按钮。

等待部署完成。回到工作负载(Workloads)列表,backend 会出现在列表里,状态短暂显示 「Pending」,几十秒后变成绿色 ✅ 就说明 Pod 启动成功了。

⚠️ 如果一直是红色/橙色:点进 backend → 点进出问题的 Pod → 看 Events(是否镜像拉不下来)→ 看 Logs(是否程序启动就崩溃)。

2.6 修改镜像标签

部署创建成功后,运行的镜像默认带上 Artifact Registry 自动生成的 sha256(安全哈希算法,用作镜像唯一标识)。需要把它改成你指定的版本号(如 dev.5)。

在工作负载(Workloads)列表中,点击 backend 这一行,进入 Deployment 详情页。

在详情页顶部,找到 「YAML」 标签页(或「Edit」按钮,视控制台版本而定)。点进去会看到当前 Deployment 的完整配置。

找到 spec.template.spec.containers 这一段,往下找 image 字段。它长这样:

spec:
template:
spec:
containers:
- env:
image: gcr.io/项目ID/backend@sha256:abc123def456...

@sha256:abc123def456... 这个摘要值删掉,换成你的版本号:

- image: gcr.io/项目ID/backend:dev.5

改完后点底部的 「Save(保存)」。GKE 检测到变更,自动触发滚动更新——一个一个替换旧 Pod,服务不会中断。

dev.5 是你给镜像打的 tag(标签/版本号)。每次 docker builddocker tag 给它一个版本号,常见的命名:v1.0.0dev.5latest

等滚动更新完成(列表状态回到绿色),继续下一步。


2.7 公开 Service

Deployment 创建了 Pod,但外界还访问不到。需要创建一个 Service 暴露端口。

Deployment 详情页,点顶部右侧的 「Actions(操作)」下拉按钮 → 选 「Expose(公开)」

弹出「公开部署」表单:

公开 Deployment
公开 Deployment 时,系统会创建一个 Kubernetes Service。Service 可让 Deployment 接收流量并指定 Deployment 的公开方式。
端口映射





查看 YAML
公开
* 必填字段
  • 端口 1 / 目标端口 1:后端 Gin 程序填它的监听端口(如 gin.Run(":8080") 就填 8080),前端 Nginx 填 80。一般两个端口填一样的值。一个 Service 通常只暴露一个端口,表单里「端口 1」的 1 是编号,不用管
  • 服务类型必须选「节点端口」(Node Port)。如果选「集群 IP」(ClusterIP),服务只在集群内部通信,外部 GCP Load Balancer 访问不到。节点端口在集群节点上开一个端口,外部 LB(Load Balancer,负载均衡器)通过它把流量转进 Pod
  • 服务名称:建议 {Deployment名}-service,如 backend-service。方便在列表里一眼认出和哪个 Deployment 关联
  • 查看 YAML:点这个可以预览 Service 的 YAML 内容,初次部署不用管

相关文档

「公开」 按钮完成。

本文由 上传。


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


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

暂无评论

发送评论 编辑评论


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