• 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 部署。
    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
    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"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    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              
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
  • 相关阅读:
    人大金仓分析型数据库备份和恢复(三)
    剑指 Offer 2022/7/2
    2022北京大健康产业博览会/营养健康/特医食品/药食同源展
    Greetings(状压DP,枚举子集转移)
    Spark数据倾斜_产生原因及定位处理办法_生产环境
    一步步来,如何高效优质的锻炼身体
    Python正则表达式(一看就懂)
    Spark之Container killed on request.Exit code is 137
    【Golang星辰图】Go语言云计算SDK全攻略:深入Go云存储SDK实践
    ReactNative进阶(五):React Native与原生通信
  • 原文地址:https://blog.csdn.net/weixin_38231448/article/details/134505446