flink on k8s部署(native)
flink on k8s Application Mode部署
·
前提条件
k8s >=1.9
kubectl具有创建pod的权限
k8s启用了DNS
service account有创建,删除pod的权限
flink版本1.16.1
flink on k8s的类型
Application Mode
其它的部署模式,在启动时,需要在客户端执行任务的main方法,生成JobGraph,并将相应的依赖和JobGraph上传到集群,在有多个用户同时添加的场景下,会因为下载依赖和上传文件而占用大量的网络带宽,执行main方法导致cpu飙升;Application Mode在提交时,会先创建集群,在集群中由jobmanager执行main方法,从而避免上述的问题,当任务执行完成后,会主动释放资源。相比与 Per-job模式,Application Mode支持提交多个任务,即在代码中多次执行execute或executeAsync方法,但在同时执行多个任务的时候,不支持高可用。
Session Mode
先创建一个集群,每次任务提交时都在该集群中执行,集群的资源在创建时指定,后期不可在动态扩容了,这种模式的好处是,在任务提交时,不需要在去申请资源而耗费时间,直接使用集群中的资源即可。坏处是一旦集群中有一个任务失败,会导致集群中正在运行的所有任务都失败。
Application Mode部署
打包镜像
Application Mode在部署时,需要作业的jar包位于/opt/flink/usrlib目录下,因此需要在flink官方的镜像上,将自己的jar包添加进去。
ROM flink:1.16.1-scala_2.12-java8
RUN mkdir -p /opt/flink/usrlib
COPY ./flink-demo-1.16.1.jar /opt/flink/usrlib/
提交任务
./bin/flink run-application \
--target kubernetes-application \
-Dkubernetes.cluster-id=my-first-application-cluster \
-Dkubernetes.container.image=flink:1.16.1 \
-Dkubernetes.namespace=spark \
-Dkubernetes.service-account=spark-serviceaccount \
-c flink.demo.wordcount.WordCount \
local:///opt/flink/usrlib/flink-demo-1.16.1.jar
minikube相关配置参考:https://blog.csdn.net/Andrew_2018/article/details/129194898
参考文章
更多推荐
已为社区贡献1条内容
所有评论(0)