flink on k8s

这篇具有很好参考价值的文章主要介绍了flink on k8s。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、环境准备

k8s平台:kubesphere

flink on k8s

k8s中每个命名空间都有一个默认服务帐户。但是,default 服务帐户可能没有在 Kubernetes 集群中创建或删除 Pod 的权限。用户可能需要更新 default 服务账号的权限或指定另一个绑定了正确角色的服务账号。

kubectl create clusterrolebinding flink-role-binding-default --clusterrole=edit --serviceaccount=default:default

如果不想使用 default 服务帐户,可以使用以下命令创建新的 flink-service-account 服务帐户并设置角色绑定。然后使用 config 选项 -Dkubernetes.service-account=flink-service-account 使 JobManager pod 使用 flink-service-account 服务帐户来创建/删除 TaskManager pod。

kubectl create serviceaccount flink-service-account
kubectl create clusterrolebinding flink-role-binding-flink --clusterrole=edit --serviceaccount=default:flink-service-account

若权限不足 flink 在任务启动时将无法创建 akka

其他环境:

java(1.8)、docker(20.10.17)、flink(1.13.6)、mysql(8.0.23)

二、开始部署

2.1 编写 flink 任务

这里创建一个简单的 flink 任务,每秒生成一个随机数写入 mysql 中

package test;

import org.apache.flink.connector.jdbc.JdbcConnectionOptions;
import org.apache.flink.connector.jdbc.JdbcExecutionOptions;
import org.apache.flink.connector.jdbc.JdbcSink;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.api.functions.source.SourceFunction;

import java.util.UUID;
import java.util.concurrent.TimeUnit;

/**
 * @author wjun
 * @date 2022/8/4 15:09
 * @email wjunjobs@outlook.com
 * @describe
 */
public class K8sDemo {
  public static void main(String[] args) throws Exception {
    StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

    env.addSource(new SourceFunction<String>() {
      private volatile boolean isRunning = true;

      @Override
      public void run(SourceContext<String> ctx) throws Exception {
        while (isRunning) {
          ctx.collect(UUID.randomUUID().toString());
          TimeUnit.SECONDS.sleep(1);
        }
      }

      @Override
      public void cancel() {
        isRunning = false;
      }
    }).addSink(JdbcSink.sink(
      "insert into dev.k8s values(?)",
      (ps, t) -> {
        ps.setString(1, t);
      },
      JdbcExecutionOptions.builder().withBatchSize(1).build(),
      new JdbcConnectionOptions.JdbcConnectionOptionsBuilder()
      .withUrl("jdbc:mysql://***")
      .withUsername("***")
      .withPassword("***")
      .build()
    ));


    env.execute();
  }
}

最终将任务打成 jar 包

2.2 构建镜像

这里使用 Application Mode 模式在生产环境可以为应用提供更好的隔离。on k8s 要求代码与 flink 镜像绑定在一起,Application Mode 确保在应用程序终止后正确清理所有 Flink 组件。

使用 flink 社区提供的基础 docker 镜像

FROM flink:1.13.6
RUN mkdir -p $FLINK_HOME/jobs
COPY flink-on-k8s.jar $FLINK_HOME/jobs/flink-on-k8s.jar

最终 dockerfile 的工作空间如下:

flink on k8s

构建 docker 镜像

docker build -t super/flink-on-k8s-demo .

flink on k8s

2.3 提交任务

使用下面命令提交任务

flink run-application \
--class test.K8sDemo \
--target kubernetes-application \
-Dkubernetes.cluster-id=my-first-application-cluster \
-Dkubernetes.container.image=super/flink-on-k8s-demo \
local:///opt/flink/jobs/flink-on-k8s.jar
  • –class: 指定任务的主类名
  • – target: 指定任务运行模式为 native k8s application
  • -Dkubernetes.cluster-id: 指定集群名称并且必须是唯一的,若不指定 flink 将随机生成
  • -Dkubernetes.container.image: 用于启动 pod 的镜像
  • local: 指定镜像的任务 jar

flink on k8s

kubeshpere 平台中查看任务情况

flink on k8s

mysql 中观察数据是否写入

flink on k8s

2.4 任务取消

kubesphere 平台中点击应用负载-服务,根据提交任务时候指定的 cluster-id 找到对应的 rest 服务

flink on k8s

找到 NodePort 端口

flink on k8s

使用 节点ip:NodePort 即可进入熟悉的 flink web ui 点击 cancel 即可,同时 kubeshpere 会自动删除与之相关的组件。

