flink-kubernetes-operator 的简单使用

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 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的一些笔记,只能说是按照教程一步一步来操作,后续的文章会介绍其原理及详细用法,谢谢大家的阅读,本文完!

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
1月前
|
分布式计算 Serverless 数据处理
EMR Serverless Spark 实践教程 | 通过 Apache Airflow 使用 Livy Operator 提交任务
Apache Airflow 是一个强大的工作流程自动化和调度工具,它允许开发者编排、计划和监控数据管道的执行。EMR Serverless Spark 为处理大规模数据处理任务提供了一个无服务器计算环境。本文为您介绍如何通过 Apache Airflow 的 Livy Operator 实现自动化地向 EMR Serverless Spark 提交任务,以实现任务调度和执行的自动化,帮助您更有效地管理数据处理任务。
155 0
|
4月前
|
Kubernetes 网络协议 Java
在Kubernetes上运行Flink应用程序时
【2月更文挑战第27天】在Kubernetes上运行Flink应用程序时
63 10
|
4月前
|
SQL 消息中间件 Kubernetes
flink问题之on kubernetes 构建失败如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
105 1
|
4月前
|
Kubernetes Java Apache
Flink问题之托管Kubernetes报错如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
|
4月前
|
SQL Kubernetes Java
Flink构建问题之flink 1.11 on kubernetes构建失败如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
|
4月前
|
存储 Kubernetes Apache
Flink on kubernets operator
Flink on kubernets operator
|
4月前
|
Kubernetes 流计算 Docker
要将Flink CDC 3.0部署到Kubernetes上
【1月更文挑战第24天】【1月更文挑战第119篇】要将Flink CDC 3.0部署到Kubernetes上
203 2
|
4月前
|
Kubernetes Java 流计算
在Kubernetes上运行Flink应用程序时,你可以使用Flink Kubernetes Client提供的命令来提交作业
在Kubernetes上运行Flink应用程序时,你可以使用Flink Kubernetes Client提供的命令来提交作业
80 6
|
4月前
|
Kubernetes 监控 Java
Flink CDC 可以通过 Kubernetes 进行部署
Flink CDC 可以通过 Kubernetes 进行部署
293 8
|
10月前
|
Kubernetes 流计算 容器
你的Flink CDC在尝试向Kubernetes部署时遇到了问题
你的Flink CDC在尝试向Kubernetes部署时遇到了问题
59 1