Flink Operator 使用指南 之 Flink Operator安装
介绍
Flink Kubernetes Operator 充当控制平面来管理 Apache Flink 应用程序的完整部署生命周期。尽管 Flink 的Native Kubernetes 集成已经允许用户在运行的 Kubernetes(k8s) 集群上直接部署 Flink 应用程序,但自定义资源和Operator Pattern 也已成为 Kubernetes 原生部署体验的核心。
Flink Kubernetes Operator 旨在承担管理 Flink 部署的人类操作员的职责。人类操作员对 Flink 部署应该如何运行、如何启动集群、如何部署作业、如何升级作业以及出现问题时如何反应有着深入的了解。Flink Kubernetes Operator 的主要目标是这些活动的自动化,这无法仅通过 Flink 原生集成来实现。
架构
Flink Kubernetes Operator充当控制平面,管理 Apache Flink 应用程序的完整部署生命周期。 Operator 可以使用 Helm 安装在 Kubernetes 集群上。在大多数生产环境中,它通常部署在指定的命名空间中,并控制一个或多个托管命名空间中的 Flink 部署。

Operator 遵循 Kubernetes 原则,特别是控制循环:

用户可以使用 Kubernetes 命令行工具 kubectl 与操作员进行交互。 Operator 持续跟踪与 FlinkDeployment 和 FlinkSessionJob 自定义资源相关的集群事件。当 Operator 收到新的资源更新时,它将采取行动将 Kubernetes 集群调整到所需状态,作为其协调循环的一部分。初始循环由以下高级步骤组成:
1.FlinkDeployment/FlinkSessionJob 自定义资源(CR)
2. Operator 观察 Flink 资源的当前状态(如果之前部署过)
3. Operator验证提交的资源更改
4. Operator协调任何所需的更改并执行升级
CR 可以随时(重新)应用于集群。Operator不断调整以模仿期望的状态,直到当前状态成为期望的状态。所有生命周期管理操作都是在 Operator 中使用这个非常简单的原理来实现的。
Operator 使用 Java Operator SDK构建,并使用 Native Kubernetes Integration 启动 Flink 部署并在后台提交作业。 Java Operator SDK 是一个更高级别的框架和相关工具,用于支持用 Java 编写 Kubernetes Operator。 Java Operator SDK 和 Flink 的原生 kubernetes 集成本身都使用 Fabric8 Kubernetes 客户端与 Kubernetes API 服务器交互。
Flink 资源生命周期
Operator 管理 Flink 资源的生命周期。下图说明了不同的可能状态和转换:

我们可以区分以下几种状态:
CREATED :资源已在 Kubernetes 中创建,但尚未由操作员处理
SUSPENDED :(作业)资源已暂停 升级:资源在升级到新规范之前被暂停
DEPLOYED :资源已部署/提交到 Kubernetes,但尚未被认为稳定,将来可能会回滚
STABLE :资源部署被认为是稳定的,不会回滚
ROLLING_BACK :资源正在回滚到最后一个稳定规范
ROLLED_BACK :资源使用最新的稳定规范进行部署
FAILED :作业最终失败
更多参考:Flink Operator Controller Flow 阐述Flink Operator 控制流程,初期不建议读者看这部分内容,如果需要定制开发Flink Operator的行为,可以参考改文章
部署/安装Flink Operator
Flink Operator提供了本地安装和远程安装的方式,其中远程需要保障用户的k8s集群连接外部网络,自动下载相关K8S镜像,这里我们主要记录一下本地安装的步骤。
1)为了构建操作员,您需要下载flink-operator源码,并解压到CentOS机器的指定目录下:

