如何在Kubernetes容器/吊舱上安装S3存储桶?

Aje*_*eet 8 fuse amazon-s3 s3fs apache-spark kubernetes

我正在尝试在Amazon EKS集群上运行我的Spark作业。我的Spark作业在每个数据节点/工作人员/执行者处需要一些静态数据(参考数据),并且该参考数据可在S3上获得。

有人可以帮助我找到一个干净且性能良好的解决方案,以将S3桶安装在吊舱上吗?

S3 API是一个选项,我正在将其用于输入记录和输出结果。但是“参考数据”是静态数据,因此我不想在我的spark作业的每次运行/执行中下载它。在首次运行时,作业将下载数据,而即将进行的作业将检查数据是否在本地可用,而无需再次下载。

Yia*_*fas 8

我们最近开源了一个项目,旨在为您自动化这些步骤:https : //github.com/IBM/dataset-lifecycle-framework

基本上你可以创建一个数据集:

apiVersion: com.ie.ibm.hpsys/v1alpha1
kind: Dataset
metadata:
  name: example-dataset
spec:
  local:
    type: "COS"
    accessKeyID: "iQkv3FABR0eywcEeyJAQ"
    secretAccessKey: "MIK3FPER+YQgb2ug26osxP/c8htr/05TVNJYuwmy"
    endpoint: "http://192.168.39.245:31772"
    bucket: "my-bucket-d4078283-dc35-4f12-a1a3-6f32571b0d62"
    region: "" #it can be empty
Run Code Online (Sandbox Code Playgroud)

然后你会得到一个可以安装在你的豆荚中的 pvc


Rad*_*nka 6

一般来说,你只是不这样做。您应该直接与 S3 API 交互以检索/存储您需要的内容(可能通过一些工具,如 aws cli)。

当您在 AWS 中运行时,您可以以一种方式配置 IAM,使您的节点可以访问在“基础设施”级别授权的特定数据,或者您可以通过 secrets/confogmaps/env 等提供 S3 访问令牌。

S3 不是一个文件系统,所以不要指望它表现得像一个文件系统(即使有 FUSE 客户端根据您的需要模拟 FS,这很少是正确的解决方案)