K8s 在完整 CI/CD 流程里的作用

GitLab CI → Docker 镜像 → 部署开发环境 → 接口自动化测试

一、不用 K8s vs 用 K8s

现在简单版(无 K8s)

GitLab CI → 构建 Docker 镜像 → SSH 登录服务器,docker run 手动启动容器问题:

  • 机器少还行,多了管不过来
  • 挂了不会自动重启
  • 不能自动扩容
  • 环境(开发 / 测试 / 生产)切换麻烦

用K8s 之后

GitLab CI → 构建 Docker 镜像 → 推镜像仓库 → K8s 自动拉取、部署、调度 SSH 手动操作全部消失,全自动化


二、K8s 在你完整 CI/CD 流程里的位置

完整带 K8s 的流水线,对应你们公司真实部署后做接口自动化:

plaintext

复制代码
本地git push
    ↓
【CI阶段】
构建 → 单元测试 → 打包Docker镜像 → 推送镜像仓库
    ↓
【CD阶段】
K8s部署到 开发环境(Namespace)
    ↓
接口自动化测试(测开发环境K8s里的服务)
    ↓
测试通过 → K8s部署到测试/预发/生产环境

三、K8s 在流程中具体做什么?5 个核心作用

1. 代替 SSH 手动部署

原来:CI 里写 ssh 命令远程 docker run

现在:CI 只需要发一条指令 kubectl apply,K8s 自动部署

2. 环境隔离(开发 / 测试 / 生产)

用 Namespace 区分:

  • dev-ns:开发环境
  • test-ns:测试环境
  • prod-ns:生产环境一键切换部署到不同环境,不用改服务器 IP

3. 自愈能力

容器挂了、节点宕机 → K8s 自动重启、自动迁移,不用人管

4. 扩缩容、灰度发布

流量大自动多启动几个 Pod;新版本先部署一部分,验证没问题全量发布

5. 统一管理 Nginx(Ingress)

K8s 里用 Ingress-Nginx,统一做反向代理、域名、HTTPS,不用在每台服务器单独装 Nginx


四、Docker、Nginx、K8s 三者分工

  • Docker:打包应用成镜像(盒子)
  • K8s:调度、运行、管理这些盒子(容器编排)
  • Nginx:K8s 里的 Ingress,统一流量入口、反向代理

简单比喻:

  • Docker = 集装箱
  • K8s = 港口调度中心(管集装箱放哪、坏了换、加箱子)
  • Nginx = 港口大门,负责接待访客

五、总结

Docker 用于应用容器化打包;K8s 作为容器编排平台,实现自动化部署、环境隔离、自愈、扩缩容;Nginx 作为反向代理提供统一访问入口。在 CI/CD 流程中,GitLab CI 构建镜像后,通过 K8s 将应用自动部署到开发环境,再执行接口自动化测试,验证通过后发布至生产环境。

相关推荐
wzq11_6661 小时前
Kubernetes集群——存储管理
云原生·容器·kubernetes
孔令飞1 小时前
企业智能化升级:智能体平台设计和实现
云原生·go·ai编程
分布式存储与RustFS18 小时前
镜像仓库的层别堆本地盘:用 RustFS 给 Docker Registry 当 S3 后端
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
闲云自留地1 天前
K8s 的记忆大脑!ETCD 集群部署、etcdctl 命令与备份恢复全通关
容器·kubernetes·etcd
weirong1 天前
Operator 上生产前补的 6 件事,和 5 件我明确不做的
kubernetes
孙克旭_1 天前
k8s基础组件与创建资源
运维·docker·容器·kubernetes
孙克旭_1 天前
云原生基础之Containerd容器运行时
运维·云原生
分布式存储与RustFS1 天前
RustFS 自建对象存储实战目录:110 篇按场景分类(持续更新)
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
java_logo2 天前
Docker 部署 EmulatorJS:轻松搭建浏览器复古游戏平台
游戏·docker·容器·复古游戏·轩辕镜像·emulatorjs·红白机
吴声子夜歌2 天前
Kubernetes权威指南——网络原理(一)
网络·容器·kubernetes