0


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

简介

 本系列是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,后面几章分析几个典型的装饰器

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

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等

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

本文转载自: https://blog.csdn.net/szlhj/article/details/134521055
版权归原作者 中间件XL 所有, 如有侵权,请联系我们删除。

“flink源码分析之功能组件(二)-kubeclient”的评论:

还没有评论