【问题标题】:k6: k6 --out json - open ./test.json: permission deniedk6: k6 --out json - 打开 ./test.json: 权限被拒绝
【发布时间】:2021-01-12 05:11:12
【问题描述】:

我在 digitalocean 上创建了 kubernetes 集群。我已经将 k6 部署为 kubernetes 集群上的作业。

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 日志。它显示权限被拒绝错误。 level=error msg="open ./test.json: 权限被拒绝" 如何解决这个问题?

【问题讨论】:

  • edit your question 并修正格式
  • 代码块可以在代码前后用```格式化
  • @Devi 我已经为你完成了格式化。你能检查./test.json"文件的权限吗?另外,您是否在集群中使用 RBAC?到目前为止,您提供的信息很难说。
  • 感谢您格式化@Wytrzymały Wiktor。我只是以为 k6 会在我的本地自动创建带有 k6 输出的 test.json 文件

标签: kubernetes k6


【解决方案1】:

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 以使默认行为更加直观。

【讨论】:

    猜你喜欢
    • 2013-01-08
    • 1970-01-01
    • 2013-03-13
    • 2020-05-31
    • 2018-09-08
    • 2018-03-20
    • 2016-03-13
    • 2019-06-16
    • 1970-01-01
    相关资源
    最近更新 更多