flink on k8s
时间: 2023-11-25 13:50:43 浏览: 46
***s 上的部署方式有两种:Standalone 方式和 Native 方式。
1. Standalone 方式
Standalone 方式是 Flink 在 K8s 上最简单的部署方式,不需要对 Flink 做任何改动,同时 Flink 对 K8s 集群是无感知的,通过外部手段即可让 Flink 运行起来。具体操作可以参考 Standalone Session On K8s。
2. Native 方式
Native 方式是相对于 Flink 而言的,它可以借助 Flink 的命令就可以达到自治的一个状态,不需要引入外部工具就可以通过 Flink 完成任务在 K8s 上的运行。具体操作如下:
- 资源申请方式:Flink 的 Client 内置了一个 K8s Client,可以借助 K8s Client 去创建 JobManager,当 Job 提交之后,如果对资源有需求,JobManager 会向 Flink 自己的 ResourceManager 去申请资源。这个时候 Flink 的 ResourceManager 会直接跟 K8s 的 API Server 通信,将这些请求资源直接下发给 K8s Cluster,告诉它需要多少个 TaskManger,每个 TaskManager 多大。当任务运行完之后,它也会告诉 K8s Cluster 释放没有使用的资源。
- 具体操作:可以使用 Flink 提供的 kubernetes-session.sh 脚本来启动一个 Flink Session Cluster。例如:
```shell
./bin/kubernetes-session.sh \
-Dkubernetes.cluster-id=my-first-flink-cluster \
-Dkubernetes.container.image=flink:1.11.2 \
-Dkubernetes.jobmanager.cpu=1 \
-Dkubernetes.taskmanager.cpu=1 \
-Dkubernetes.rest-service.exposed.type=NodePort \
start
```
以上命令会启动一个名为 my-first-flink-cluster 的 Flink Session Cluster,使用的镜像为 flink:1.11.2,JobManager 和 TaskManager 的 CPU 都为 1,同时将 Flink 的 REST API 暴露在 NodePort 上。