Flink1.12 native kubernetes 演进之路

2024-05-02 07:48

本文主要是介绍Flink1.12 native kubernetes 演进之路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点击上方 "zhisheng"关注, 星标或置顶一起成长

Flink 从入门到精通 系列文章

Flink 1.10

Flink 1.10 开始支持将 native kubernetes 作为其资源管理器。在该版本中,你可以使用以下命令在你的 kubernetes 集群中创建一个flink session。

./bin/kubernetes-session.sh \-Dkubernetes.cluster-id=<ClusterId> \-Dtaskmanager.memory.process.size=4096m \-Dkubernetes.taskmanager.cpu=2 \-Dtaskmanager.numberOfTaskSlots=4 \-Dresourcemanager.taskmanager-timeout=3600000

此时创建session 的 kubernetes 相关参数支持的比较少,只支持设置资源大小,容器镜像,命名空间等基本参数。对于生产环境,暴露这些参数远远不够。

然后使用如下的命令,提交任务到我们刚刚创建的Session 中:

 ./bin/flink run -d -e kubernetes-session -Dkubernetes.cluster-id=<ClusterId> examples/streaming/WindowJoin.jar

Flink 1.11

Flink1.11, 首先创建 session 的kubernetes 相关参数支持增多了,支持了node-selector, tolerations等调度相关参数,并且支持设置保留JobManager端点的服务类型。

支持资源调度相关参数,对于生产环境非常重要。我们可以控制我们的 session 集群资源,主要是jobmanager 和 taskmanager 调度到指定的机器上,是实现资源隔离,安全,计费的前提。

另外flink1.11 新增了Application 模式(和Session 模式不同)。Application模式允许用户创建一个包含作业和Flink运行时的镜像,根据需要自动创建和销毁集群组件。

该模式就更加云原生了,可以充分发挥native k8s的弹性。根据提交的任务,来自动创建jobmanager 和 taskmanager ,待任务运行完成,则自动销毁jobmanager 和 taskmanager 。

可以使用如下命令,启动application:

 ./bin/flink run-application -p 8 -t kubernetes-application \-Dkubernetes.cluster-id=<ClusterId> \-Dtaskmanager.memory.process.size=4096m \-Dkubernetes.taskmanager.cpu=2 \-Dtaskmanager.numberOfTaskSlots=4 \-Dkubernetes.container.image=<CustomImageName> \local:///opt/flink/usrlib/my-flink-job.jar

Flink 1.12

Flink 1.12 之前的版本中JobManager的 HA 是通过ZooKeeper 来实现的。

在1.12 版本中,Kubernetes提供了Flink可用于JobManager故障转移的内置功能,而不是依赖ZooKeeper。Kubernetes HA 服务与ZooKeeper实现基于相同的基本接口构建,并使用Kubernetes的ConfigMap对象处理从JobManager故障中恢复所需的所有元数据。

为了启动HA集群,您必须配置以下步骤:

high-availability(required): high-availability 选项必须设置为KubernetesHaServicesFactory。

high-availability: org.apache.flink.kubernetes.highavailability.KubernetesHaServicesFactory

high-availability.storageDir(required): JobManager元数据将持久保存在文件系统high-availability.storageDir中,并且仅指向此状态的指针存储在Kubernetes中。

high-availability.storageDir: s3:///flink/recovery kubernetes.cluster-id(required): 为了标识Flink集群,您必须指定kubernetes.cluster-id。

kubernetes.cluster-id: cluster1337

此外flink 1.12 支持flink 中程序使用kubernetes 中的secrets。通过如下两种方式:

  • 将Secrets用作Pod中的文件;

  • 使用Secrets作为环境变量;

这样的话,我们可以将一些敏感凭证数据放到Secret中。在安全性上是一种增强。

最后Flink使用Kubernetes OwnerReference来清理所有集群组件。由Flink创建的所有资源,包括ConfigMap,Service和Pod,都将OwnerReference设置为Deployment/<cluster-id>。删除部署后,所有相关资源将自动删除。

