Flink on K8s 部署

Flink 使用介绍相关文档目录

Flink 使用介绍相关文档目录

简介

本篇博客为大家讲解下如何在Kubernetes集群部署Flink standalone集群。

准备材料

Flink镜像

首先需要制作一个Flink镜像,具体方法请看Flink in docker 部署

Flink conf文件

下载Flink的二进制软件包,解压其中的conf目录到任意目录即可。

配置K8s资源对象

创建ConfigMap

首先修改conf/flink-conf.yaml,修改jobmanager.rpc.address,如下所示:

jobmanager.rpc.address: flink-jm-rpc-service

其中flink-jm-rpc-service为后续需要创建的service名称。这个service创建之后,k8s会为我们创建一个同名的DNS条目。我们使用这条DNS可以访问到Flink的job manager。

接下来执行这条命令,将conf目录下所有文件内容创建为一个config map,名字为flink-config

kubectl create configmap flink-config --from-file=./conf

创建Job manager和Task manager的deployment

Job manager的Deployment如下所示。需要注意的是这里replica设置为1,flink-conf的内容作为数据卷,挂载到/flink-1.9.2/conf

apiVersion: apps/v1
kind: Deployment
metadata:
  name: flink-jobmanager
  labels:
    app: flink
spec:
  replicas: 1
  selector:
    matchLabels:
      app: flink
      role: jobmanager
  template:
    metadata:
      labels:
        app: flink
        role: jobmanager
    spec:
      containers:
      - name: flink
        image: paul8263/flink-1.9.2:1.9.2
        args: ["jobmanager"]
        ports:
        - name: web-port
          containerPort: 8081
        volumeMounts:
        - name: flink-config-volume
          mountPath: /flink-1.9.2/conf
      volumes:
        - name: flink-config-volume
          configMap:
            name: flink-config

同理,下面是Task manager的Deployment。这里我们设定replica为3,即启动3个task manager。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: flink-taskmanager
  labels:
    app: flink
    role: taskmanager
spec:
  replicas: 3
  selector:
    matchLabels:
      app: flink
  template:
    metadata:
      labels:
        app: flink
    spec:
      containers:
      - name: flink
        image: paul8263/flink-1.9.2:1.9.2
        args: ["taskmanager"]
        ports:
        - name: web-port
          containerPort: 8081
        volumeMounts:
        - name: flink-config-volume
          mountPath: /flink-1.9.2/conf
      volumes:
        - name: flink-config-volume
          configMap:
            name: flink-config

完成yaml文件的编写之后使用如下命令:

kubectl apply -f 文件名.yaml

创建出这两个Deployment。

创建Job Manager RPC service

目前需要解决的是Task manager如何找到job manager。Job manager的pod会被k8s调度到任意的节点,这个结果是不可控的。因此,我们需要创建一个service,指向job manager这个pod。Kubenetes会自动创建一个DNS入口。这样一来,无论job manager调度到哪个节点上,它的IP如何变化,k8s自动帮我们更新,并通过DNS关联起来。我们的程序不用做任何修改。

下面编写这个service的描述文件,如下所示:

apiVersion: v1
kind: Service
metadata:
  name: flink-jm-rpc-service
spec:
  clusterIP: None
  selector:
    role: jobmanager
  ports:
    - protocol: TCP
      port: 6123
      targetPort: 6123

创建这个service之后,无论这个pod的IP怎么变化,我们可以通过flink-jm-rpc-service这个DNS访问到job manager。

暴露Flink web端口到集群外

到目前为止,Flink集群实际上已经部署完毕,但是Flink的web界面只能在集群的容器内部访问,我们需要将这个端口暴露到集群外部。

该service的描述文件如下所示:

apiVersion: v1
kind: Service
metadata:
  name: flink-web-service
spec:
  selector:
    app: flink
  type: NodePort
  ports:
    - protocol: TCP
      port: 8081
      targetPort: 8081
      nodePort: 30123

需要注意的是这个service使用了NodePort的方式,将service的8081端口暴露为节点的30123端口。

验证配置

执行kubectl get all查看创建出的所有资源对象,可以看到类似如下的输出:

NAME                                     READY   STATUS    RESTARTS   AGE
pod/flink-jobmanager-6db8bb4999-hsblq    1/1     Running   0          155m
pod/flink-taskmanager-795bfc5fdc-bdlc4   1/1     Running   2          153m
pod/flink-taskmanager-795bfc5fdc-mkp7q   1/1     Running   2          153m
pod/flink-taskmanager-795bfc5fdc-z42pr   1/1     Running   2          153m


NAME                           TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
service/flink-jm-rpc-service   ClusterIP   None           <none>        6123/TCP         3h12m
service/flink-web-service      NodePort    10.101.29.26   <none>        8081:30123/TCP   3h9m
service/kubernetes             ClusterIP   10.96.0.1      <none>        443/TCP          12h


NAME                                READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/flink-jobmanager    1/1     1            1           155m
deployment.apps/flink-taskmanager   3/3     3            3           153m

NAME                                           DESIRED   CURRENT   READY   AGE
replicaset.apps/flink-jobmanager-6db8bb4999    1         1         1       155m
replicaset.apps/flink-taskmanager-795bfc5fdc   3         3         3       153m

然后我们在浏览器访问k8s节点的30123端口,然后查看所有的Task manager。如下图所示:

Flink管理页面Task Managers列表

Task manager的个数和状态均正常,Flink on Kubernetes部署完毕。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352

推荐阅读更多精彩内容