flink源码分析之集群与资源@k8s-集群

0 介绍

本文是flink集群与资源@k8s源码分析系列的第二篇-集群

1 场景

下面详细分析各用例

2 启动k8s集群

k8s集群支持session和application模式,job模式将会被废弃,本文分析session模式集群

Configuration作为配置容器,几乎所有的构建需要从配置类获取配置项,这里不显示关联关系

1. 用户命令行执行kubernates-session.sh,主入口是KubernetesSessionCli main

2.
ClusterClientServiceLoader SPI机制载入ClusterClientFactory,k8s环境下实现类是KubernetesClusterClientFactory

3. ClusterClientFactory是ClusterClient工厂,首先创建ClusterDescriptor集群描述,该类负责部署集群,最终返回ClusterClient,k8s环境下实现类是
KubernetesClusterDescriptor

4.
KubernetesClusterDescriptor新建集群规格ClusterSpecification,该类不是针对k8s,定义了flink master和任务管理器的内存容量等技术参数,通用于容器类的集群;
KubernetesSessionClusterEntrypoint类型设置为ENTRY_POINT_CLASS参数,后面《部署集群》使用到

5.
KubernetesClusterDescriptor的deploySessionCluster部署k8s集群,参看《部署集群》用例,最后返回ClusterClient,用于后续提交作业和其他集群操作

3 部署集群

部署集群是启动的第二步,
KubernetesClusterDescriptor的deploySessionCluster方法的一部分,构建部署规格,flink kubeclient提交到k8s集群管理器,触发flink master构建和启动

1. 首先更新配置,主要是对外端口,更新为固定的,支持对外Service通讯

2. 构建
KubernetesJobManagerParameters,该类封装Configuration和ClusterSpecification,为获取参数提供便利

3. 构建FlinkPod,首先载入pod模板构建KubernetesPod,KubernetesPod是一个包装了k8s Pod对象的Resource类;构建FlinkPod,定义了mainContainer ,podWithoutMainContainer,其中主容器固定名称,用于运行作业管理器任务管理器,其他容器运行相关的资源,如ConfigMap,Service等,详细分析参考10 flink kubeclient

4.
KubernetesJobManagerFactory《构建作业管理器部署规格》构建部署规格,Fabric8FlinkKubeClient使用部署规格《新建作业管理器组件(flink master)》部署flink master组件,两用例在10 flink kubeclient分析

最后客户端调用
createClusterClientProvider返回ClusterClient

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

中间件XL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值