使用 Kind 和 k6 对 http-echo 进行 CI 负载测试

发布: (2026年1月10日 GMT+8 11:48)
4 分钟阅读
原文: Dev.to

Source: Dev.to

CI Load Test for http‑echo 使用 Kind 和 k6 的封面图像

解决方案概述

  • Kind – 创建一个多节点 Kubernetes 集群,以实现真实的测试环境。
  • NGINX Ingress Controller – 根据主机名将 HTTP 请求路由到不同的服务。
  • k6 – 执行负载测试,提供详细的指标和性能分析。

架构

┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
│   k6 Load Test  │───▶│  NGINX Ingress   │───▶│  http‑echo apps │
│                 │    │   Controller     │    │                 │
│ - foo.localhost │    │                  │    │ - foo service   │
│ - bar.localhost │    │  (Port 80/443)   │    │ - bar service   │
└─────────────────┘    └──────────────────┘    └─────────────────┘


                       ┌──────────────────┐
                       │   Kind Cluster   │
                       │                  │
                       │ - Control plane  │
                       │ - Worker node    │
                       └──────────────────┘

项目结构

kind-http-echo-test/
├── README.md               # This documentation
├── kind-config.yaml        # Kind cluster configuration
├── k8s/                    # Kubernetes manifests
│   ├── http-echo-foo.yaml  # Foo service deployment
│   └── http-echo-bar.yaml  # Bar service deployment
└── loadtest/               # Load‑testing scripts
    └── load-test.js        # k6 load‑test script

前置条件

确保在 CI 环境中安装以下工具:

CI 工作流

该项目旨在用于在每次对默认分支的拉取请求触发的自动化 CI/CD 流水线。工作流由四个顺序阶段组成。

阶段 1 – 环境设置

目的: 为 CI 运行器准备所有必要的工具和依赖(支持 AMD64 和 ARM64 代理)。

关键活动

  • 检出代码仓库。
  • 通过包管理器安装 k6 负载测试工具。
  • 下载并安装 Kind 用于本地 Kubernetes 集群。
  • 为集群管理设置 kubectl
  • 配置所需的权限和环境变量。

阶段 2 – 集群供应

目的: 创建并配置完整的 Kubernetes 环境以进行测试。

关键活动

  • 使用 kind-config.yaml 创建多节点 Kind 集群。
  • 安装 NGINX Ingress Controller 以进行请求路由。
  • 等待所有控制平面组件就绪。
  • 部署 http‑echo 应用(foo 和 bar 服务)。
  • 验证所有 Pod 正在运行且服务可访问。
  • 为基于主机名的路由配置 Ingress 规则。

阶段 3 – 负载测试

目的: 对已部署的服务执行全面的负载测试。

关键活动

  • 执行健康检查探针以验证端点可用性。
  • 使用预定义场景运行 k6 脚本(load-test.js)。
  • 在运行期间实时监控性能指标。
  • 生成 JSON 格式的详细测试结果。
  • 捕获 foo 和 bar 服务的自定义指标(响应时间、错误率、吞吐量)。

测试配置

阶段持续时间虚拟用户数目的
Ramp‑up10 秒0 → 10逐步增加负载至目标负载
Sustained30 秒20峰值性能评估
Ramp‑down10 秒20 → 0平稳降低负载

性能阈值

  • Ramp‑up:10 秒内达到目标负载
  • Sustained load:30 秒的峰值虚拟用户数
  • Ramp‑down:10 秒降至零负载
  • P95 响应时间

参考:Goodnotes Take‑Home Assignment – DevOps Engineering

注意: 该方案未能满足团队的期望。

Back to Blog

相关文章

阅读更多 »

你好,我是新人。

嗨!我又回到 STEM 的领域了。我也喜欢学习能源系统、科学、技术、工程和数学。其中一个项目是…