明白了。感谢。 在实践中,Flink on Native K8s的部署方式需要一个机器同时拥有k8s和flink客户端才能很好的完成部署工作。 请问在工程实践上有什么比较好的持续集成提交方式。我目前想到两种。 1.在k8s 启动一个带flink客户端的容器。在容器内部进行命令行提交。 2.在k8s以带Flink客户端的镜像启动一个Job类型作业,然后在作业运行时进行命令提交。 第1种对于kubernetes.pod-template-file的提交需要把kubernetes.pod-template-file中的模板文件cp到容器中。 第2种需要提前把kubernetes.pod-template-file文件打到带Flink客户端的镜像中。 请问您有更好的方法吗。
Yang Wang <[email protected]> 于2021年12月26日周日 16:39写道: > > 拿如下提交命令举例,pod-temlate.yaml是在和运行run-application这个命令相同的机器上面。Flink > client会自动把这个文件存放到ConfigMap,然后挂载给JM的 > user jar(StateMachineExample.jar)是需要在镜像里面 > > 注意:一般需要在镜像里面的都会使用local://这个schema,本地文件则不需要 > > bin/flink run-application -t kubernetes-application \ > -Dkubernetes.cluster-id=my-flink-cluster \ > -Dkubernetes.pod-template-file=/path/of/pod-template.yaml \ > local:///opt/flink/examples/streaming/StateMachineExample.jar > > > > 如果还是不明白,看一下这个测试的实现就清楚了[1] > > [1]. > https://github.com/apache/flink/blob/master/flink-end-to-end-tests/test-scripts/test_kubernetes_application_ha.sh > > > Best, > Yang > > 黄剑文 <[email protected]> 于2021年12月24日周五 17:57写道: > > > client-local的文件,不是镜像里面的。这句话该怎么理解?因为run-application > > > > 模式下是需要将用户jar包跟flink标准镜像打到一起形成自己镜像然后进行提交。那么这个文件该放在哪个地方?目前我指定路径发现读的是镜像包中的路径。如/opt/my-pod-template。读的是镜像中/opt/my-pod-template文件。 > > > > 谢谢您的回复。 > > > > Yang Wang <[email protected]> 于2021年12月24日周五 11:18写道: > > > > > > 使用flink > > > run-application来提交任务时,kubernetes.pod-template-file需要指定的是一个client-local的文件 > > > 不是镜像里面的 > > > > > > Best, > > > Yang > > > > > > hjw <[email protected]> 于2021年12月23日周四 22:21写道: > > > > > > > Flink版本:1.13Flink基于Native K8s > > > > > > 部署模式下,因为有场景需要,jobmanager和taskmanager需要配置一些特定的hosts,查阅官方文档后发现可以支持自己指定一些pod-Template来指定jm和tm的一些K8s部署行为,但这些pod-Template需要打在提交客户端镜像里。 > > > > > > > > > > 问题是jm和tm在不同环境下需要配置的Hosts并不相同。如开发环境,测试环境,生产环境。这意味着不同环境需维护不同的镜像。请问各位在使用上有什么好方法去解决呢。谢谢。 > >
