你可以通过环境变量或者flink config option的方式来指定kube config
export KUBECONFIG=/path/of/kube.config
或者
-Dkubernetes.config.file=/path/of/kube.config
具体的代码在这里[1]
[1].
首先感谢您答复。我也想到了采用第二种JOB动态+ConfigMap挂到Flink Client Pod中,然后命令提交。
另外您和官方文档都提到kube config的配置。请问flink client在源码实现中是在哪个地方去解析读取kube config的?
Yang Wang 于2022年1月10日周一 15:17写道:
>
> 抱歉回复晚了
>
> 在实践中,Flink on Native K8s的部署方式需要一个机器同时拥有k8s和flink客户端才能很好的完成部署工作。
>
> Flink client并不依赖K8s客户端的,只要有对应的kube config就可以了
>
抱歉回复晚了
在实践中,Flink on Native K8s的部署方式需要一个机器同时拥有k8s和flink客户端才能很好的完成部署工作。
Flink client并不依赖K8s客户端的,只要有对应的kube config就可以了
你说的两种方法都是可以的,而且也没有本质上的差异。都是把Flink client运行在集群内来完成提交,第一种是常驻的,第二种是动态起的 。
如果作业使用的pod template都是一样的,那就可以自己保存在ConfigMap中然后挂载给Flink client pod就可以了。
如果每个作业使用的都不同,就只能按照你说的方法了
明白了。感谢。
在实践中,Flink on Native K8s的部署方式需要一个机器同时拥有k8s和flink客户端才能很好的完成部署工作。
请问在工程实践上有什么比较好的持续集成提交方式。我目前想到两种。
1.在k8s 启动一个带flink客户端的容器。在容器内部进行命令行提交。
2.在k8s以带Flink客户端的镜像启动一个Job类型作业,然后在作业运行时进行命令提交。
第1种对于kubernetes.pod-template-file的提交需要把kubernetes.pod-template-file中的模板文件cp到容器中。
拿如下提交命令举例,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 \
client-local的文件,不是镜像里面的。这句话该怎么理解?因为run-application
模式下是需要将用户jar包跟flink标准镜像打到一起形成自己镜像然后进行提交。那么这个文件该放在哪个地方?目前我指定路径发现读的是镜像包中的路径。如/opt/my-pod-template。读的是镜像中/opt/my-pod-template文件。
谢谢您的回复。
Yang Wang 于2021年12月24日周五 11:18写道:
>
> 使用flink
>
使用flink
run-application来提交任务时,kubernetes.pod-template-file需要指定的是一个client-local的文件
不是镜像里面的
Best,
Yang
hjw <1010445...@qq.com.invalid> 于2021年12月23日周四 22:21写道:
> Flink版本:1.13Flink基于Native K8s
>