【实战】Dinky 1.2.1集成Flink 1.18.1:Kubernetes全流程部署指南

 摘要:本文详细讲解如何将Dinky 1.2.1与Flink 1.18.1无缝集成,并部署到Kubernetes集群中。通过解决资源配置、服务发现等核心问题,帮助读者构建高可用的实时计算平台。文章内容涵盖环境准备、镜像构建、Kubernetes资源配置、授权管理及常见问题排查,适合有一定Kubernetes和Flink基础的开发者。

一、为什么选择Dinky + Flink on Kubernetes?

  • 1. Dinky:Flink生态的SQL开发利器

    Dinky是一个开源的Flink SQL开发平台,支持作业管理、血缘分析、实时监控等功能,能够显著提升Flink作业的开发效率和管理能力。

    2. Flink 1.18:原生Kubernetes集成

    Flink 1.18版本增强了对Kubernetes的原生支持,提供了更高效的资源调度和弹性扩缩容能力,适合大规模实时计算场景。

    3. Kubernetes部署的优势

    • 自动扩缩容:根据负载动态调整资源。

    • 故障恢复:自动重启失败的Pod,保障服务高可用。

    • 资源隔离:通过Namespace和Resource Quota实现资源隔离,避免资源争用。

二、环境准备 

  1. Kubernetes集群(Minikube或生产集群,版本≥1.20)

  2. Docker & 镜像仓库(私有Harbor或Docker Hub)

  3. 持久化存储(NFS或CSI驱动) 

  • 配置NFS或CSI驱动,确保Dinky和Flink的配置文件、日志等数据能够持久化存储。

  • 创建PersistentVolume(PV)和PersistentVolumeClaim(PVC),供Deployment使用。

三、部署步骤详解
1. 构建Dinky自定义镜像

Dinky的镜像需要基于Flink 1.18.1构建,以下是详细的Dockerfile示例:

ARG FLINK_VERSION=1.18.1


FROM flink:${FLINK_VERSION}-scala_2.12-java8
ENV FLINK_HOME=/opt/flink

RUN rm -f /opt/flink/lib/flink-table-planner-loader*.jar  && cp /opt/flink/opt/flink-table-planner*.jar /opt/flink/lib/ 2>/dev/null || : && ln -s /opt/flink/lib/*  /opt/dinky/extends/flink1.18/

ENV DINKY_HOME=/opt/dinky/


USER root

WORKDIR /opt/dinky/


#下载dink jar并解压到与DokerFile 同级目录下
COPY dinky-release-1.18-1.2.1  /opt/dinky

#需要mysql 驱动
COPY  mysql-connector-java-8.0.28.jar /opt/dinky/extends/
WORKDIR  /opt/dinky

COPY flink-shaded-hadoop-2
大数据

删除数据库example(删除d_sample数据库中的sc表)

2025-3-4 15:17:14

大数据

git命令行操作(git命令提交代码的正确步骤)

2025-3-4 15:17:16

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