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

    flink kubeclient是面向flink应用的fabric8 kubeclient的封装,本文分析flink如何封装kubeclient,核心组件是装饰器,资源和ServiceType,下面通过分析业务创建作业管理器组件(createJobManagerComponent)了解flink kubeclient

1 场景

2 新建作业管理器组件

1. KubernetesJobManagerFactory构建KubernetesJobManagerSpecification

2. KubernetesJobManagerSpecification有两属性Deployment和accompanyingResources,前者Deployment是k8s资源对象,后者是类型是List<HasMetadata>,用来管理发布的控制器,详情可参考k8s文档;accompanyingResources定义k8s资源对象,如 ConfigMap,Service等

3. KubernetesStepDecorator装饰器,装饰器列表实现责任链模式,装饰模板构建的FlinkPod,包括主容器和其他容器,增加其特性,用户使用此机制定制pod,后面几章分析几个典型的装饰器

4. Fabric8FlinkKubeClient的createJobManagerComponent,请求k8s集群构建和启动flink master组件,输入参数是KubernetesJobManagerSpecification,其Deployment属性直接用于Fabric8 kubeclient创建Deployment对象

下面分析几个作业管理组件重要的容器装饰器

2.1 InitJobManagerDecorator

读入配置属性,设置pod的容器

2.2 CmdJobManagerDecorator

装饰器实现了pod装饰,装饰主容器,设置shell执行命令

设置执行脚本KUBERNETES_JOB_MANAGER_SCRIPT_PATH = "kubernetes-jobmanager.sh"

deploymentTarget kubernetes-session或kubernetes-application

2.3 ExternalServiceDecorator

装饰器构建k8s Service对象

读入ServiceType,flink对应k8s Service的抽象类,实现buildUpExternalRestService方法,构建k8s Service

2.4 FlinkConfMountDecorator/PodTemplateMountDecorator

两个装饰器功能相同,构建ConfigMap,非主容器作为存储卷,主容器挂载存储卷

2.5 总结

flink kubeclient要点

1. 模板构建初始的FlinkPod,拥有初始的完整的特性和属性

2. 可配置的/可扩展的装饰器列表增加FlinkPod的特性和属性,以及相应的资源,ConfigMap,Service等

3. Resource是k8s资源的简单封装;ServiceType是k8s Service对象的构建器基类

  • 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、付费专栏及课程。

余额充值