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
|