K8S 上的 Flink:如何向集群提供 Flink 配置?



我正在按照 Flink Kubernetes Setup 创建一个集群,但不清楚如何为集群提供 Flink 配置?例如,我想指定jobmanager.heap.size=2048m

根据文档,所有配置都必须通过yaml配置文件传递。

似乎jobmanager.heap.size是可以配置的常见选项。

话虽如此,在提供此配置文件时,kubernetes 的方法略有不同。

难题的下一部分是弄清楚您尝试启动的容器的当前启动命令是什么。 我假设你使用的是官方的 flink docker 镜像,这很好,因为 Dockerfile 是开源的(链接到底部的 repo(。 他们使用复杂的脚本来启动 flink 容器,但如果你深入研究该脚本,你会看到它正在从/opt/flink/conf/flink-conf.yaml读取配置 yaml 。与其尝试更改此设置,不如使用配置值在 Pod 中的确切路径上挂载 yaml 文件可能会更容易。

这是包含这些 Dockerfile 以供参考的 github 存储库。

下一个问题是 yaml 文件应该是什么样子? 从他们的文档中:

所有配置都在 conf/flink-conf.yaml 中完成,这是预期的 是具有格式键:值的 YAML 键值对的平面集合。

因此,我想您会创建包含以下内容的flink-conf.yaml

jobmanager.heap.size: 2048m

然后把它挂在你的 kubernetes pod 中,/opt/flink/conf/flink-conf.yaml它应该可以工作了。

从 kubernetes 的角度来看,制作该 yaml 文件的配置映射,并将配置映射作为文件挂载到 pod 中可能是最有意义的。 查看参考文档

具体来说,您最感兴趣的是从文件创建配置映射并将配置映射添加为卷

最后,我会指出这一点,但我不会推荐它,因为 flink 的所有者目前已将其标记为孵化功能,他们已经开始为 Flink 提供 helm 图表,我可以看到他们正在flink-conf.yaml作为 helm 图表模板中的配置映射传递(忽略用{{ }}包围的值 - 即 helm 模板语法(。这是他们将配置映射挂载到 pod 中的地方。

最新更新