Flink Kubernetes Operator 介绍

一、简介

Flink Kubernetes Operator是针对在Kubernetes上运行Apache Flink应用程序而设计的工具。它充分利用了Kubernetes的优势,实现了对Flink集群的弹性管理和自动化操作,通过扩展Kubernetes API的方式,提供了管理和操作Flink部署的功能。

图片

二、优缺点

优点:

1.部署和监控 Flink 应用程序和会话部署:Flink Kubernetes Operator 允许用户在 Kubernetes 集群中轻松部署和监控 Flink 应用程序。它支持会话模式部署,允许多个 Flink 作业共享相同的 Flink 集群,优化资源使用并简化管理。

2.升级、挂起和删除部署:用户可以方便地升级 Flink 应用程序,无需中断当前作业。同时,Flink Kubernetes Operator 也支持暂停或删除部署,提供灵活的管理选项以适应不同的运维需求。

3.完整的日志记录和度量集成:它提供了强大的日志记录和监控功能,使运维团队能够实时监控 Flink 应用程序的性能和状态。这些日志和度量信息可以与 Kubernetes 的监控工具集成,方便进行性能分析和故障排查。

4.灵活的部署和与 Kubernetes 工具的本地集成:Flink Kubernetes Operator 支持灵活的部署策略,允许用户根据需求定制 Flink 应用程序的部署。此外,由于它是专为 Kubernetes 设计的,因此与 Kubernetes 的原生工具和生态系统(如 Helm)集成得非常紧密,进一步增强了用户的部署和管理体验。

缺点:

1.兼容的版本有限:目前支持的 Flink版本有:1.13、1.14、1.15、1.16、1.17和1.18。

2.灵活性不够高:目前还不能完全自动扩展或缩减资源。

3.用户体量较少,未知的 bug 较多:目前是 apache flink 出来的一个子项目,大部分企业都还是在使用 fink native kubernetes 管理,或者自己二次开发了 Flink Kubernetes Operator,但没有完全贡献到社区。

三、组件

Flink Kubernetes Operator的组件主要包括以下几个部分:

Operator控制器: 这是Flink Kubernetes Operator的核心组件,负责监听Kubernetes API中的Flink集群和作业定义,并根据这些定义执行相应的操作。它管理着Flink集群的生命周期,包括集群的创建、更新、删除等操作。

自定义资源(Custom Resource): 用户可以通过自定义资源定义Flink集群和作业的配置。这些资源描述了Flink集群的规格、资源需求、作业的配置等信息。Operator会根据这些自定义资源的定义来创建和管理Flink集群。


资源控制器(Resource Controller): 资源控制器负责管理Flink集群的计算资源。它会根据集群的需求动态调整TaskManager的数量和配置,以确保集群能够高效地处理作业负载。


作业管理器(Job Manager): 作业管理器是Flink集群的中心组件,负责作业的调度和管理。它会接收用户提交的作业,并根据集群的资源状况进行作业的调度和执行。作业管理器还提供作业的监控和故障恢复功能。

任务管理器(Task Manager): 任务管理器是Flink集群的计算节点,负责执行具体的计算任务。它会接收作业管理器分配的任务,并在本地执行计算操作。任务管理器会将计算结果返回给作业管理器,并在需要时与其他任务管理器进行数据传输和通信。

存储卷(Storage Volumes): Flink Kubernetes Operator使用Kubernetes的存储卷来持久化Flink集群的状态和数据。这些存储卷可以是持久化存储卷或临时存储卷,具体取决于用户的需求和配置。

监控与日志系统: Flink Kubernetes Operator可以集成Kubernetes的监控和日志系统,这些系统可以提供实时监控和日志收集功能,帮助用户了解Flink集群和作业的运行状态,并进行故障排除和性能优化。

四、部署作业流程

用户使用Kubernetes命令行工具kubectl与Flink Operator进行交互。Operator将会持续追踪与FlinkDeploymenty与FlinkSessionJob自定义资源相关的部署事件,同时通过Operator内部的一个观察把状态返回给用户。

图片

Operator由以下步骤组成:

1.用户使用提交FlinkDeployment自定义资源(CR)并提交到Operator上。

2.Operator启动Flink集群部署,应创建UI访问的ingress规则,与此同时创建JobManager和TaskManager并提交Flink作业。

3.可以随时在集群上(重新)应用部署。Operator不断调整以模仿期望的状态,直到当前状态变为用户期望状态,这个过程称为reconcile,是一个持续进行的循环。

