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 applyK8s 自动部署

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 将应用自动部署到开发环境,再执行接口自动化测试,验证通过后发布至生产环境。

相关推荐
阿里云云原生9 小时前
不改代码也能监控 AI Agent?揭秘 OBI 如何在内核层精准解析 GenAI 语义流量
云原生·agent
众人皆醒我独醉10 小时前
Pod 一直 Terminating,死活删不掉?三个凶手,每一个你都意想不到
面试·kubernetes
飞翔沫沫情11 小时前
K8s Alloy 采集 Pod 控制台日志
云原生·容器·kubernetes
潮起鲸落入海17 小时前
Kubernetes Metric Server, Quota and Limits
容器·kubernetes
梦想的颜色17 小时前
Docker 容器化本地部署 Claude Code 完整硬核教程|隔离沙盒 + 国产模型直连 + 持久化 Skill
运维·容器·ai 工程化·沙盒隔离·docker 本地部署·claude code硬核实战·国内国产模型接入
摇滚侠17 小时前
云原生 Java 架构师的第一课 K8s+Docker+KubeSphere+DevOps 19-25
java·云原生·kubernetes
渣渣盟17 小时前
Docker 运维常用命令手册(含扩容与实战)
运维·docker·容器
我叫张小白。19 小时前
一个微服务电商+社区项目(瓷韵app)的技术深度复盘
docker·微服务·云原生·架构
咕噜咕噜的猪大侠19 小时前
《K8s 核心知识梳理:Deployment 滚动更新、JobCronJob、DaemonSet 和 Service》
云原生·容器·kubernetes
虚心的百褶裙19 小时前
远程调用服务架构设计及zookeeper技术详解(下篇)
分布式·zookeeper·云原生