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

Flink Operator 使用指南 之 Flink Operatoran安装

介绍

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 部署。
Flink Operator
Operator 遵循 Kubernetes 原则,特别是控制循环:
Control Loop
用户可以使用 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 资源的生命周期。下图说明了不同的可能状态和转换:
Flink Resource Lifecycle
我们可以区分以下几种状态:

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机器的指定目录下:
Flink Opertor下载地址

tree -L 1  flink-kubernetes-operator/
  1. 本地安装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              

http://www.kler.cn/news/135107.html

相关文章:

  • 思维导图软件 Xmind mac中文版特点介绍
  • Netty源码学习4——服务端是处理新连接的netty的reactor模式
  • 【数据结构初阶(3)】双向带头结点循环链表
  • JS模块引入方式使用 importScripts 替代 import
  • 冬季如何养胃?羊大师建议水果蔬菜不可少!
  • 学习教授LLM逻辑推理11.19
  • 用照片预测人的年龄【图像回归】
  • centos7配置 局域网自动解析hostname
  • Apache Hive源码阅读环境搭建
  • 数据集成实施过程注意点总结
  • clusterProfiler包学习
  • 【数据结构初阶】单链表SLlist
  • STM32——STM32Cubemx的学习使用总结
  • C++类与对象(1)—初步认识
  • [Kettle] 生成随机数
  • 【LeetCode刷题】--9.回文数
  • Figma 插件学习(一)
  • STM32框架之按键扫描新思路
  • Burpsuite抓HTTPS证书导入问题
  • 《rPPG》——(1)PyTorch——Windows环境配置
  • 如何使用MybatisPlus进行数据分页显示
  • SpringMVC log4j1升级log4j2
  • 数据采集与大数据架构分享
  • uniapp App 端 版本更新检测
  • 刷题方法论
  • 中国智能音箱市场销量下降,百度稳居第一 /中国即评出10个大模型创新案例 |魔法半周报
  • Dockerfile基础
  • 前台查看日志功能
  • RK3568 + YT 9215交换机芯片,MAC TO MAC 调试记录
  • 有趣的按钮分享