flink-kubernetes-operator 的简单使用

简介: 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作业所需的资源,如 pods、services和配置,此外,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即可以安装docker和kubernetes环境了。

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的一些笔记,只能说是按照教程一步一步来操作,后续的文章会介绍其原理及详细用法,谢谢大家的阅读,本文完!

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
资源调度 Kubernetes Java
Flink作业任务部署解读
Flink作业任务部署解读
949 0
|
弹性计算 资源调度 Kubernetes
Flink三种集群模式,Standalone模式,Flink On YARN,Flink On K8S,这三种模式有啥优缺点,生产环境如何选择呢?
Flink三种集群模式,Standalone模式,Flink On YARN,Flink On K8S,这三种模式有啥优缺点,生产环境如何选择呢?
2839 3
|
分布式计算 运维 Kubernetes
flink on k8s jobmanager HA 完全部署
flink on k8s jobmanager HA 完全部署
flink on k8s jobmanager HA 完全部署
|
SQL 消息中间件 Kafka
流数据湖平台Apache Paimon(二)集成 Flink 引擎
流数据湖平台Apache Paimon(二)集成 Flink 引擎
2700 0
|
SQL Kubernetes 监控
在 k8s 环境中使用 mysql 部署 dolphinscheduler (非 helm 的方式)
在 k8s 环境中使用 mysql 部署 dolphinscheduler (非 helm 的方式)
2993 0
|
Kubernetes 监控 Java
flink-kubernetes-operator的简单使用
flink-kubernetes-operator的简单使用
5092 0
flink-kubernetes-operator的简单使用
|
容器 流计算 资源调度
Apache Flink 进阶(四):Flink on Yarn/K8s 原理剖析及实践
本文主要介绍 Flink on Yarn/K8s 的原理及应用实践,文章将从 Flink 架构、Flink on Yarn 原理及实践、Flink on Kubernetes 原理剖析三部分内容进行分享并对 Flink on Yarn/Kubernetes 中存在的部分问题进行了解答。
|
消息中间件 分布式计算 大数据
大数据-128 - Flink 并行度设置 细节详解 全局、作业、算子、Slot
大数据-128 - Flink 并行度设置 细节详解 全局、作业、算子、Slot
1639 0
|
Kubernetes 网络协议 Java
Flink Native Kubernetes实战
Flink Native Kubernetes是1.10版本才有的新功能,通过bin目录下的工具控制kubernetes环境下的flink操作
459 1
Flink Native Kubernetes实战
|
设计模式 运维 分布式计算
工作经验小结(2023.11.21)
工作经验小结(2023.11.21)
518 1

热门文章

最新文章