问题描述
我正在尝试在 EKS 上运行的 Kubernetes 容器内挂载一个 S3 存储桶(使用 IAM 角色而不是密码文件)。
这就是我想要做的,但不起作用:
lifecycle:
postStart:
exec:
command: ["s3fs","-o","use_path_request_style","iam_role=\"<iam-role-name>\"","endpoint=us-west-1",'url="https://s3-us-west-1.amazonaws.com"',"<bucket-name>:<prefix>","<path-to-mount>"]
在容器内运行相同的命令有效,并且我能够看到文件:
s3fs -o use_path_request_style -o iam_role="<iam-role-name>" -o endpoint=us-west-1 -o url="https://s3-us-west-1.amazonaws.com" <bucket-name>:<prefix> <mount-path>
为了克服这个问题,我在容器内用 configMap 创建了一个脚本文件:
apiVersion: v1
kind: ConfigMap
Metadata:
name: mount-s3-configmap
data:
mount-s3.sh: |
s3fs -o use_path_request_style -o iam_role="<iam-role-name>" -o endpoint=us-west-1 -o url="https://s3-us-west-1.amazonaws.com" <bucket-name>:<prefix> <mount-path>
并用 postStart
钩子运行这个脚本文件,它完美地挂载了 S3 存储桶
lifecycle:
postStart:
exec:
command: ["/bin/sh","/app/mount-s3.sh"]
我知道这是一个黑客,我不习惯使用它。我不确定,我在第一部分做错了什么,我直接在 s3fs
挂钩中调用 postStart
实用程序命令。
如何直接从 s3fs
挂钩使用 postStart
挂载 S3 存储桶,而不使用此 hack。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)