我在 flink 的文档中看到了以下信息 - 将相应的 jar 复制到插件目录以使用 s3。 如果我使用 Kubernetes 部署 Flink,我该怎么做。
"要使用 flink-s3-fs-hadoop 或 flink-s3-fs-presto,请在启动 Flink 之前将相应的 JAR 文件从 opt 目录复制到 Flink 发行版的插件目录,例如
mkdir ./plugins/s3-fs-presto cp ./opt/flink-s3-fs-presto-1.9.0.jar ./plugins/s3-fs-presto/">
如果您在官方文档中引用 k8s 设置,您可以简单地重新创建您的映像。
- 在 Github 存储库中查看 Docker 文件
- 将
flink-s3-fs-presto-1.9.0.jar
下载到与 Docker 文件相同的文件夹中 - 在
COPY docker-entrypoint.sh
之前添加以下内容
# install Flink S3 FS Presto plugin
RUN mkdir ./plugins/s3-fs-presto
COPY ./flink-s3-fs-presto-1.9.1.jar ./plugins/s3-fs-presto/
- 构建映像,标记它并推送到 Docker 中心
- 在部署 yml 文件中,将映像名称更改为刚刚创建的名称
- 然后,您可以在配置 yml 文件中使用 s3://xxxxxx(例如 flink-configuration-configmap.yaml(
如果你使用 flink 的 build.sh 脚本来构建特定于应用程序的 docker 镜像,它有一个参数 (--job-artifacts(,允许你指定要包含在镜像中的工件列表(JAR 文件(。这些 jar 文件最终都位于 lib 目录中。请参阅 https://github.com/apache/flink/blob/master/flink-container/docker/build.sh。
您可以对此进行扩展以正确处理插件,或者暂时不必担心(仍然支持将它们放在 lib 目录中(。