Flink on Kubernetes (flink-operator) 部署Flink

Flink Kubernetes Operator 介绍 Flink Kubernetes Operator是一种强大而灵活的工具,简化了在Kubernetes上部署和管理Flink集群的复杂性,让开发人员和运维团队能够更专注于业务逻辑而非基础设施的细节。通过使用Operator,可以更轻松地管理Flink作业的生命周期,并根据负载的需求自动调整集群规模,使得在 Kubernetes 上运行 Flink 应用程序变得更加方便和可靠。 阅读详情

flink on k8s 官网

https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-release-1.1/docs/try-flink-kubernetes-operator/quick-start/
我的部署脚本和官网不一样,有些地方官网不够详细

部署k8s集群

注意,按照默认配置至少有两台worker

安装helm

https://helm.sh/zh/docs/intro/install/

安装flink opreator

kubectl create -f https://github.com/jetstack/cert-manager/releases/download/v1.8.2/cert-manager.yaml
helm repo add flink-operator-repo https://downloads.apache.org/flink/flink-kubernetes-operator-1.1.0/
helm install flink-kubernetes-operator flink-operator-repo/flink-kubernetes-operator -n flink
  • 安装完成后,资源如下
[root@k8s1 flinkinstall]# helm list -n flink
NAME                            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
flink-kubernetes-operator       flink           1               2024-03-07 16:57:48.374299701 +0800 CST deployed        flink-kubernetes-operator-1.7.0 1.7.0 
[root@k8s1 flinkinstall]# kubectl get all -A
NAMESPACE              NAME                                             READY   STATUS    RESTARTS   AGE
cert-manager           pod/cert-manager-66b646d76-gkw55                 1/1     Running   1          2d2h
cert-manager           pod/cert-manager-cainjector-59dc9659c7-pkgrm     1/1     Running   1          2d2h
cert-manager           pod/cert-manager-webhook-7f7787f7fd-wd5vv        1/1     Running   1          2d2h
flink                  pod/flink-kubernetes-operator-857d48ff65-45mg2   2/2     Running   6          5d20h

NAMESPACE              NAME                                     TYPE        CLUSTER-IP        EXTERNAL-IP   PORT(S)                  AGE
cert-manager           service/cert-manager                     ClusterIP   192.178.138.19    <none>        9402/TCP                 2d2h
cert-manager           service/cert-manager-webhook             ClusterIP   192.178.130.219   <none>        443/TCP                  2d2h
flink                  service/flink-operator-webhook-service   ClusterIP   192.178.139.67    <none>        443/TCP                  5d20h

NAMESPACE              NAME                                        READY   UP-TO-DATE   AVAILABLE   AGE
cert-manager           deployment.apps/cert-manager                1/1     1            1           2d2h
cert-manager           deployment.apps/cert-manager-cainjector     1/1     1            1           2d2h
cert-manager           deployment.apps/cert-manager-webhook        1/1     1            1           2d2h
flink                  deployment.apps/flink-kubernetes-operator   1/1     1            1           5d20h

NAMESPACE              NAME                                                   DESIRED   CURRENT   READY   AGE
cert-manager           replicaset.apps/cert-manager-66b646d76                 1         1         1       2d2h
cert-manager           replicaset.apps/cert-manager-cainjector-59dc9659c7     1         1         1       2d2h
cert-manager           replicaset.apps/cert-manager-webhook-7f7787f7fd        1         1         1       2d2h
flink                  replicaset.apps/flink-kubernetes-operator-857d48ff65   1         1         1       5d20h

  • 此时k8s集群就可以支持我们按照flink-opreator的指定格式提交flink任务了

提交flink任务

session模式与application模式区别在于资源隔离度

  • session模式: jobmanager预先启动,随时准备接收flink jar,启动taskmanager,flink任务结束后jobmanager不退出,所有flink任务共享同一个jobmanager,资源隔离差,某个flink任务导致jobmanager异常,会影响到其他flink任务,小任务,不在乎异常情况可以用
  • application模式:每次提交flink任务才会启动一个jobmanger,flink任务结束后,jobmanager也退出,隔离效果好,生产常用
  • per-job模式:这个模式与application模式类似, 区别在于client的运行位置,但是新版的flink已经删除了这种提交方式