这样 flink on k8s 初步的任务提交、运行、取消就搞定啦文章来源地址https://www.toymoban.com/news/detail-459361.html

到了这里,关于flink on k8s的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Flink 内容分享(十九):理想汽车基于Flink on K8s的数据集成实践

    目录 数据集成的发展与现状 数据集成的落地实践 1. 数据集成平台架构 2. 设计模型 3. 典型场景 4. 异构数据源 5. SQL 形式的过滤条件 数据集成云原生的落地实践 1. 方案选型 2. 状态判断及日志采集 3. 监控告警 4. 共享存储 未来规划 理想汽车数据集成的发展经历了四个阶段:

    2024年02月01日
    浏览(47)
  • K8S搭建(centos)一、环境准备

    天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。 K8S搭建(ubuntu)系列: k8s搭建(详细演示完整一篇) k8s搭建(二、k8s组件安装) K8S搭

    2024年01月23日
    浏览(58)
  • 云原生之深入解析Flink on k8s的运行模式与实战操作

    Flink 核心是一个流式的数据流执行引擎,并且能够基于同一个 Flink 运行时,提供支持流处理和批处理两种类型应用。其针对数据流的分布式计算提供了数据分布,数据通信及容错机制等功能。 Flink 官网 不同版本的文档 flink on k8s 官方文档 GitHub 地址 官方文档 Flink on yarn 有三

    2024年02月13日
    浏览(52)
  • Flink on k8s容器日志生成原理及与Yarn部署时的日志生成模式对比

    最近需要将flink由原先部署到Yarn集群切换到kubernetes集群,在切换之后需要熟悉flink on k8s的运行模式。在使用过程中针对日志模块发现,在k8s的容器中,flink的系统日志只有jobmanager.log/taskmanager.log 两个,而当时在使用Yarn集群部署时,flink的日志会有多个,比如:jobmanager.log、jo

    2024年02月07日
    浏览(37)
  • K8s环境下监控告警平台搭建及配置

    Promethues是可以单机搭建的,参考 prometheus入门 [1] 本文是就Promethues+Grafana在K8s环境下的搭建及配置 启动minikube minikube start 安装helm 使用Helm Chart 安装 Prometheus Operator: helm install prometheus-operator stable/prometheus-operator -n monitoring 报错: 根据 Kubernetes和微服务监控体系 [2] (搜索\\\"降低我们

    2024年02月13日
    浏览(57)
  • 全平台通用使用 kind 快速搭建 k8s 开发环境,坑已踩(无坑版)

    博客原文 Kind (Kubernetes in Docker) 是一个 Kubernetes 孵化项目, Kind 是一套开箱即用的 Kubernetes 环境搭建方案。顾名思义,就是将 Kubernetes 所需要的所有组件,全部部署在一个 Docker 容器中,可以很方便的搭建 Kubernetes 集群。 Kind 已经广泛的应用于 Kubernetes 上游及相关项目的

    2024年01月25日
    浏览(35)
  • 从零在单机上搭建k8s ,kubeflow1.7机器学习平台(国内环境)

    kubeflow是在k8s之上搭建的机器学习平台,涵盖了机器学习的开发、训练、优化、部署、管理阶段。由于我是在单机上进行的,故k8s环境是基于kind来进行快速搭建。Kind 是一个通过使用 docker 容器模拟节点来创建本地 k8s 集群的工具。综上,不难看出,kubeflow依赖于k8s,kind创建的

    2024年02月03日
    浏览(41)
  • 大数据Flink(六十一):Flink流处理程序流程和项目准备

    文章目录 Flink流处理程序流程和项目准备 一、Flink流处理程序的一般流程

    2024年02月11日
    浏览(39)
  • Flink on Kubernetes (flink-operator) 部署Flink

    https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-release-1.1/docs/try-flink-kubernetes-operator/quick-start/ 我的部署脚本和官网不一样,有些地方官网不够详细 注意,按照默认配置至少有两台worker https://helm.sh/zh/docs/intro/install/ 安装完成后,资源如下 此时k8s集群就可以支持我们按照fli

    2024年04月14日
    浏览(41)
  • 准备k8s集群镜像

    一、在安装kubernetes集群之前,必须要提前准备好集群需要的镜像,所需平面镜像可以通过下面命令查看 kubeadm config images list 二、由于网络原因registry.k8s.io这个镜像仓库源访问不了,就需要变通一下切换镜像仓库地址为阿里云的地址,并打上镜像标签 kubeadm init | Kubernetes 三、

    2024年02月03日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包