• 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,用来管理发布的控制器,详情可参考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对象的构建器基类

  • 相关阅读:
    c++继承
    最近项目上线太忙了-后期会发布大厂物流进厂文章
    神经网络过拟合怎么解决,神经网络过拟合怎么办
    java.lang.OutOfMemoryError - 解决方法 (-Xmx -Xms)
    java FileReader类、FileWriter类
    Python---函数练习:编写一个打招呼程序
    【0141】【创建postgres后端进程】postgres进程process title的设计机制(10)
    MySQL --- 多表查询 - 七种JOINS实现、集合运算、多表查询练习
    【三】Spring Cloud Ribbon 实战
    hadoop生态现状、介绍、部署
  • 原文地址:https://blog.csdn.net/szlhj/article/details/133079402