这里是flink on yarn的运行模式
https://blog.youkuaiyun.com/java_creatMylief/article/details/126172793

application模式

apiVersion: flink.apache.org/v1beta1
kind: FlinkDeployment
metadata:
  name: pod-template-example
spec:
  image: flink:1.15
  flinkVersion: v1_15
  flinkConfiguration:
    taskmanager.numberOfTaskSlots: "2"
  serviceAccount: flink
  podTemplate:
    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-template
    spec:
      serviceAccount: flink
      containers:
        # Do not change the main container name
        - name: flink-main-container
          env:
          volumeMounts:
            - mountPath: /flink-logs
              name: flink-logs
      initContainers:
        - name: init-nginx
          image: busybox
          command: [ 'sh','-c','wget http://192.168.33.2/phoenix-client-1.0-SNAPSHOT-jar-with-dependencies.jar -O /flink-logs/StateMachineExample1.jar' ]
          volumeMounts:
            - mountPath: /flink-logs
              name: flink-logs
      volumes:
        - name: flink-logs
          emptyDir: { }
  jobManager:
    resource:
      memory: "1024m"
      cpu: 1
  taskManager:
    resource:
      memory: "1024m"
      cpu: 1
  job:
    jarURI: local:///flink-logs/StateMachineExample1.jar
    parallelism: 1
    entryClass: org.examplexxx.test
    args: [/path/from/data,/path/to/data]
    initialSavepointPath: hdfs://flink/ckpath/xxxxx
    
kubectl apply -f ${name}.yaml

kubectl port-forward svc/basic-example-rest 8081 --address 192.168.33.81

访问 http://192.168.33.81:8081

jarURI: local:///flink-logs/StateMachineExample1.jar
此处jarURL只得是docker内部路径,且不支持远程路径(http/s3/hdfs),因此需要将jar包放到docker内部。

1、可以将flink版本和jar包打到一个镜像中。
2、可以使用pvc挂载进去。
3、使用initContainers和 containers使用相同的挂载路径,然后使用远程文件下载放到挂载路径中,containers就能获取到该jar包

此处使用第三种情况,使用initContainers变相支持远程文件地址,使用起来比较方便。

yarn-application 对比

yarn-applicationk8s-application
-p (并行度)spec.job.parallelism
-yjm (jobmanager内存)spec.jobManager.resource.memory
-ytm (taskmanager内存)spec.taskManager.resource.memory
-ys (taskmanger的slot槽数)spec.flinkConfiguration.taskmanager.numberOfTaskSlots
-c (主类)spec.job.entryClass
jar (jar包)spec.job.jarURI
-s (恢复点启动)spec.job.initialSavepointPath

session模式

部署session cluster

apiVersion: flink.apache.org/v1beta1
kind: FlinkDeployment
metadata:
  namespace: flink
  name: session-deployment-only
spec:
  image: flink:1.13.6
  flinkVersion: v1_13
  imagePullPolicy: IfNotPresent # 镜像拉去策略,优先本地,没有,仓库拉去
  ingress:
    template: "flink.k8s.io/{{namespace)}/{{name}}(/|$)(.*)"
    className: "Nginx"
    annotations:
      taskmanager.numberOfTaskSlots: "2"
    serviceAccount: flink
    jobManager:
      replicas: 1
      resource:
        memory: "1024m"
        cpu: 1
    taskManager:
      replicas: 1
      resource:
        memory: "1024m"
        cpu: 1

kubectl apply -f ${name}.yaml


在这里插入图片描述
部署cluster完成,配置svcType 后即可访问,flink web ui,此时jobManager是启动着的 taskmanager随着flink jar进行启动和停止

部署flink jar

apiVersion: flink.apache.org/v1beta1
kind: FlinkSessionJob
metadata:
  namespace: flink
  name: session-job-only
  job:
    jarUrl: sasa
    entryClass: aa
    parallelism: 1
    upgradeMode: stateless


