如何通过kubectl将本地JS文件内容传入k6容器运行?
解决kubectl运行k6加载本地测试文件的问题
问题原因
你使用的kubectl run命令没有正确将本地simple.js的内容转发到容器的标准输入中,导致k6执行run -时读取不到有效测试代码,因此报错"no exported functions"。
解决方案
方案一:通过标准输入直接传递(适合快速测试)
使用-i(开启标准输入转发)参数运行容器,确保本地文件内容能传递给k6:
kubectl run k6 --image=grafana/k6 -i -- run - < simple.js
-i参数让kubectl将本地的标准输入转发到容器内,k6的run -会读取这个输入并执行测试代码。
方案二:通过ConfigMap挂载文件(适合复用或复杂测试)
如果需要多次运行测试,或者测试文件较大,推荐将本地文件存入ConfigMap并挂载到容器中:
- 创建包含测试文件的ConfigMap:
kubectl create configmap k6-test-script --from-file=simple.js
- 运行k6容器,挂载ConfigMap并指定测试文件路径:
kubectl run k6 --image=grafana/k6 --command -- run /test-scripts/simple.js \ --volume name=k6-scripts,configmap=k6-test-script \ --volume-mount name=k6-scripts,mount-path=/test-scripts
- ConfigMap会将
simple.js挂载到容器内的/test-scripts目录下,k6可以直接读取该文件执行测试。
验证结果
执行命令后,查看Pod日志确认测试是否正常运行:
kubectl logs k6
如果日志中出现k6的测试进度输出,说明测试已成功启动。
内容的提问来源于stack exchange,提问作者sqr
相关产品推荐
相关产品推荐

