【梳理】k8s使用Operator搭建Flink集群

news2024/7/6 20:56:50

文章目录

  • 架构图
  • 安装cert-manager依赖
  • helm 安装operator
  • 运行集群实例
    • k8s上的两种模式:Native和Standalone
    • 两种CR
    • Demo1:Application 单任务
    • Demo2:Session 多任务
    • 创建ingress
  • 总结

架构图

请添加图片描述

参考:部署验证demo

安装cert-manager依赖

Jetstack/cert-manager 是 Kubernetes 生态系统中的一款开源项目,它提供了一种自动化的方式来管理 TLS 证书的生命周期

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

helm 安装operator

# helm 安装 , 包含 deploy*1 、cm*1、crd*2 以及 rbac sa webhook
kubectl create -f https://github.com/jetstack/cert-manager/releases/download/v1.8.2/cert-manager.yaml
helm repo add flink-operator-repo https://downloads.apache.org/flink/flink-kubernetes-operator-1.7.0/
helm install flink-kubernetes-operator flink-operator-repo/flink-kubernetes-operator

运行集群实例

k8s上的两种模式:Native和Standalone

Flink Kubernetes Operator 支持:原生部署native(默认)和独立部署standalone

可以使用部署规范中的 mode 字段设置部署模式。

apiVersion: flink.apache.org/v1beta1
kind: FlinkDeployment
...
spec:
  ...
  mode: standalone

两种CR

FlinkDeployment CR 定义了 Flink 应用程序和会话集群部署。

FlinkSessionJob CR 定义了 Session 集群上的会话任务(Job)

Flink Kubernetes Operator 支持两种主要类型的部署:Application 和 Session

Session使用与Application 集群类似的规范,唯一的区别是 job 未定义。

Demo1:Application 单任务

只有一个Job,没有提交jar包的功能。

# 此crd创建后,operator会创建:
# 1个deploy(即jobmanager,镜像为flink:1.17)
# 1个pod(即taskManager,镜像也是flink:1.17,任务jar包在镜像中)
apiVersion: flink.apache.org/v1beta1
kind: FlinkDeployment
metadata:
  name: basic-example
spec:
  image: flink:1.17
  flinkVersion: v1_17
  flinkConfiguration:
    taskmanager.numberOfTaskSlots: "2"
  serviceAccount: flink
  jobManager:
    resource:
      memory: "2048m"
      cpu: 1
  taskManager:
    resource:
      memory: "2048m"
      cpu: 1
  job:
    jarURI: local:///opt/flink/examples/streaming/StateMachineExample.jar
    parallelism: 2
    upgradeMode: stateless

Demo2:Session 多任务

多个job,每个sessionjob代表一个job,有提交jar包的功能。

apiVersion: flink.apache.org/v1beta1
kind: FlinkDeployment
metadata:
  name: basic-session-deployment-example
spec:
  image: flink:1.17
  flinkVersion: v1_17
  jobManager:
    resource:
      memory: "2048m"
      cpu: 1
  taskManager:
    resource:
      memory: "2048m"
      cpu: 1
  serviceAccount: flink
---
apiVersion: flink.apache.org/v1beta1
kind: FlinkSessionJob
metadata:
  name: basic-session-job-example
spec:
  deploymentName: basic-session-deployment-example
  job:
    jarURI: https://repo1.maven.org/maven2/org/apache/flink/flink-examples-streaming_2.12/1.16.1/flink-examples-streaming_2.12-1.16.1-TopSpeedWindowing.jar
    parallelism: 4
    upgradeMode: stateless

---
apiVersion: flink.apache.org/v1beta1
kind: FlinkSessionJob
metadata:
  name: basic-session-job-example2
spec:
  deploymentName: basic-session-deployment-example
  job:
    jarURI: https://repo1.maven.org/maven2/org/apache/flink/flink-examples-streaming_2.12/1.16.1/flink-examples-streaming_2.12-1.16.1.jar
    parallelism: 2
    upgradeMode: stateless
    entryClass: org.apache.flink.streaming.examples.statemachine.StateMachineExample

创建ingress

svc端口默认为8081,创建一个ingress指向svc-rest即可进行访问。

总结

  1. 拉取国外镜像比较困难,可以使用https://dockerproxy.com/
  2. 搭建多租户PaaS平台,可以使用Session方式,新任务可以通过CR进行管理,也可以由页面添加jar包。
  3. 本文内容来源于Flink官网,进行翻译、简化、整理,供大家参考~

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

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

相关文章

C# LINQ基础

LINQ基础 1. 入门2. 运算符流语法2.1 连续使用查询运算符2.2 使用Lambda表达式2.2.1 Lambda表达式及Func的方法签名2.2.2 Lambda表达式和元素类型2.2.3 自然排序2.2.4 其他查询运算符 3 查询表达式4 延迟执行4.1 重复执行4.2 捕获的变量4.3 延迟加载的工作原理4.4 查询语句的执…

ARM-v7 GCC 环境下的大小端转换实现

1.前言 什么是大小端转换?为什么叫大小端转换? Jonathan Swift的《格列佛游记》中记载,有两国因为剥鸡蛋的方式不同,即一国要求将熟鸡蛋的较大的一端(大端,big endian)敲碎然后剥壳,…

NLP_文本数据分析_3(代码示例)

目标 了解文本数据分析的作用.掌握常用的几种文本数据分析方法. 一、 文件数据分析介绍 文本数据分析的作用: 文本数据分析能够有效帮助我们理解数据语料, 快速检查出语料可能存在的问题, 并指导之后模型训练过程中一些超参数的选择. 常用的几种文本数据分析方法: 标签数量分…

【嵌入式——QT】Model/View