总结

Flink 对于native kubernetes 的支持逐步增强,kubernets 相对于yarn等资源管理器,有着诸多的优势。

https://zhuanlan.zhihu.com/p/336070632

基于 Apache Flink 的实时监控告警系统关于数据中台的深度思考与总结(干干货)日志收集Agent,阴暗潮湿的地底世界
2020 继续踏踏实实的做好自己

公众号(zhisheng)里回复 面经、ClickHouse、ES、Flink、 Spring、Java、Kafka、监控 等关键字可以查看更多关键字对应的文章。
点个赞+在看,少个 bug ????

这篇关于Flink1.12 native kubernetes 演进之路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/953747

相关文章

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略 1. 特权模式限制2. 宿主机资源隔离3. 用户和组管理4. 权限提升控制5. SELinux配置 💖The Begin💖点点关注,收藏不迷路💖 Kubernetes的PodSecurityPolicy(PSP)是一个关键的安全特性,它在Pod创建之前实施安全策略,确保P

native和static native区别

本文基于Hello JNI  如有疑惑,请看之前几篇文章。 native 与 static native java中 public native String helloJni();public native static String helloJniStatic();1212 JNI中 JNIEXPORT jstring JNICALL Java_com_test_g

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

什么是Kubernetes PodSecurityPolicy?

@TOC 💖The Begin💖点点关注,收藏不迷路💖 1、什么是PodSecurityPolicy? PodSecurityPolicy(PSP)是Kubernetes中的一个安全特性,用于在Pod创建前进行安全策略检查,限制Pod的资源使用、运行权限等,提升集群安全性。 2、为什么需要它? 默认情况下,Kubernetes允许用户自由创建Pod,可能带来安全风险。

容器编排平台Kubernetes简介

目录 什么是K8s 为什么需要K8s 什么是容器(Contianer) K8s能做什么? K8s的架构原理  控制平面(Control plane)         kube-apiserver         etcd         kube-scheduler         kube-controller-manager         cloud-controlle

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟

kubernetes集群部署Zabbix监控平台

一、zabbix介绍 1.zabbix简介 Zabbix是一个基于Web界面的分布式系统监控的企业级开源软件。可以监视各种系统与设备的参数,保障服务器及设备的安全运营。 2.zabbix特点 (1)安装与配置简单。 (2)可视化web管理界面。 (3)免费开源。 (4)支持中文。 (5)自动发现。 (6)分布式监控。 (7)实时绘图。 3.zabbix的主要功能

【Kubernetes】常见面试题汇总(三)

目录 9.简述 Kubernetes 的缺点或当前的不足之处? 10.简述 Kubernetes 相关基础概念? 9.简述 Kubernetes 的缺点或当前的不足之处? Kubernetes 当前存在的缺点(不足)如下: ① 安装过程和配置相对困难复杂; ② 管理服务相对繁琐; ③ 运行和编译需要很多时间; ④ 它比其他替代品更昂贵; ⑤ 对于简单的应用程序来说,可能不

【Kubernetes】常见面试题汇总(一)

目录 1.简述 etcd 及其特点? 2.简述 etcd 适应的场景? 3.简述什么是Kubernetes? 4.简述 Kubernetes和 Docker的关系? 1.简述 etcd 及其特点? (1)etcd 是Core0s 团队发起的开源项目,是一个管理配置信息和服务发现(service discovery)的项目,它的目标是构建一个高可用的分布式键值(keyvalue)数据

Arch - 演进中的架构

文章目录 Pre原始分布式时代1. 背景与起源2. 分布式系统的初步探索3. 分布式计算环境(DCE)4. 技术挑战与困境5. 原始分布式时代的失败与教训6. 未来展望 单体时代优势缺陷单体架构与微服务架构的关系总结 SOA时代1. SOA架构及其背景1. 烟囱式架构(Information Silo Architecture)2. [微内核架构](https://www.oreilly.c