当前位置:   article > 正文

flink源码分析之功能组件(二)-kubeclient_flink client源码分析

flink client源码分析

简介

     本系列是flink源码分析的第二个系列,上一个《flink源码分析之集群与资源》分析集群与资源,本系列分析功能组件,kubeclient,rpc,心跳,高可用,slotpool,rest,metrics,future。其中kubeclient上一个系列介绍过,为了系列完整性,这里“copy”一下。

kubeclient组件

kubeclient是flink面向应用的fabric8 kubeclient的封装,本节分析flink如何封装kubeclient,核心组件是装饰器,资源和ServiceType,kubeclient在flink的应用主要是构建master组件的k8s部署规格,提交到k8s,下面通过分析创建master组件(createMasterComponent)解释kubeclient组件原理及使用

构建master组件

  1. KubernetesMasterFactory构建KubernetesMasterComponentSpecification
  2. KubernetesMasterComponentSpecification有两属性Deployment和accompanyingResources,前者Deployment是k8s资源对象,用来管理发布的控制器,详情可参考k8s文档;后者是类型是List<HasMetadata>,accompanyingResources定义k8s资源对象,如 ConfigMap,Service等
  3. KubernetesStepDecorator装饰器,装饰器列表实现责任链模式,装饰模板构建的ComponentPod,包括主容器和其他容器,增加其特性,用户使用此机制定制pod,后面几章分析几个典型的装饰器
  4. Fabric8FlinkKubeClient的createMasterComponent,请求k8s集群构建和启动flink master组件,输入参数是KubernetesMasterComponentSpecification,其Deployment属性直接用于Fabric8 kubeclient创建Deployment对象

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

InitMasterDecorator

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

CmdMasterDecorator

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

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

deploymentTarget kubernetes-session或kubernetes-application

ExternalServiceDecorator

装饰器构建k8s Service对象

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

FlinkConfMountDecorator/PodTemplateMountDecorator

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

总结

kubeclient要点

  1. 以模板构建初始的ComponentPod,拥有初始的完整的特性和属性
  2. 可配置的/可扩展的装饰器列表增加ComponentPod的特性和属性,以及相应的资源,ConfigMap,Service等

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/714898
推荐阅读
相关标签
  

闽ICP备14008679号