【嵌入式——QT】Model/View 基本原理数据模型视图组件代理Model/View结构的一些概念QFileSystemModelQStringListModelQStandardItemModel自定义代理 基本原理 GUI应用程序的一个很重要的功能是由用户在界面上编辑和修改数据,典型的如数据库应用程序,数…

leetcode刷题(javaScript)——字典哈希表相关场景题总结

在 JavaScript 刷题中,字典(Dictionary)和哈希表(Hash Table)通常用来存储键值对,提供快速的查找、插入和删除操作。它们在很多算法题目中都有广泛的应用,特别是在需要快速查找元素或统计元素出…

Unity插件之天气系统UniStorm

首先呢,它是一款强大的动态昼夜天气系统,能够以较快的帧速率创建AAA级动态生成的天气、照明和天空,并且具有300多个可定制的组件,允许用户创建任何可以想象的环境。 第一步:他需要两个物体Camera摄像机、Player播放器…

用于回归的概率模型

机器学习中的回归方法: 机器学习中的概率模型 机器学习|总结了11种非线性回归模型(理论代码可视化) 高斯过程回归: Gaussian Processes for Machine Learning GPML——Datasets and Code Gaussian Processes 学…

淘宝商品详情数据丨商品搬家丨商品采集丨商城建站

淘宝商品详情数据、商品搬家、商品采集以及商城建站都是电子商务领域的重要环节,它们共同构成了一个完整的在线销售体系。下面我将分别对这几个概念进行详细的解释。 请求示例,API接口接入Anzexi58 一、淘宝商品详情数据 淘宝商品详情数据指的是在淘宝…

react native封装ScrollView,实现(滑到底部)和(滑到顶部+手指继续向下滑)时拉取新数据

里面的tw是在react native中使用tailwind的第三方库 只求读者把样式看个大概,主要还是功能的实现 ScrollView的官方文档如下 https://reactnative.cn/docs/scrollview import tw from twrnc import { View, Text, ScrollView, RefreshControl } from react-native …

LED显示控制芯片SM5166PF:可消除LED显示屏拖影

在数字化时代的浪潮下,LED显示屏作为信息传播的重要媒介,其显示质量和效果日益受到人们的关注。尤其在商业广告、体育赛事、公共信息发布等领域,高清、流畅、稳定的显示效果显得尤为重要。然而,传统的LED显示屏在刷新率和显示效果…

金智维售前总监屈文浩,将出席“ISIG-RPA超级自动化产业发展峰会”

3月16日,第四届「ISIG中国产业智能大会」将在上海中庚聚龙酒店拉开序幕。本届大会由苏州市金融科技协会指导,企智未来科技(RPA中国、AIGC开放社区、LowCode低码时代)主办。大会旨在聚合每一位产业成员的力量,深入探索R…

在Linux以命令行方式(静默方式/非图形化方式)安装MATLAB(正版)

1.根据教程,下载windows版本matlab,打开图形化界面,选择linux版本的只下载不安装 2.获取安装文件夹 3.获取许可证 4.安装 (1)跳过引用文章的2.2章节 (2)本文的安装文件夹代替引用文章的解压IS…

使用Julia语言及R语言进行格拉布斯检验

在日常的计量检测工作中经常会处理各种数据,在处理数据之前会提前使用格拉布斯准则查看数据中是否存在异常值,如果存在异常值的话应该重新进行计量检测,没有异常值则对数据进行下一步操作。判断异常值常用的格拉布斯方法基于数据来自正态分布…

【leetcode热题】环形链表 II

难度: 中等通过率: 30.1%题目链接:. - 力扣(LeetCode) 题目描述 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数…

SqlServer 默认值约束示例

创建表,创建时指定 money 字段默认值为0.00; create table t_24 ( account varchar(19) not null, id_card char(18) not null, name varchar(20) not null, money decimal(16,2) default 0.00 not null ); 录入2条记录,money字…

Windows Docker 部署 MySQL

部署 MySQL 打开 Docker Desktop,切换到 Linux 容器。然后在 PowerShell 执行下面命令,即可启动一个 MySQL 服务。这里安装的是 8.3.0 Tag版本,如果需要安装其他或者最新版本,可以到 Docker Hub 进行查找。 docker run -itd --n…

在微信小程序里的ecahrts图表,tooltip中内容有黑色阴影的问题

tooltip并没有设置文字阴影相关配置,但是实际真机测试出来有黑色阴影(本地编译器没有阴影), 经过研究发现,需要在tooltip中加上以下配置就OK了 tooltip: {// .....textStyle:{textShadowColor:transparent,//文字块背景…

go|一道算法题引发的思考|slice底层剖析

文章目录 引发思考的一道算法题slicemake初始化切片扩容原理切片截取原理切片复制原理算法题的正解 补充string和[]byte互转string 与[]byte相互转换 引发思考的一道算法题 链接:组合 给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。 大致…

处理error: remote origin already exists.及其Gitee文件上传保姆级教程

解决error: remote origin already exists.: 删除远程 Git 仓库 git remote rm origin 再添加远程 Git 仓库 git remote add origin (HTTPS) 比如这样: 然后再push过去就ok了 好多人可能还是不熟悉怎么将文件上传 Gitee:我…

Unity零基础到进阶 | Unity中 屏蔽指定UI点击事件 的多种方法整理

Unity零基础到进阶 | Unity中 屏蔽指定UI点击事件 的多种方法整理一、Unity中 屏蔽透明区域的点击事件1.1 使用Image组件自带的参数检测1.2 根据点击的坐标计算该点的像素值是否满足阈值 二、Unity中屏蔽 不规则图片按钮点击的事件 总结 🎬 博客主页:htt…