• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
思想人生从关注生活开始
博客园    首页    新随笔    联系   管理    订阅  订阅

Apache Flink快速入门-如何在Kubernetes 上部署 Flink

Flink集群搭建

Kubernetes(k8s)由Google创建,现已成为最受欢迎的开源编排系统,用于管理多个主机容器化应用,提供了为分布式系统构建和部署可伸缩且可靠的应用程序所需的机制。我们正处在一个时代,服务的正常运行时间必须接近99.9%,要实现这一点,就必须拥有一种机制,即使存在系统崩溃,它们也不能失败。这些类型的系统必须具有某些特性,必须在某些意外发生的时候,工作负载可以在简单维护或部署的情况下进行扩展,停机时间必须为零。

 

Flink在k8s上支持的集群模式 

可以使用会话集群或作业集群两种模式将Apache Flink部署在Kubernetes上。会话集群是一个运行中的独立集群,可以运行多个作业,Kubernetes的视角来看,会话集群由三个组件组成:

  • 指定JobManager的部署对象
  • 指定TaskManager的部署对象
  • 以及公开JobManager的REST API的Service对象

 

注意:Kubernetes 上的 Flink 不支持 Per-Job 集群模式。

关于Flink 集群模式请参阅

Apache Flin快速入门-部署前要了解内容

 

Yaml 配置

在Kubernetes上构建Flink Session Cluster,需要将Flink集群中的组件对应的Docker镜像分别在k8s集群中启动,其中包括JobManager、TaskManager、JobManagerServices三个镜像服务,其中每个镜像服务都可以从中央镜像仓库中获取,用户也可以构建本地的镜像仓库,针对每个组件所相应的Kubernetes的yaml配置如下:

JobManager Yaml 配置
主要提供运行JobManager组件镜像的参数配置,包括JobManager自身的参数,例如RPC端口等配置信息:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: flink-jobmanager
spec:
replicas: 1
template:
metadata:
labels:
app: flink
component: jobmanager
spec:
containers:
- name: jobmanager
image: flink:1.9
args:
- jobmanager
ports:
- containerPort: 6123
name: rpc
- containerPort: 6124
name: blob
- containerPort: 6125
name: query
- containerPort: 8081
name: ui
env:
- name: JOB_MANAGER_RPC_ADDRESS
value: flink-jobmanager

 

 

TaskManager Yaml 配置

主要提供运行TaskManager组件的参数配置,以及TaskManager自身的参数,例如RPC端口等配置信息:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: flink-taskmanager
spec:
replicas: 2
template:
metadata:
labels:
app: flink
component: taskmanager
spec:
containers:
- name: taskmanager
image: flink:1.9
args:
- taskmanager
ports:
- containerPort: 6121
name: data
- containerPort: 6122
name: rpc
- containerPort: 6125
name: query
env:
- name: JOB_MANAGER_RPC_ADDRESS
value: flink-jobmanager

JobManagerServices 配置

主要为Flink Session 集群提供对外的RestApi和UI地址,使得用户可以通过Flink UI 的方式访问集群并获取任务和监控信息,配置文件如下:

 

apiVersion: v1
kind: Service
metadata:
name: flink-jobmanager
spec:
type: NodePort
ports:
- name: rpc
port: 6123
- name: blob
port: 6124
- name: query
port: 6125
- name: ui
port: 8081
nodePort: 30001
selector:
app: flink
component: jobmanager

启动Flink Session Cluster

当各个组件服务配置文件定义完毕后,就可以通过使用以下Kubectl命令,创建Flink Session Cluster,集群启动完成后就可以通过JobManagerServices中配置的WebUI端口访问 Flink Web 页面。

kubectl create -f jobmanager-service.yaml

kubectl create -f jobmanager-deployment.yaml

kubectl create -f taskmanager-deployment.yaml

posted @ 2021-08-09 18:32  JackYang  阅读(1210)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3