kubectl apply -f ${name}.yaml

【梳理】k8s使用Operator搭建Flink集群(高可用可选) 本文内容来源于Flink官网,进行翻译、简化、整理,供大家参考~ 阅读详情

相关推荐

Flink Operator 使用指南 之 Flink Operator安装

Flink Operator实战基础篇

麦田里的守望者-蒋中洲【相信相信的力量】 1589

flink kubernetes operator 入门与实战

Flink Kubernetes Operator 是一个基于 Kubernetes 的 Apache Flink 集群管理工具,它可以帮助用户在 Kubernetes 上轻松部署和管理 Flink 集群。本课程将介绍 Flink Kubernetes Operator 的基本概念和使用方法。在本课程中,您将学习如何使用 Flink Kubernetes Operator 部署和管理 Flink 集群。我将从 Flink Kubernetes Operator 的基本概念开始,介绍如何在 Kubernetes 上安装和配置 Flink Kubernetes Operator。然后,我将介绍如何使用 Flink Kubernetes Operator 部署和管理 Flink 集群,包括如何创建 Flink 集群、如何扩展和缩小 Flink 集群、如何升级 Flink  k8s operator 和 Flink 版本等。

flink on k8s部署--kubernetes operator方式&Application Mode方式(附构建flink镜像Dockerfile)

本次部署方案采用flink on k8s,部署方式是flink-kubernetes-operator,部署flink-kubernetes-operator需要helm。我这里使用的是jdk1.8和flink1.13,或者用docker镜像执行flink命令。我使用的是flink1.13,其他版本类似,在docker hub中查询自己所使用版本的基础镜像即可。需要kubernetes version>=1.6,flink version>=1.13。登陆数据库检查产出情况。

Sword_Zhao的博客 2218

flink-kubernetes-operator 的简单使用

flink kubernetes operator 学习笔记

阿甘兄 4382

flink-operator 实战:Flink on Kubernetes 从部署到稳定运行

从Kubernetes资源管理的基础概念出发,理解声明式运维如何解决有状态分布式系统的生命周期难题。Operator模式通过自定义控制器持续维持期望状态,让扩缩容、故障恢复、版本升级成为可编排的自动化流程。在实时计算场景中,Flink作为核心引擎,其集群的稳定性直接决定数据管道质量。本文以flink-operator的完整落地过程为线索,覆盖版本兼容性检查、cert-manager依赖配置、Helm安装、FlinkDeployment编写、任务提交及生产问题排查,为大数据工程师提供一套可复用的Flink o

weixin_29035405的博客 273

【Flink on k8s】- 9 - 本地部署 Flink kubernetes operator

flink kubernetes operator 版本: 1.4.0helm 版本: 3.1.0flink kubernetes operator 支持的 Flink 版本:v1.13, v1.14, v1.15, v1.16。

欢迎来到我的博客,一起探索代码里的世界! 1450

Flink on Kubernetes Operator:在K8s上部署Flink的权威指南

