2. k6 环境搭建:安装方式、Docker 部署、Cloud 与 OSS 区别及验证

在开始容量压测巡检脚本编排之前,必须完成 k6 运行环境的搭建。本章覆盖 k6 在主流操作系统上的安装方式、Docker 容器化部署、k6 Cloud 与 k6 OSS 的核心差异,以及安装后的验证方法。请根据你的实际工作环境选择对应的安装路径。

2.1 操作系统原生安装

k6 官方提供 Linux、macOS 和 Windows 三种主流操作系统的安装包。以下为各系统的推荐安装方式:

操作系统 安装方式 命令 / 步骤 备注
Linux (Debian/Ubuntu) APT 仓库
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69
echo "deb https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list
sudo apt-get update
sudo apt-get install k6
自动处理依赖,推荐生产环境使用
Linux (RHEL/CentOS/Fedora) YUM 仓库
sudo dnf install https://dl.k6.io/rpm/repo.rpm
sudo dnf install k6
适用于 RPM 系发行版
macOS Homebrew
brew install k6
最简洁,自动配置 PATH
Windows Chocolatey / 官方 MSI
choco install k6

或下载 k6-latest-amd64.msi 手动安装

Chocolatey 需管理员权限;MSI 安装后需手动添加 PATH
通用 (任意 OS) 预编译二进制
# 下载对应平台压缩包
# Linux/macOS: k6-v0.49.0-linux-amd64.tar.gz
# Windows: k6-v0.49.0-windows-amd64.zip
# 解压后将 k6 二进制放入 PATH 目录
适合离线环境或 CI 容器
推荐做法: 在 Linux 服务器上优先使用 APT/YUM 仓库安装,便于后续版本升级;在本地开发机上使用 Homebrew 或 Chocolatey 保持与系统包管理一致。

2.2 Docker 部署 k6

Docker 是运行 k6 最隔离、最可复用的方式,尤其适合 CI/CD 流水线和容器化压测环境。k6 官方镜像托管于 Docker Hub,标签与 GitHub Release 版本同步。

2.2.1 拉取并运行 k6 容器

# 拉取最新稳定版镜像
docker pull grafana/k6:latest

# 运行一个简单的测试脚本(内联脚本)
docker run --rm -i grafana/k6 run - <<EOF
import http from 'k6/http';
import { sleep } from 'k6';

export default function () {
  http.get('https://test.k6.io');
  sleep(1);
}
EOF

2.2.2 挂载本地脚本运行

# 假设本地脚本路径为 ./scripts/loadtest.js
docker run --rm -i -v $(pwd)/scripts:/scripts grafana/k6 run /scripts/loadtest.js

2.2.3 Docker Compose 集成(推荐)

# docker-compose.yml
version: '3.8'
services:
  k6:
    image: grafana/k6:latest
    container_name: k6-runner
    volumes:
      - ./scripts:/scripts
      - ./reports:/reports
    command: run /scripts/loadtest.js
    environment:
      - K6_OUT=json=/reports/result.json
Docker 部署优势:
  • 环境一致性:开发、测试、生产使用同一镜像
  • 无残留:容器运行结束后自动清理,不污染宿主机
  • 资源隔离:可限制 CPU/内存,模拟资源受限场景
  • CI 友好:直接集成到 Jenkins、GitLab CI、GitHub Actions 等流水线
k6 环境安装方式总览 k6 引擎 操作系统原生安装 Linux (APT/YUM) macOS (Homebrew) Windows (Chocolatey/MSI) Docker 容器化部署 docker pull grafana/k6 挂载脚本卷运行 Docker Compose 编排 k6 Cloud SaaS 云端分布式执行 实时结果仪表盘 团队协作与报告 选择建议 本地开发 → 操作系统原生 | CI/CD 流水线 → Docker | 大规模分布式压测 → k6 Cloud

2.3 k6 Cloud 与 k6 OSS 的区别

k6 提供两个主要版本:开源版(OSS)和云版(Cloud)。理解两者的差异有助于根据团队规模和压测需求做出正确选择。

