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.hqwc.cn/news/414797.html

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

相关文章

田园好比一幅美丽的画

一望无垠的麦田,清新的空气,茂密的小树林,这一切都呈现在田园里。 清晨,东方刚刚泛起了鱼肚白,一切都雾蒙蒙的,仿佛给大地披上了一层薄薄的轻纱,大地在沉睡当中,小花沉静在美梦中&am…

复杂字幕特效SDK,重塑视频字幕新体验

字幕特效已经成为了提升视频品质、增强观众体验的重要手段。美摄科技作为行业领先的技术提供商,近期推出的复杂字幕特效SDK,更是引领了这一领域的创新潮流。 美摄科技复杂字幕特效SDK,不仅具备了电影级别的字幕功能,更实现了众多…

4D毫米波雷达——RADIal数据集、格式、可视化 CVPR2022

前言 本文介绍RADIal数据集,来着CVPR2022的。 它是一个收集了 2 小时车辆行驶数据的数据集,采集场景包括:城市街道、高速公路和乡村道路。采集设备包括:摄像头、激光雷达和高清雷达等,并且还包括了车辆的 GPS 位置和…

街机模拟游戏逆向工程(HACKROM)教程:[11]68K汇编sub指令

简介: sub -减法指令 该指令的作用是[源操作数]减[目的操作数],结果传递至[目的操作数],[源操作数]保持不变。 例子: sub.b d0, d1 如果d0 $20 ,d1$10 ,执行后d1 $10 如果d0 $10 &#…

聚焦用户需求,优化产品服务 — 卓翼飞思开展调研走访活动

为深入了解用户需求,持续提升产品和服务,卓翼飞思近日开展用户调研走访活动,该活动采用线上问卷调研线下一对一走访的形式,旨在使产品更好地满足用户需求,助推其更好地运用到教学及科研中。 一. 线上线下联动&#xff…

CentOS 6.10 安装图解

特特特别的说明 CentOS发行版已经不再适合应用于生产环境,客观条件不得不用的话,优选7.9版本,8.5版本次之,最次6.10版本(比如说Oracle 11GR2就建议在6版本上部署)! 引导和开始安装 选择倒计时结…

APP使用Fiddler抓包,快速教程

1、设置app连接网络(手机WiFi)的ip和端口。选择-手动-输入(Fidller打开的电脑)ip地址和(Fidller对应的)端口。如下图所示:

功能测试之软件测试用例的理论

用文字描述出系统测试时的操作步骤,或许有些帮助 写测试用例好处 1)清晰思路、避免遗漏 当系统功能多且复杂时,根据系统每个模块,拆分功能点,花点时间思考并整理成文档,尽可能结合功能与业务&#xff0c…

网络和Linux网络_14(IO多路转接)poll和epoll编程_服务器

目录 1. poll 1.1 poll函数 1.2 简易poll服务器 pollServer.hpp 1.3 poll的优缺点 2. epoll 2.1 epoll的相关函数 2.2 epoll的原理 2.3 简易epoll服务器 Epoll.hpp EpollServer.hpp 2.4 epoll的优点 2.5 水平触发和边缘触发 本篇完。 1. poll poll也是一种多路转…

Pixelmator Pro 智能调色抠图AI图像处理工具(含下载安装指南)

Pixelmator Pro 是 Mac 上的一款智能图像处理工具,他依靠 Mac 强大的芯片算法集成了非常强力的工具和功能,该软件主打一个智能,支持一键智能抠图,修复,只能颜色调整,甚至还贴心的做了图层自动命名 安装包&a…

AR与AI融合加速,医疗护理更便捷

根据Reports and Data的AR市场发展报告,到2026年,预计医疗保健市场中的AR/VR行业规模将达到70.5亿美元。这一趋势主要受到对创新诊断技术、神经系统疾病和疾病意识不断增长的需求驱动。信息技术领域的进步,包括笔记本电脑、计算机、互联网连接…

Linux环境下,针对QT软件工程搭建C++Test单元测试环境的操作指南

文章目录 前言一、安装QT二、安装CTest三、使用QT生成.bdf文件四、创建CTest工程注意事项 前言 CTest是Parasoft公司出品的一款可以针对C/C源代码进行静态分析、单元测试、集成测试的测试工具。本文主要讲解如何在Linux环境下,搭建QT插件版的CTest测试环境。 一、…