**[Flink on Kubernetes Operator](https://github.com/GoogleCloudPlatform/flink-on-k8s-operator)** 是由Google Cloud Platform维护的一个开源项目,旨在简化Apache Flink集群在Kubernetes(K8s)环境中的部署和管理过程。通过利用Kubernetes的原生资源管理和自动

gitblog_00423的博客 843

flink部署选型方案以及flink-on-k8s部署

flink部署选型方案以及flink-on-k8s部署

寂夜了无痕的博客 410

10分钟上手flink-on-k8s-operator:从部署到提交Flink作业的终极教程

flink-on-k8s-operator是一款强大的Kubernetes operator,专为简化Apache Flink和Beam应用的生命周期管理而设计。本教程将带你快速掌握从部署operator到提交Flink作业的完整流程,让你在10分钟内轻松上手这个高效工具。 ## 📋 准备工作:部署前的必备条件 在开始部署flink-on-k8s-operator之前,请确保你的环境满足以下

gitblog_00584的博客 1054

活用QueryWrapper与@Select注解,构建MybatisPlus动态多表查询方案

本文深入探讨了如何结合MybatisPlus的QueryWrapper与@Select注解,构建高效灵活的动态多表关联查询方案。通过解析${ew.customSqlSegment}占位符机制,并设计通用的Service层封装,解决了复杂条件下多表查询的SQL拼接难题,显著提升了后台管理系统列表查询的开发效率与可维护性。

weixin_29291069的博客 271

Orbbec-Gemini-335 深度相机 Python SDK 编译与配置全记录(Windows 环境)

本篇博客将围绕 Windows 系统下 Orbbec SDK 的 Python 配置与编译过程进行详细说明,主要使用的是官方提供的 pyorbbecsdk Python wrapper 项目以及 Orbbec SDK V2 Python Wrapper 配置指南,并记录了安装与配置过程中遇到的若干问题及解决办法。

Junseer的博客 1965

从源码到部署:flink-on-k8s-operator开发者指南与贡献实践

flink-on-k8s-operator是一款用于管理Apache Flink和Beam应用生命周期的Kubernetes Operator,本指南将带你从源码构建到部署实践,掌握完整开发流程与贡献方法。 ## 项目架构概览 flink-on-k8s-operator基于Kubernetes [controller-runtime](https://github.com/kubernetes

gitblog_00524的博客 1068

摄像头visio_最全面弱电智能VISIO图标集(百个),高大上方案就靠这个了

原标题:最全面弱电智能VISIO图标集(百个),高大上方案就靠这个了不会用Visio,Visio画拓扑画的很丑,怎么办?本期sin66小编免费分享一份最全面的弱电智能VISIO图标集(百个)给大家,以后画拓扑、做方案,直接高大上起来!需要本期资料直接看文末!!接下来我们一起看一下这些Visio图标大全:我们从下图可以看出前端设备主要是由枪机,筒机,无线摄像头,半球,球机,USB摄像头等构成,对于绘...

weixin_39644915的博客 1万+

flink-on-k8s-operator部署指南:从Helm Chart到生产环境的最佳实践

flink-on-k8s-operator是一个Kubernetes operator,用于管理Apache Flink和Beam应用程序的生命周期。它允许用户通过Kubernetes自定义资源(CR)来定义和管理Flink集群和作业,极大简化了Flink在Kubernetes上的部署和运维流程。 ## 准备工作 ### 环境要求 - 一个运行中的Kubernetes集群(建议1.14+版本

gitblog_00221的博客 706

HCIP-Cloud Service DevOps Engineer V2.0 华为认证云服务 DevOps高级工程师 章节测试题+结课测试题(模拟考试题)汇总

本文为HCIP-Cloud Service DevOps Engineer V2.0 华为认证云服务DevOps高级工程师 在线课程中所有章节测试以及结课测试(HCIP-Cloud Service DevOps Engineer模拟考试)习题和答案

gaogao0305的博客 2266

28-手把手教你手写CPU-Verilog - 乘法器设计:Booth算法与Wallace树乘法器

文章摘要: 本文详细介绍了两种高效乘法器设计方法:Booth算法和Wallace树乘法器。Booth算法通过检测乘数连续1/0减少部分积,适合有符号数运算;Wallace树采用树形结构压缩部分积,显著降低延迟。文章包含算法原理、具体示例、Verilog实现代码(4位乘法器)及性能对比表,指出Booth适用于通用处理器,Wallace树更适合高性能DSP/GPU。最后强调实际设计中需根据速度、面积和功耗需求选择合适方案。

2301_79143213的博客 206

flink-on-k8s-operator部署安装及alink集成

flink-on-k8s-operator、Alink集成部署安装 [[Google官方参考文档]]: (Google_README.md) 1. 获取源码 ## 下载源码 git clone https://github.com/leihongyang/flink-on-k8s-operator.git git checkout pinnet 2. 准备镜像 从海外构建的镜像有: FROM gcr.io/flink-operator/flink-operator:latest ## 和 FROM gcr

u010318804的博客 2042

GEE:连续变化检测 CCDC 提取断点信息(干扰时间、干扰幅度、干扰次数)

本文将介绍在 Google Earth Engine (GEE) 平台上连续变化检测与分类(Continuous Change Detection and Classification, CCDC)提取扰动时间、干扰幅度、干扰次数信息,并下载到本地的代码。

养乐多的博客 1945

使用Flink Operator部署Flink on k8s方案

通过 Flink Operator 在 Kubernetes 上部署 Flink,可以显著简化 Flink 的运维工作,并充分利用 Kubernetes 的弹性伸缩和高可用性特性。

qq_41067796的博客 2432

Python爬取公交线路信息及站点shp数据 文末附数据下载地址

三、现在已经获取到了各个线路名称、链接,以及所途径的上下行站点,那么接下来就应该对开始对第三页url进行信息采集,即本次爬虫的最终目的:爬取所有站点的GPS坐标数据。但坑就坑在,二环一号线属于环线,所以只有左侧有站点数据,而其他非环线车次的站点数据分有上下行,如果用正则匹配,则分不清楚到底哪些是上行站点哪些是下行站点。以前爬过百度地图,当时用的是API平台,加上网站比较规范,所以标签节点什么的都比较清晰,但这次由于特殊原因所选择的网站为公交网,废话不多说直接开始吧。checi=二环一号线。

J_Giser的博客 1316

OpenClaw插件配置错误修复完全指南

插件文件名是插件目录结构正确package.json配置正确OpenClaw的插件系统还在快速迭代,偶尔会遇到这种配置问题。看错误信息检查配置文件检查实际文件对比差异修复问题大部分问题都能解决。查看官方文档:https://openclaw.ai/docs提Issue:https://github.com/openclaw/openclaw/issues加入Discord社区求助快速修复命令汇总。

Maynor的博客 4092

Flink On K8s使用合集

Flink On K8s使用 版本 修订内容 修改人 日期 1.0 初始 刘黎 2020.07.08 1.在K8s上...

tamako0v0的博客 3073

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【flink on k8s】部署flink-operator

1.准备各个配置文件 crd.yaml apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: name: flinkapplications.flink.k8s.io spec: group: flink.k8s.io names: kind: FlinkApplication listKind: FlinkApplicationList plural: flin

echo245的博客 2506

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

flink-on-k8s-operator完全指南:如何在Kubernetes上轻松管理Apache Flink应用生命周期

flink-on-k8s-operator是一款强大的Kubernetes operator,专门用于简化Apache Flink和Beam应用在Kubernetes集群上的生命周期管理。通过它,用户可以轻松实现Flink集群的部署、扩展、升级和监控等一系列操作,极大降低了在K8s环境中运行Flink应用的复杂度。 ## 为什么选择flink-on-k8s-operator? 在Kuberne

gitblog_01026的博客 379

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

FlinkCluster自定义资源深度探索:flink-on-k8s-operator的灵魂所在

flink-on-k8s-operator是一个强大的Kubernetes operator,用于管理Apache Flink和Beam应用程序的生命周期。其核心功能围绕着FlinkCluster自定义资源展开,通过自定义资源定义(CRD)实现对Flink集群的全面控制。本文将深入探索FlinkCluster自定义资源的结构、功能和使用方法,帮助您快速掌握这一核心组件。 ## 什么是FlinkC

gitblog_00910的博客 438

Flink on Kubernetes深度解析:原生部署与Operator模式实战指南

metadata:spec:resource:cpu: 1resource:cpu: 2job:维度原生Kubernetes部署Operator模式部署部署复杂度需手动编排多个资源对象(Deployment/Service/ConfigMap)单一FlinkDeployment CR定义全生命周期自动化程度低(需脚本辅助作业提交与监控)高(自动扩缩容、故障恢复、版本升级)资源弹性静态分配,扩缩容需人工干预动态调整,支持基于指标的弹性策略运维成本。

zuiyuelong的博客 1429
上一篇: k8s运维命令小工具
下一篇: Doris建表注意事项
JNWsong
博客等级 码龄9年 287粉丝 204原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值