flink-kubernetes-operator 的简单使用

Posted 杨林伟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flink-kubernetes-operator 的简单使用相关的知识,希望对你有一定的参考价值。

文章目录

01 引言

flink-kubernetes-operator是由Java实现的,它允许用户通过kubectl等原生k8s工具管理Flink应用程序及其生命周期,描述如下:

A Kubernetes operator for Apache Flink, implemented in Java. It allows users to manage Flink applications and their lifecycle through native k8s tooling like kubectl.

简单的说:flink-kubernetes-operator 是在 Kubernetes 集群上运行 Flink 应用的工具。它简化了Flink 应用在 Kubernetes 集群上的部署、扩展和管理。 flink-kubernetes-operator 可以将 Flink 作业定义为 Kubernetes 资源,这样可以更容易地将 Flink 作业作为 Kubernetes 基础架构的一部分管理。Operator负责创建运行Flink作业所需的资源,如 podsservices和配置,此外,operator还提供了例如自动扩展、自动恢复和滚动更新的功能

总的来说,Flink Kubernetes 操作员简化了 Flink 应用的部署和管理,使得在 Kubernetes 集群上运行 Flink 作业更加容易。

Github地址https://github.com/apache/flink-kubernetes-operator


相关流程:

02 资料

相关资料如下:


功能概览(可参考详情

  • 部署和监控Flink应用程序、会话和作业部署
  • 升级、挂起和删除部署
  • 完整的日志记录和指标集成
  • 灵活的部署和与Kubernetes工具的本地集成

03 实践

快速入门:https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main/docs/try-flink-kubernetes-operator/quick-start/

根据官网的快速入门教程,下面记录一下操作。

3.1 环境准备

本地电脑需要准备如下的环境:

以上的环境准备主要就是为了kubectl helm 命令能在本地使用

3.1.1 安装docker和kubernetes

下载Docker Desktop (https://www.docker.com/products/docker-desktop/),安装完成后,在设置里enable kubernetes即可以安装dockerkubernetes环境了。

3.1.2 安装helm

MacOS:

brew install helm

Windows:

choco install kubernetes-helm

Linux:

## 参考安装指南:https://helm.sh/docs/intro/install/

3.2 部署Operator

step1: 安装证书管理器

安装证书管理器(在Kubernetes集群上安装证书管理器,以便添加webhook组件)

kubectl create -f https://github.com/jetstack/cert-manager/releases/download/v1.8.2/cert-manager.yaml

查看pods是否运行都正常(红框都为Running表示正常):

kubectl get pods -A

step2: 安装operator

现在可以安装稳定的flink-kubernetes-operator版本,这里使用的是1.3.1版本(稳定的版本可以查看:https://flink.apache.org/downloads.html):

helm repo add flink-operator-repo https://downloads.apache.org/flink/flink-kubernetes-operator-1.3.1/
helm install flink-kubernetes-operator flink-operator-repo/flink-kubernetes-operator

ok,查看pod的状态(下图红框为Running状态,表示部署成功了):

kubectl get pods -A


当然也可以看看helm的列表:

helm list

3.3 提交作业

Operator启动完成后,可以提交flink作业了,这里使用官方的资源文件basic.yaml,其内容如下:

################################################################################
#  Licensed to the Apache Software Foundation (ASF) under one
#  or more contributor license agreements.  See the NOTICE file
#  distributed with this work for additional information
#  regarding copyright ownership.  The ASF licenses this file
#  to you under the Apache License, Version 2.0 (the
#  "License"); you may not use this file except in compliance
#  with the License.  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
# limitations under the License.
################################################################################

apiVersion: flink.apache.org/v1beta1
kind: FlinkDeployment
metadata:
  name: basic-example
spec:
  image: flink:1.15
  flinkVersion: v1_15
  flinkConfiguration:
    taskmanager.numberOfTaskSlots: "2"
  serviceAccount: flink
  jobManager:
    resource:
      memory: "2048m"
      cpu: 1
  taskManager:
    resource:
      memory: "2048m"
      cpu: 1
  job:
    jarURI: local:///opt/flink/examples/streaming/StateMachineExample.jar
    parallelism: 2
    upgradeMode: stateless

执行:

kubectl create -f https://raw.githubusercontent.com/apache/flink-kubernetes-operator/release-1.3/examples/basic.yaml

如果报错了(如下图),我们直接在本地新建一个basic.yaml文件,并把内容复制进去,再次执行:

kubectl create -f basic.yaml

创建成功:

查看pod,可以看到正在运行:

如果需要打开flink web监控页面,需要暴露端口,命令如下:

kubectl port-forward svc/basic-example-rest 8081


浏览器输入地址:http://localhost:8081

可以看到Flink任务正在运行中。

04 文末

本文主要记录了flink-kubernetes-operator的一些笔记,只能说是按照教程一步一步来操作,后续的文章会介绍其原理及详细用法,谢谢大家的阅读,本文完!

以上是关于flink-kubernetes-operator 的简单使用的主要内容,如果未能解决你的问题,请参考以下文章