五、工作流程

Flink Kubernetes Operator的工作流程大致可以分为以下几个步骤:

1.资源定义:

用户通过定义Flink CR资源,如Flink Application或Flink Session Cluster,来描述他们希望部署的Flink集群的配置。

2.资源提交:

用户将CR资源提交到Kubernetes集群。

3.Operator响应:

Flink Kubernetes Operator监测到CR资源的提交,开始执行相应的操作。

4.集群部署与管理:

Operator根据CR的定义,部署Flink集群,JobManager节点和TaskManager节点。

Operator还负责监控集群状态,处理故障恢复,进行升级和缩放等操作。

5.状态更新与反馈:

Operator将集群的实时状态更新到CR的状态字段中,用户可以通过查询CR的状态来获取集群的运行情况。

六、安装与使用

环境准备,需要安装docker、k8s集群、 heml

安装operator

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

图片

查看pod是否正常运行

kubectl get pods -A |grep cert-manager

图片

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

图片

查看pod是否正常

kubectl get pods -A |grep flink-kubernetes-operator

图片

Operator启动完成后,可以提交flink作业了,这里使用官方的资源文件basic.yaml,其内容如下:

apiVersion: flink.apache.org/v1beta1
kind: FlinkDeployment    
metadata:name: basic-example
spec:image: flink:1.15flinkVersion: v1_15flinkConfiguration:taskmanager.numberOfTaskSlots: "2"serviceAccount: flinkjobManager:resource:memory: "2048m"cpu: 1taskManager:resource:memory: "2048m"cpu: 1job:jarURI: local:///opt/flink/examples/streaming/StateMachineExample.jarparallelism: 2
upgradeMode: stateless

提交作业

kubectl create -f basic.yaml

查看作业是否启动

kubectl get pods -A |grep basic

图片

如果需要打开flink web监控页面,需要暴露端口,命令如下

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

图片

删除Flink作业

kubectl delete -f basic.yaml

七、结语

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/639573.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Qt】—— Qt的基本介绍