tree -L 1 flink-kubernetes-operator/
- 本地安装JDK 和 maven3.x 环境,需要注意Flink Kubernetes Operator 需要用户安装 Java 11.
[root@CentOSA ~]# rpm -ivh jdk-11.0.20_linux-x64_bin.rpm
warning: jdk-11.0.20_linux-x64_bin.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing... ################################# [100%]
Updating / installing...1:jdk-11-2000:11.0.20-9 ################################# [100%]
[root@CentOSA ~]# java -version
java version "11.0.20" 2023-07-18 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.20+9-LTS-256)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.20+9-LTS-256, mixed mode)
[root@CentOSA ~]# mvn -version
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /export/server/apache-maven-3.6.3
Java version: 11.0.20, vendor: Oracle Corporation, runtime: /usr/lib/jvm/jdk-11-oracle-x64
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.95.1.el7.x86_64", arch: "amd64", family: "unix"
3.进入Flink-Operator目录编译Flink Operator源码
[root@CentOSA App]# cd flink-kubernetes-operator
[root@CentOSA flink-kubernetes-operator]# mvn clean install -DskipTests -T 1C
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] Flink Kubernetes: [pom]
[INFO] Flink Kubernetes Standalone [jar]
[INFO] Flink Kubernetes Operator Api [jar]
[INFO] Flink Kubernetes Operator 相关文章:
Flink Operator 使用指南 之 Flink Operator安装
介绍 Flink Kubernetes Operator 充当控制平面来管理 Apache Flink 应用程序的完整部署生命周期。尽管 Flink 的Native Kubernetes 集成已经允许用户在运行的 Kubernetes(k8s) 集群上直接部署 Flink 应用程序,但自定义资源和Operator Pattern 也已成为 Kubernetes 原生部署体…...
类与对象(上篇)
前言 在之前我们学的C入门主要是为现在学习类与对象打基础,今天我们才算真正开始学习C了。因为类与对象的知识点比较多,所以我们将它分为三部分讲解,今天我们学习类与对象的上篇。 一、面向过程和面向对象的初步认识 1、面向过程 面向过程顾…...
使用SpringBoot集成MyBatis对管理员的查询操作
增删改查中的查询操作,对所有的普通管理员进行查询操作。 效果展示: 不仅可以在打开页面时进行对管理员的自动查询操作,还可以在输入框进行查询。 首先是前端向后端发送POST请求,后端接收到请求,如果是有参数传到后端…...
数据报文去哪儿了
背景 今天遇到一个诡异的现象,当接口附加一个IP时,主IP业务正常,附加IP死活不行,tcpdump抓包确可以正常抓到到业务的报文,但是在PREROUTING raw添加规则确没有命中,说明报文没有到netfilter框架内ÿ…...
Mysql中join on中的like使用
1、使用mysql中的函数CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。 SELECT * FROM Table1 INNER JOIN Table2 ON Table1.col LIKE CONCAT(%, Table2.col, %) 2、放弃使用join语句 SELECT * FROM Table1, T…...
微信运营神器:从群发到批量添加,让你的微信营销更轻松
在这个数字化时代,微信已经成为了我们生活中不可或缺的一部分。对于许多企业和个人来说,微信营销也是非常重要的一部分。但是,微信营销并不是一件容易的事情,需要花费大量的时间和精力。为了解决这个问题,今天我们将向…...
白杨SEO:2B企业营销是什么?当下主流的短视频直播平台有哪些?企业营销要做短视频直播选哪个平台更好?
今天白杨SEO就正式来讲讲2B企业营销选择哪个短视频直播平台更好? 图片在公众号:白杨SEO上看。 文章大纲提前看: 1、先说说2B企业营销是什么? 2、当下主流的短视频直播平台有哪些? 3、2B企业营销要做短视频直播选哪…...
将word中的表格无变形的弄进excel中
在上篇文章中记录了将excel表拷贝到word中来: 记录将excel表无变形的弄进word里面来-CSDN博客 本篇记录:将word中的表格无变形的弄进excel中。 1.按F12,“另存为...”,保存类型:“单个文件页面”,保存。…...
美国服务器在大陆连不上怎么回事?
在租用任何美国服务器之前,都需要先搞清楚一些使用问题,毕竟服务器能够不间断地访问也是站在们所期望的。但有时,美国服务器网站或许也会突然出现在大陆打不开的情况,在面临这种情况时,我们应该怎么做? 查看连不…...
postgresql数据库中update使用的坑
简介 在数据库中进行增删改查比较常见,经常会用到update的使用。但是在近期发现update在oracle和postgresql使用却有一些隐形区别,oracle 在执行update语句的时候set 后面必须跟着1对1的数据关联而postgresql数据库却可以一对多,这就导致数据…...
高可用elasticsearch集群搭建
目录 一、环境准备 二、机器配置 2.1 创建用户 2.2 修改用户权限 2.3 解析主机名 2.4 优化最大文件数 2.5 优化最大进程数 2.6 优化虚拟内存 2.7 重载配置 三、部署 3.1 创建文件夹并赋予权限 3.2 解压安装包并赋予权限 3.3 配置环境变量 3.4 创建数据、证书存放目录并赋…...
Linux本地MinIO存储服务远程调用上传文件
🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,…...
C语言 子函数调malloc申请内存返回给主函数使用——可行,但要注意
一般情况,子函数中动态申请内存,将地址返回给主函数,理论上应该也是可以的,需要子函数返回动态内存地址,主函数实参是相应的地址变量即可。只不过,主函数实参传入子函数之前,可能会将指针置空&a…...
Python入门教程之条件语句与运算符优先级详解
文章目录 Python 条件语句Python运算符优先级关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python兼职渠道 Python 条件语句 …...
高通Camera HAL3: CamX、Chi-CDK要点
目录 一、概述 二、目录 三、CamX组件之前的关系 一、概述 高通CamX架构是高通实现的相机HAL3架构,被各OEM厂商广泛采用。 二、目录 代码位于vendor/qcom/proprietary下: camx:通用功能性接口的代码实现集合chi-cdk:可定制化…...
springboot+vue热带野生动物园景点预约门票订票系统
热带野生动物园景点预约订票系统为野生动物园提供景点管理服务的系统,通过登录系统,管理该野生动物园所有的景点信息、景点分类信息、野生动物园新闻、通知公告、回复会员留言等,并可以通过订单管理查看会员预定的订单信息,对订单…...
Flutter和Android的混合跳转
1、项目特点 项目是Flutter作为主工程,将Android module或SDK作为模块嵌入到flutter中,与通常所熟悉的Android(或iOS)工程将flutter 为module嵌入到工程中有所不同。 2、业务需求 任意界面间的跳转,不管是flutter页…...
CyberRT-共享内存实现
CyberRT共享内存类图 共享内存消息发布 数据用共享内存发布时,首先会创建ShmTransmitter对象,包含两个主要成员segment和notifier,Segment用于创建共享内存(上面绿色部分),Notifer 最终构建ReadableInfo通…...
linux通过串口传输文件
简介 在嵌入式调试过程中,我们经常会使用调试串口来查看Log或者执行指令,其实,调试串口还有另一种功能,就是传输文件,本文说明使用MobaXterm串口工具来传输文件。 环境要求 嵌入式系统需要安装lsz和lrz,…...
uniapp 打包后各静态资源加载失败的问题(背景图,字体等)
原因: 1.部署地址不在域名根目录下 解决办法(推荐办法2): 办法1.如果部署在域名的文件夹下(例如h5), 则运行的基础路径修改为/h5/ 且注意路由模式 办法2.不修改运行的基础路径(还是./), 将代码中涉及背景图(background-image)和字体资源的路径前统一加,如图: tips: 标签内s…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...
Linux部署私有文件管理系统MinIO
最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能
指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...
jdbc查询mysql数据库时,出现id顺序错误的情况
我在repository中的查询语句如下所示,即传入一个List<intager>的数据,返回这些id的问题列表。但是由于数据库查询时ID列表的顺序与预期不一致,会导致返回的id是从小到大排列的,但我不希望这样。 Query("SELECT NEW com…...