对比维度 k6 OSS(开源版) k6 Cloud(云版)
执行环境 本地机器、自建服务器、Docker 容器 Grafana 托管的基础设施,全球多区域执行
分布式压测 需自行搭建多节点协调(k6-operator 或手动分发) 内置分布式执行引擎,一键扩展至数百虚拟节点
结果存储与可视化 终端输出、JSON/CSV 导出、集成 Prometheus + Grafana 内置实时仪表盘、历史趋势、自动报告生成
团队协作 依赖 Git + CI 流程,无原生协作功能 项目级权限管理、共享测试配置、评论与审批
阈值与告警 脚本内定义阈值,告警需外部系统(如 Alertmanager) 内置阈值引擎,支持邮件、Slack、PagerDuty 等通知
成本 免费,仅需基础设施成本 按虚拟用户小时或订阅计费
适用场景 单机压测、开发调试、内部 CI 门禁 大规模压测、SLA 验证、生产环境巡检、团队级测试平台
注意: k6 OSS 与 k6 Cloud 使用相同的脚本语法和 API。脚本可以在两者之间无缝迁移。Cloud 版本质上是 OSS 的托管增强版,并非独立产品。你可以在本地用 OSS 编写调试脚本,然后一键上传到 Cloud 执行大规模压测。
k6 OSS 与 k6 Cloud 架构对比 k6 OSS 本地架构 k6 CLI 测试脚本 (.js) 单机 / 自建分布式执行 终端 / JSON 输出 Prometheus + Grafana 外部告警系统 (可选) k6 Cloud 托管架构 k6 CLI / Web UI 测试脚本 (.js) Grafana 托管分布式执行引擎 内置实时仪表盘 + 历史趋势 内置告警 (邮件/Slack/PagerDuty) 脚本可迁移

2.4 验证安装

无论选择哪种安装方式,安装完成后都应执行以下验证步骤,确保 k6 可正常运行:

  1. 检查版本号
    k6 version
    # 预期输出示例:k6 v0.49.0 (2024-03-15T10:00:00+0000, go1.22.1, linux/amd64)
  2. 运行内置 smoke test
    k6 run --vus 1 --duration 5s -

    然后粘贴以下脚本并回车(或使用 echo 管道):

    import http from 'k6/http';
    import { check } from 'k6';
    
    export default function () {
      const res = http.get('https://test.k6.io');
      check(res, {
        'status is 200': (r) => r.status === 200,
      });
    }
  3. 检查 Docker 容器运行(如果使用 Docker)
    docker run --rm -i grafana/k6 version
  4. 验证输出格式
    k6 run --vus 1 --duration 3s --out json=test-output.json - <<EOF
    import http from 'k6/http';
    export default function () { http.get('https://test.k6.io'); }
    EOF
    cat test-output.json | head -5
验证成功标志: 终端输出包含 ✓ status is 200 或类似通过检查的标记,且最后一行显示 checks.........................: 100.00% ✓ 1。如果看到错误信息,请检查网络连接、防火墙或代理设置。

2.5 常见安装问题与解决

问题现象 可能原因 解决方案
k6: command not found k6 未加入 PATH 环境变量 将 k6 二进制所在目录添加到 ~/.bashrc 或 ~/.zshrc 的 PATH 中
permission denied 二进制文件无执行权限 chmod +x /path/to/k6
docker: Error response from daemon Docker 未运行或当前用户无权限 启动 Docker 服务;将用户加入 docker 组:sudo usermod -aG docker $USER
unable to resolve host 或 connection refused 网络代理或 DNS 问题 设置 HTTP_PROXY/HTTPS_PROXY 环境变量;检查 DNS 配置
Windows 上双击 MSI 安装后仍找不到命令 安装程序未自动添加 PATH 手动将 C:\Program Files\k6 添加到系统环境变量 PATH 中,重启终端
环境就绪检查清单:
  • ✅ k6 版本命令正常输出
  • ✅ 能成功运行一次 HTTP 请求并返回 200
  • ✅ 能输出 JSON 格式结果文件
  • ✅ Docker 镜像能正常拉取并执行(如使用 Docker)
  • ✅ 脚本中 import http from 'k6/http' 无报错