赞
踩
这里假设你已经启动了,并且可以登录web了(如果没启动,可以参考我上一篇streampark部署的文章)
部署完成,启动后,进入web界面,需要完成的几步:
(1)去设置flink home,这里填写的就是放到streampark里面的flink的地址,也是FLINK_HOME地址
-- 如果你前面有往容器放hadoop,也设置了hadoop环境变量,到这里已经可以去跑任务了;
(2)设置告警(这个根据自己要求,跟着官网设置就可以了)
(3)设置docker地址
如果你使用到了flink on k8s,那么是需要用到docker在本地制作镜像,推送镜像,最后使用镜像到k8s创建容器
这里可以看见flink任务大致是两类,on yarn 和 on k8s
这里有两种选择方式,一个是sql,一个是jar,无论是哪一个,根据官网配置即可,大致也就是设置一下flink的资源,一些flink的启动命令,启动类,告警什么的,挨个配置填写好,几乎都可以跑起来;
-- on yarn模式我就是测试跑了两个任务,都成功了,后面就没用on yarn了。如果你实在没跑起来,就看看配置(建议只填写必填选项,其他就别管了),看看日志,或者找一个最简单的肯定没问题的flink 的jar包来试试;
(1)前期准备:
1.k8s的证书文件(如果不知道就找运维问,其实就是一个config文件)
2.docker仓库地址、账号、密码(这个docker仓库应该是你的或者公司的私有仓库)
3.配置rbac资源 (这个是在k8s上操作的,具体操作可以看streampark官网)
4.ImagePullSecrets(这个是Kubernetes 中用于拉取私有容器镜像的凭据对象,如果没有配置这个,k8s的pod容器就启动本来,状态就是ImagePullBackOff)
5.创建一个pvc,用来在k8s中把flink的日志挂载出来
(2)开始动手:
1.将k8s的证书挂载到streampark容器中(使用docker run 的 -v /root/.kube:/root/.kube命令)
2.在web端设置docker仓库地址、账号密码等,这个要用来推送镜像的
3.配置rbac资源(这个看官网)
4.创建imagePullSecrets(这个百度一下就可以找到怎么创建)
5.创建pvc和pv
- # pv的创建
- apiVersion: v1
- kind: PersistentVolume
- metadata:
- name: flink-logs-pv
- namespace: flink-cluster
- spec:
- capacity:
- storage: 500Mi
- accessModes:
- - ReadWriteOnce
- hostPath:
- path: "/opt/flink/logs"
- storageClassName: local-path
-
-
- # pvc的创建
- apiVersion: v1
- kind: PersistentVolumeClaim
- metadata:
- name: flink-logs-pvc
- namespace: flink-cluster
- spec:
- accessModes:
- - ReadWriteOnce
- resources:
- requests:
- storage: 500Mi
- storageClassName: local-path
6.创建flink基础镜像
找一个flink基础镜像(最好和你在用的flink一个版本的),将这个flink镜像推送到之前填写的docker仓库中;如果用到hadoop作为状态后端,把官网说的那个hadoop的jar包放到这个flink基础镜像中(注意给这个jar包加上权限,不让flink运行的时候,虽然有这个jar包,但是没权限用),最后把这个镜像推送到自己的docker仓库就可以了;
下面是我的flink基础镜像的Dockerfile
- FROM flink:1.14.5-scala_2.12
- RUN mkdir -p $FLINK_HOME/usrlib
- COPY ./flink-shaded-hadoop-2-uber-3.2.2-10.0.jar $FLINK_HOME/lib/flink-shaded-hadoop-2-uber-3.2.2-10.0.jar
- RUN chmod 777 $FLINK_HOME/lib/flink-shaded-hadoop-2-uber-3.2.2-10.0.jar
- #下面是为了支持mysql的几个jar包
- COPY ./flink-connector-jdbc_2.12-1.14.5.jar $FLINK_HOME/lib
- COPY ./flink-connector-starrocks-1.2.6_flink-1.14_2.12.jar $FLINK_HOME/lib
- COPY ./flink-sql-connector-mysql-cdc-2.2-SNAPSHOT.jar $FLINK_HOME/lib
- RUN chmod 777 $FLINK_HOME/lib/flink-connector-jdbc_2.12-1.14.5.jar
- RUN chmod 777 $FLINK_HOME/lib/flink-connector-starrocks-1.2.6_flink-1.14_2.12.jar
- RUN chmod 777 $FLINK_HOME/lib/flink-sql-connector-mysql-cdc-2.2-SNAPSHOT.jar
执行命令:
docker build -t {image_name}:{tag} . (制作镜像)
docker tag {image_name}:{tag} {new_image_name}:{tag} (给镜像打标签)
docker push {new_image_name}:{tag} (推送镜像到自己仓库)
例如:
docker tag flink13:1.0.3 仓库地址/仓库的命名空间/native_realtime:1.0.3
docker push 仓库地址/仓库的命名空间/native_realtime:1.0.3
(3)创建任务
其他基础信息都正常填写即可,比如项目名称、flink version、flink基础镜像(就是刚刚推送到仓库的镜像)、flink任务主类地址等
重点是pod文件编写与其他基础配置
pod文件示例:
- apiVersion: v1
- kind: Pod
- metadata:
- name: pod-template
- namespace: flink-cluster
- spec:
- nodeSelector:
- biz-node-label-1: "1"
- hostAliases:
- - ip: 11.111.11.11
- hostnames:
- - "flink101"
- containers:
- # Do not change the main container name
- - name: flink-main-container
- image: 仓库地址/命名空间/native_realtime:1.0.3
- imagePullPolicy: Always
- resources:
- requests:
- cpu: 500m
- memory: 1024Mi
- limits:
- cpu: 1
- memory: 10240Mi
- volumeMounts:
- - name: flink-logs
- mountPath: /opt/flink/log
- subPath: rscsynjob
- volumes:
- - name: flink-logs
- persistentVolumeClaim:
- claimName: flink-logs-pvc
- imagePullSecrets:
- - name: flinkregistrykey
dynamic properties示例:
- -Dkubernetes.container.image.pull-policy=Always
- -Djobmanager.memory.process.size=1536m
- -Dtaskmanager.memory.process.size=9216m
- -Dtaskmanager.numberOfTaskSlots=3
- -Dtaskmanager.memory.managed.size=256m
- -Dtaskmanager.memory.jvm-metaspace.size=1024m
到此,配置差不多就完成了,然后就可以启动任务了,启动的时候去k8s看一下pod状态和日志即可
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。