Please enable Javascript to view the contents

在容器中使用 obsutil 命令问题

 ·  ☕ 1 分钟

1. 容器的 ulimit 设置太小

报错信息:

1
2
3
4
5
6
7
CheckpointDir: /root/.obsutil_checkpoint     
OutputDir: /root/.obsutil_output         

runtime: mlock of signal stack failed: 12
runtime: increase the mlock limit (ulimit -l) or
runtime: update your kernel to 5.3.15+, 5.4.2+, or 5.5+
fatal error: mlock failed
  • 如果是 Docker 下,可以在启动时添加 ulimit 参数
1
docker run -it --ulimit memlock=-1 ...
  • 如果是 Kubernetes 下,需要以特权模式启动 Pod
1
2
3
      securityContext:
        privileged: true
        runAsUser: 0

在 yaml 配置中添加上面的片段,然后在启动脚本中添加 ulimit -c unlimited 修改 ulimit 。

2. 只读权限的凭证无法使用

报错信息:

1
Error: open /root/.obsutilconfig: read-only file system

由于以只读权限挂载 .obsutilconfig 凭证到容器,而 obsutil 命令需要对凭证的写权限。

因此需要在容器启动时,读取并生成凭证。

1
2
cat /root/.obsutilconfig1 > /root/.obsutilconfig
ulimit -c unlimited

微信公众号
作者
微信公众号