搭建之前了解一下 腾讯云实时计算平台
通过开发的web平台 创建任务.在生成flink 集群.再通过提交作业生成具体的task
腾讯云是选用下图的native application方案.也是flink官方推荐的方案
初步要做成腾讯云这样的简单平台 先简单看一下腾讯实时计算是怎么做的
这一步是开通资源的概述页面.展示的是k8s集群的信息.
这是集群页面
集群详情.看样子是在k8s master安装了flink
jar管理 就是用的S3协议的对象存储 做了版本控制
最重要的作业处理
新建作业
作业详情
实际上就是用的flink的能力
下面是我自己设计平台的流程图
flink 跟k8s 交互原理
后面补图
根据官网的部署模式大概清楚流程
环境准备
入门部分假设正在运行的Kubernetes 集群满足以下要求:
- Kubernetes >= 1.9。
- KubeConfig,它可以访问列表、创建、删除 pod 和服务,可通过~/.kube/config. 您可以通过运行来验证权限kubectl auth can-i
- pods。
- 启用 Kubernetes DNS。
- default具有RBAC权限的服务帐户来创建、删除 Pod。
创建命名空间 和用户权限
创建kubernets命名空间
kubectl create namespace flink-application-cluster
1
⑤,创建该空间的用户 flink (自定义)
kubectl create serviceaccount flink -n flink-application-cluster
1
⑥,给该用户赋权
(不创建用户和赋权启动时候会报 "权限"错)
kubectl create clusterrolebinding flink-role-binding-flink \
--clusterrole=edit \
--serviceaccount=flink-application-cluster:flink
①,将自己的项目jar包 和 flink镜像 打在一起生成新的镜像
FROM flink
RUN mkdir -p $FLINK_HOME/usrlib
COPY /path/of/my-flink-job.jar $FLINK_HOME/usrlib/my-flink-job.jar
②,构建镜像
docker build -t wordcount:1.0(你的镜像自定义名字) ./
③,如果有本地仓库的push到本地仓库 harbor
docker tag wordcount:1.0 192.168.xx.xx:30002/gtcom/wordcount:1.0
docker push 192.168.xx.xx:30002/gtcom/wordcount:1.0
在创建并发布 Docker 镜像后custom-image-name,您可以使用k8s 主节点安装的flink 目录用 以下命令启动应用程序集群:
./bin/flink run-application \
--target kubernetes-application \
-Dkubernetes.cluster-id=my-first-application-cluster \
-Dkubernetes.container.image=custom-image-name \
local:///opt/flink/usrlib/my-flink-job.jar
local 可以使用hdfs 或者oss对象地址
该kubernetes.cluster-id选项指定集群名称并且必须是唯一的。如果不指定此选项,则 Flink 将生成一个随机名称。
该kubernetes.container.image选项指定用于启动 pod 的图像。
部署应用程序集群后,您可以与之交互:
2.查看运行的任务列表 4 取消运行的任务
# List running job on the cluster
$ ./bin/flink list --target kubernetes-application -Dkubernetes.cluster-id=my-first-application-cluster
# Cancel running job
$ ./bin/flink cancel --target kubernetes-application -Dkubernetes.cluster-id=my-first-application-cluster <jobId>
csdn相关资料
https://blog.csdn.net/weixin_36058946/article/details/116592026
在 k8s Application 模式下,指定运行 jar 包时,只能使用 “local” schema。此处的 local 指的是 kubernetes.container.image 指定的 docker 镜像,不是 flink 客户端。所以只能运行镜像中的 jar 包。那如何运行用户自定义的 jar 包呢?参考一下资料
部署踩坑相关
https://blog.csdn.net/qq_24036471/article/details/122453390