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

相关推荐
川石课堂软件测试40 分钟前
涨薪技术|0到1学会性能测试第8课-Analysis分析图
服务器·数据库·python·sql·jmeter·mysql·容器
7177771 小时前
国内 Docker 镜像仓库推荐:Gitee 与主流方案对比及选型指南
docker·容器·gitee
weixin_437961922 小时前
Docker安装(windows)
windows·docker·容器
承渊政道2 小时前
极空间部署Portainer实战:Docker Socket、9000端口、容器管理与固定地址访问
运维·docker·容器·内网穿透·cpolar·portainer
Orchestrator_me2 小时前
k8s网络与应用
网络·python·kubernetes
.冰块.2 小时前
VMware+Ubuntu24.04 kubeadm 部署 K8s 1.30.2 三节点集群
运维·云原生·容器·kubernetes·k8s·容器编排
有为少年2 小时前
容器内存显示 100%、进程莫名被 Killed 解决方案
机器学习·容器·模型训练·模型推理
川石课堂软件测试3 小时前
JMeter异步接口测试实战
数据库·python·jmeter·mysql·kubernetes·测试用例·prometheus
禁默3 小时前
玩客云部署EasyVoice实战:HiNas、Docker、ARMv7、9001与固定地址访问(1)
docker·容器·语音识别·cpolar
fengkai45453 小时前
2、Kubernetes 介绍+安装+卸载
运维·容器·kubernetes