zoukankan      html  css  js  c++  java
  • Apache Flink快速入门-如何在Kubernetes 上部署 Flink

    Flink集群搭建

    Kubernetes(k8s)由Google创建,现已成为最受欢迎的开源编排系统,用于管理多个主机容器化应用,提供了为分布式系统构建和部署可伸缩且可靠的应用程序所需的机制。我们正处在一个时代,服务的正常运行时间必须接近99.9%,要实现这一点,就必须拥有一种机制,即使存在系统崩溃,它们也不能失败。这些类型的系统必须具有某些特性,必须在某些意外发生的时候,工作负载可以在简单维护或部署的情况下进行扩展,停机时间必须为零。

    Flink在k8s上支持的集群模式 

    可以使用会话集群或作业集群两种模式将Apache Flink部署在Kubernetes上。会话集群是一个运行中的独立集群,可以运行多个作业,Kubernetes的视角来看,会话集群由三个组件组成:

    • 指定JobManager的部署对象
    • 指定TaskManager的部署对象
    • 以及公开JobManager的REST API的Service对象

    注意:Kubernetes 上的 Flink 不支持 Per-Job 集群模式。

    关于Flink 集群模式请参阅

    Apache Flin快速入门-部署前要了解内容

    Yaml 配置

    在Kubernetes上构建Flink Session Cluster,需要将Flink集群中的组件对应的Docker镜像分别在k8s集群中启动,其中包括JobManager、TaskManager、JobManagerServices三个镜像服务,其中每个镜像服务都可以从中央镜像仓库中获取,用户也可以构建本地的镜像仓库,针对每个组件所相应的Kubernetes的yaml配置如下:

    JobManager Yaml 配置
    主要提供运行JobManager组件镜像的参数配置,包括JobManager自身的参数,例如RPC端口等配置信息:

    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
    name: flink-jobmanager
    spec:
    replicas: 1
    template:
    metadata:
    labels:
    app: flink
    component: jobmanager
    spec:
    containers:
    - name: jobmanager
    image: flink:1.9
    args:
    - jobmanager
    ports:
    - containerPort: 6123
    name: rpc
    - containerPort: 6124
    name: blob
    - containerPort: 6125
    name: query
    - containerPort: 8081
    name: ui
    env:
    - name: JOB_MANAGER_RPC_ADDRESS
    value: flink-jobmanager

    TaskManager Yaml 配置

    主要提供运行TaskManager组件的参数配置,以及TaskManager自身的参数,例如RPC端口等配置信息:

    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
    name: flink-taskmanager
    spec:
    replicas: 2
    template:
    metadata:
    labels:
    app: flink
    component: taskmanager
    spec:
    containers:
    - name: taskmanager
    image: flink:1.9
    args:
    - taskmanager
    ports:
    - containerPort: 6121
    name: data
    - containerPort: 6122
    name: rpc
    - containerPort: 6125
    name: query
    env:
    - name: JOB_MANAGER_RPC_ADDRESS
    value: flink-jobmanager

    JobManagerServices 配置

    主要为Flink Session 集群提供对外的RestApi和UI地址,使得用户可以通过Flink UI 的方式访问集群并获取任务和监控信息,配置文件如下:

    apiVersion: v1
    kind: Service
    metadata:
    name: flink-jobmanager
    spec:
    type: NodePort
    ports:
    - name: rpc
    port: 6123
    - name: blob
    port: 6124
    - name: query
    port: 6125
    - name: ui
    port: 8081
    nodePort: 30001
    selector:
    app: flink
    component: jobmanager

    启动Flink Session Cluster

    当各个组件服务配置文件定义完毕后,就可以通过使用以下Kubectl命令,创建Flink Session Cluster,集群启动完成后就可以通过JobManagerServices中配置的WebUI端口访问 Flink Web 页面。

    kubectl create -f jobmanager-service.yaml

    kubectl create -f jobmanager-deployment.yaml

    kubectl create -f taskmanager-deployment.yaml

  • 相关阅读:
    Educational Codeforces Round 28 B. Math Show
    Educational Codeforces Round 28 A. Curriculum Vitae
    Codeforces Round #433 (Div. 2, based on Olympiad of Metropolises) D. Jury Meeting
    Codeforces Round #433 (Div. 2, based on Olympiad of Metropolises) C. Planning
    2017 Multi-University Training Contest 2 hdu 6047
    2017 Multi-University Training Contest 2 hdu 6045
    2017 Multi-University Training Contest 1 hdu 6043
    2017 Multi-University Training Contest 1 hdu 6034
    2017 Multi-University Training Contest 1 hdu 6033
    poj 2104主席树求区间第k小
  • 原文地址:https://www.cnblogs.com/BlogNetSpace/p/15120015.html
Copyright © 2011-2022 走看看