我刚刚将Flink从版本1.10升级到1.11。在1.11中,Flink提供了新功能,用户可以在Kubernetes上以应用程序模式部署作业。https://ci.apache.org/projects/flink/flink-docs-release-1.11/ops/deployment/kubernetes.html#deploy-session-cluster
在V1.10中,我们启动Flink K8s集群,然后通过运行将作业提交给Flink
exec ./bin/flink run \
-d \
/streakerflink_deploy.jar \
--arg1 blablabla
--arg2 blablabla
--arg3 blablabla
...我们通过这个命令传递java参数。
但是,在V1.11中,如果我们运行应用程序模式,则不需要运行上面的flink run命令。我想知道如何在应用程序模式下将参数传递给Flink作业(也称为作业集群)?
任何帮助都将不胜感激!
发布于 2020-09-04 11:23:50
由于您正在使用helm chart在Kubernetes(也称为K8s)上启动Flink集群,因此我假设您正在谈论独立的K8s模式。实际上,应用程序模式与1.10及更早版本中的工作集群非常相似。因此,您可以在jobmanager-job.yaml的args字段中设置作业参数,如下所示。
...
args: ["standalone-job", "--job-classname", "org.apache.flink.streaming.examples.join.WindowJoin", "--windowSize", "3000", "--rate", "100"]
...如果您真的指的是本机K8s模式,那么可以直接在flink run-application命令之后添加它。
$ ./bin/flink run-application -p 8 -t kubernetes-application \
-Dkubernetes.cluster-id=<ClusterId> \
-Dtaskmanager.memory.process.size=4096m \
-Dkubernetes.taskmanager.cpu=2 \
-Dtaskmanager.numberOfTaskSlots=4 \
-Dkubernetes.container.image=<CustomImageName> \
local:///opt/flink/examples/streaming/WindowJoin.jar \
--windowSize 3000 --rate 100注意:请记住,独立K8s和原生K8s模式的关键区别在于动态资源分配。在本地模式下,我们有一个嵌入式K8s客户端,因此Flink JobManager可以根据需要分配/释放TaskManager pods。目前,本机模式只能用于Flink命令(kubernetes-session.sh、flink run-application)。
发布于 2020-09-02 21:38:31
docs中描述了Flink在Kubernetes上的应用模式。您必须创建一个包含您的作业的Docker镜像。可以使用文档中所述的./bin/flink run-application [...]执行该作业。
https://stackoverflow.com/questions/63700645
复制相似问题