当前位置: 首页 > news >正文

Flink2.0及Flink-operater在K8S上部署

1.查找镜像

dockerhub访问不了的可以访问这个查找镜像 https://docker.aityp.com/
在docker服务器上拉取flink镜像到本地

拉取镜像到你的docker服务器本地
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/apache/flink:2.0.0-scala_2.12-java17
将docker服务器本地的镜像打上标签
docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/apache/flink:2.0.0-scala_2.12-java17 10.31.68.12:5000/flink:2.0.0-scala_2.12-java17
将打好标签的镜像推送到docker服务器
docker push 10.31.68.12:5000/flink:2.0.0-scala_2.12-java17

做完之后docker镜像如下,后面需要镜像的地方就写它

10.31.68.12:5000/flink:2.0.0-scala_2.12-java17

2.安装Flink Kubernetes Operator

官网:https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/docs/try-flink-kubernetes-operator/quick-start/
安装证书以启用webhook组件

kubectl create -f https://github.com/jetstack/cert-manager/releases/download/v1.8.2/cert-manager.yaml

如果yaml下载不成功,去 https://gitee.com/MiraculousWarmHeart/file-share/blob/master/flink/cert-manager.yaml复制,太长了就不贴这了,下到你的服务器上比如/data/flink/这个路径,执行

kubectl create -f  /data/flink/cert-manager.yaml

部署稳定Flink Kubernetes Operator,依次执行

helm repo add flink-operator-repo https://downloads.apache.org/flink/flink-kubernetes-operator-1.11.0/
helm install flink-kubernetes-operator flink-operator-repo/flink-kubernetes-operator

装完验证
执行 kubectl get pods 结果如下

NAME                                         READY   STATUS             RESTARTS         AGE
flink-kubernetes-operator-5c8975f64b-jdgc6   2/2     Running            0                81m

执行 helm list 结果如下

NAME                            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                                   APP VERSION
flink-kubernetes-operator       flink-prod      1               2025-05-28 15:08:00.683092663 +0800 CST deployed        flink-kubernetes-operator-1.11.0        1.11.0

3.存储卷及NFS配置(非必须,有配置好的就不用做)

3.1. 创建存储类(StorageClass)

kubectl create -f flink-storage.yaml 也可以在kuboard上创建

apiVersion: v1
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:name: flink-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
3.2. 创建 PV(PersistentVolume)

定义 NFS 类型的 PV,指定存储容量和访问模式:
kubectl create -f flink-trans-pv.yaml 也可以在kuboard上创建

apiVersion: v1
kind: PersistentVolume
metadata:name: flink-trans-pvnamespace: flink-prod
spec:capacity:storage: 20Gi     # 存储容量accessModes:- ReadWriteMany   # 支持多节点读写storageClassName: nfs-flinknfs:server: 10.31.68.22      # NFS 服务器 IPpath: "/data/flink"    # NFS 共享路径persistentVolumeReclaimPolicy: Retain  # 回收策略(保留数据)
3.3. 创建 PVC(PersistentVolumeClaim)

申领符合要求的 PV 资源:
kubectl create -f flink-trans-pvc.yaml 也可以在kuboard上创建

apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: flink-trans-pvcnamespace: flink-prod
spec:accessModes:- ReadWriteManyresources:requests:storage: 5Gi    # 实际申请的容量(需 ≤ PV 配置)storageClassName: nfs-flink

4.提交flink作业

4.1上传jar到nfs目录

scp ekrPatentDataProcessFlink-1.0.0.jar root@10.31.68.22:/flink/jobs/
或者本地直接上传到nfs目录

4.2 部署应用
kubectl create -f  flink-kafka-trans.yaml

flink-kafka-trans.yaml内容如下

apiVersion: flink.apache.org/v1beta1
kind: FlinkDeployment
metadata:name: flink-kafka-transnamespace: flink-prod
spec:image: 10.31.68.12:5000/flink:2.0.0-scala_2.12-java17flinkVersion: v2_0flinkConfiguration:taskmanager.numberOfTaskSlots: "2"serviceAccount: flinkpodTemplate:spec:hostAliases:- ip: "10.31.68.21"hostnames:- "k8smaster"containers:- name: flink-main-containervolumeMounts:- name: nfs-jar-volume      # 挂载 Jar 包存储mountPath: /data/flinkresources:requests:memory: "2048Mi"cpu: "1000m"limits:memory: "2048Mi"cpu: "1000m"volumes:- name: nfs-jar-volume          # 关联 PVCpersistentVolumeClaim:claimName: flink-trans-pvc   # 替换为你的 PVC 名称jobManager:resource:memory: "2048m"cpu: 1taskManager:resource:memory: "2048m"cpu: 1job:jarURI: local:///data/flink/jobs/ekrPatentDataProcessFlink-1.0.0.jar  # 容器内挂载路径entryClass: net.cnki.ekr.transfer.EkrFlinkTransApplicationargs: []parallelism: 2upgradeMode: stateless
4.3 查看日志
kubectl logs -f deploy/flink-kafka-trans

5.转发暴露端口(非必须,日志载k8s容器中可以看)

指定映射端口
kubectl port-forward deployment/flink-kafka-trans 28081:8081
不指定映射端口,由kubectl来选择和分配本地端口
kubectl port-forward deployment/flink-kafka-trans :8081
或者kubectl port-forward service/flink-kafka-trans 28081:8081

访问http://10.31.68.21:28081

6.要停止作业并删除FlinkDeployment

kubectl delete flinkdeployment/flink-kafka-trans
http://www.xdnf.cn/news/726067.html

相关文章:

  • 基于51单片机的音乐盒键盘演奏proteus仿真
  • git查看commit属于那个tag
  • LangChain完全指南:从入门到精通,打造AI应用开发新范式
  • lua的笔记记录
  • MSTNet:用于糖尿病视网膜病变分类的多尺度空间感知 Transformer 与多实例学习方法|文献速递-深度学习医疗AI最新文献
  • LLM 使用 MCP 协议及其原理详解
  • SQL进阶之旅 Day 8:窗口函数实用技巧
  • 极简以太彩光网络解决方案4.0正式发布,“彩光”重构园区网络极简之道
  • PostgreSQL ALTER TABLE 命令详解
  • Visual Studio 2022 发布独立的 exe 文件
  • 1,QT的编译教程
  • (18)混合云架构部署
  • 论文阅读笔记——FLOW MATCHING FOR GENERATIVE MODELING
  • 二、OpenCV图像处理-图像处理
  • QT-Creator安装教程(windows)
  • 【技能篇】RabbitMQ消息中间件面试专题
  • Fusion引擎赋能:流利说如何用阿里云Serverless Spark实现数仓计算加速
  • 世冠科技亮相中汽中心科技周MBDE会议,共探汽车研发数字化转型新路径
  • 农村土地承包经营权二轮延包—生成地块的KJZB字段
  • React---day5
  • Flutter 4.x 版本 webview_flutter 嵌套H5
  • 自证式推理训练:大模型告别第三方打分的新纪元
  • GitHub 趋势日报 (2025年05月29日)
  • FPGA管脚类型,及选择
  • Vue3处理number输入框避免NaN
  • 2025年渗透测试面试题总结-匿名[校招]攻防研究员(应用安全)(题目+回答)
  • 【解决办法】Git报错error: src refspec main does not match any.
  • 使用 SymPy 操作三维向量的反对称矩阵
  • STL解析——vector的使用及模拟实现
  • 缺页中断(Page Fault)详解