问题描述
我在 digitalocean 上创建了 kubernetes 集群。并且我已经在 kubernetes 集群上部署了 k6 作为作业。
apiVersion: batch/v1
kind: Job
Metadata:
name: benchmark
spec:
template:
spec:
containers:
- name: benchmark
image: loadimpact/k6:0.29.0
command: ["k6","run","--vus","2","--duration","5m","--out","json=./test.json","/etc/k6-config/script.js"]
volumeMounts:
- name: config-volume
mountPath: /etc/k6-config
restartPolicy: Never
volumes:
- name: config-volume
configMap:
name: k6-config
这就是我的 k6-job.yaml 文件的样子。在 kubernetes 集群中部署它后,我检查了 pods 日志。它显示权限被拒绝错误。 级别=错误消息=“打开./test.json:权限被拒绝” 如何解决这个问题?
解决方法
k6 Docker 镜像以非特权用户身份运行,但不幸的是默认工作目录设置为 /
,因此它无权在那里写入。
要解决此问题,请考虑将 JSON 输出路径更改为 /home/k6/out.json
,即:
command: ["k6","run","--vus","2","--duration","5m","--out","json=/home/k6/test.json","/etc/k6-config/script.js"]
我是团队的维护者之一,因此将提议更改 Dockerfile,将 WORKDIR
设置为 /home/k6
,使默认行为更加直观。