目录 (一)什么是Qt (二) Qt的发展史 (三)Qt⽀持的平台 (四) Qt版本 (五)Qt的优点 (六)Qt的应⽤场景 (七&#xff09…

5G_射频测试_测试模式解读(三)

Downlink test models FR1 test model 1.1 (NR-FR1-TM1.1)(满PRB,QPSK)FR1 test model 1.2 (NR-FR1-TM1.2)( QPSK/boosted/40% QPSK)FR1 test model 2 (NR-FR1-TM2)(64QAM 只有1个PRB 功率最低)FR1 test model 2a (NR-FR1-TM2a) )(256QAM 只…

一文了解SSL证书价格

SSL证书的价格因供应商、证书类型和服务级别而异。以下是一些一般性的价格范围: 1. 免费证书:一些证书颁发机构(CA)提供免费的SSL证书,最著名的是JoySSL。这种证书通常适用于个人网站和小型业务。免费证书提供了基本的…

redis优化系列(六)

本期分享redis内存过期策略:过期key的处理 Redis之所以性能强,最主要的原因就是基于内存存储。然而单节点的Redis其内存大小不宜过大,会影响持久化或主从同步性能。 可以通过修改配置文件来设置Redis的最大内存: maxmemory 1gb …

[数据结构 - C++] 红黑树RBTree

文章目录 1、前言2、红黑树的概念3、红黑树的性质4、红黑树节点的定义5、红黑树的插入Insert6、红黑树的验证7、红黑树与AVL树的比较附录: 1、前言 我们在学习了二叉搜索树后,在它的基础上又学习了AVL树,知道了AVL树是靠平衡因子来调节左右高…

【C++ | 数据结构】从哈希的概念 到封装C++STL中的unordered系列容器

文章目录 一、unordered系列容器的底层结构 - 哈希1. 哈希概念2. 哈希冲突 二、解决哈希冲突方法一:合理设计哈希函数🚩哈希函数设计原则🚩常见哈希函数 方法二:开闭散列🚩闭散列线性探测法(实现&#xff0…

如何在CentOS使用docker部署青龙面板并实现无公网ip远程访问

文章目录 一、前期准备本教程环境为:Centos7,可以跑Docker的系统都可以使用。本教程使用Docker部署青龙,如何安装Docker详见: 二、安装青龙面板三、映射本地部署的青龙面板至公网四、使用固定公网地址访问本地部署的青龙面板 青龙…

【管理篇 / 登录】❀ 07. FortiOS 7.4 初始登录提示 ❀ FortiGate 防火墙

【简介】FortiOS 7.4在初始登录时显示的内容和以前的版本有很大的相同,很多人不熟悉英文和功能,不清楚应该怎么操作,这里就详细的介绍一下。 恢复出厂设置 为了完整的查看到启动配置内容,这里我们先将防火墙恢复出厂。 ① FortiGa…

从 `go build` 到 `go test`:Go 语言命令行工具全解析

从 go build 到 go test:Go 语言命令行工具全解析 引言go build 命令详解go test 的运用其他重要的 Go 命令结论 引言 在当今的软件开发领域,Go 语言以其简洁、高效和强大的并发处理能力受到广泛的欢迎。作为一门现代编程语言,Go 不仅拥有丰…

多标签节点分类

Multi-Label Node Classification on Graph-Structured Data,TMLR’23 Code 学习笔记 图结构数据的多标签分类 节点表示或嵌入方法 通常会生成查找表,以便将相似的节点嵌入的更近。学习到的表示用作各种下游预测模块的输入特征。 表现突出的方法是基于随机游走(ran…

moon‘s 博客网站部署维护项目说明

项目概述 背景 博客系统致力为广大用户提供优质的互动交流平台,实现对博客发表文章、评论、图片、好友等数据的管理,同时实现了博客内容及时、快速更新的功能,系统不仅保留了传统博客系统的功能,还加上了一些人性化的界面设计,使…

分享flask_socketio配置时遇到的一些问题

flask_socketio 1.前言 flask_socketio应用启动后,在控制台中,存在着flask_socketio这些烦人的log 一堆的get和post几秒一个让我什么都看不清,因此想要关掉log 结果没想到,找了很多办法半天去不掉flask_socketio的log 试过了…

k8s之包管理器Helm

helm的作用就是通过打包的方式,把deployment service ingress这些打包在一块,一键式的部署服务。类似yum官方提供的一个类似与安装仓库的功能,可以实现一键化部署应用。 Helm的三个重要概念 ●Chart:Helm 的软件包,采…

数学建模竞赛实战-Latex公式、表格、图文排版

公式排版 Latex公式排版 行内公式:使用$$包围: 整行公式:使用$$$$包围: 公式编号: 使用$$不能自动编号: 公式编号使用equation: <

中仕教育:省考联考可以报多个省份吗?

省考联考就是多个省份在同一时间进行的公务员招聘考试&#xff0c;极大地增加了考生的选择空间。虽然是联考&#xff0c;但是招录工作都是各省份单独组织的&#xff0c;对于考生来说&#xff0c;省考联考可以报多个省份吗? 首先&#xff0c;每个省份的公务员招聘条件、考试内…

USB 2.0接口标准

一、USB2.0系统构成 USB&#xff08;UniversalSerialBus&#xff09;体系包括“主机&#xff08;Host&#xff09;”、“设备&#xff08;Device&#xff09;”以及“物理连接&#xff08;Connector&#xff09;”三个部分。其中主机是一个提供USB接口及接口管理能力的…

LeetCode.670. 最大交换

题目 题目链接 分析 这道题的意思是我们只能交换一次&#xff0c;需要得到最大的数字。 我们的第一个想法就是要这个数字先变成一个数组&#xff0c;便于我们操作。 然后把数组最大的数放到第一个位置&#xff0c;如果最大的数字已经在第一个位置&#xff0c;那么就把次大的…

【C++】C++中规范[ 类型转换标准 ] 的四种形式

前言 大家好吖&#xff0c;欢迎来到 YY 滴C系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; 目录 一.回顾C语言中的类型转换1&#xff09…

RPC框架简介

RPC定义 远程过程调用&#xff08;Remote Procedure Call&#xff09;。RPC的目的就是让构建分布式计算&#xff08;应用&#xff09;更加简单&#xff0c;在提供强大的调用远程调用的同时不失去简单的本地调用的语义简洁性 RPC整体架构 服务端启动时首先将自己的服务节点信息…

一个golang小白使用vscode搭建Ununtu20.04下的go开发环境

文章目录 前言搭建go环境下载go安装包解压go压缩包完成安装配置环境变量编写一个helloword程序 安装VSCode插件安装智能提示插件安装go依赖包修改代理并重新安装依赖包 go.mod 和 go.workgo.modgo.work小试一下go.work 总结 前言 先交代一下背景&#xff0c;距离正式接触golan…