Dinky项目在Kubernetes环境下的快速部署与使用指南

Dinky项目在Kubernetes环境下的快速部署与使用指南

【免费下载链接】dinky Dinky is an out-of-the-box, one-stop, real-time computing platform dedicated to the construction and practice of Unified Streaming & Batch and Unified Data Lake & Data Warehouse. Based on Apache Flink, Dinky provides the ability to connect many big data frameworks including OLAP and Data Lake. 【免费下载链接】dinky 项目地址: https://gitcode.com/gh_mirrors/di/dinky

前言

随着大数据处理需求的不断增长,将Flink作业部署在Kubernetes集群上已成为主流趋势。Dinky作为一款开源的Flink SQL开发与运维平台,提供了与Kubernetes深度集成的能力。本文将详细介绍如何在Kubernetes环境中快速部署和使用Dinky项目。

一、Kubernetes环境准备

在开始之前,我们需要确保Kubernetes集群已经正确配置并具备以下条件:

  1. 网络互通性:Dinky不需要部署在Kubernetes集群内部,但必须确保Dinky服务器能够与Kubernetes集群网络互通。

  2. 命名空间与权限配置

# 创建专用命名空间
kubectl create namespace dinky

# 为default用户赋予编辑权限
kubectl create clusterrolebinding flink-role-binding-default \
  --clusterrole=edit \
  --serviceaccount=dinky:default

提示:上述命令创建了一个名为"dinky"的命名空间,并为该命名空间下的default服务账户赋予了编辑权限。实际生产环境中,建议根据最小权限原则进行更精细的权限控制。

二、镜像制作指南

2.1 基础镜像制作

以Flink 1.15.4版本为例,我们需要准备以下基础依赖:

  • commons-cli-1.3.1.jar
  • dinky-app-1.15-1.0.0-SNAPSHOT-jar-with-dependencies.jar
  • flink-table-planner_2.12-1.15.4.jar

Dockerfile示例

ARG FLINK_VERSION=1.15.4
FROM flink:${FLINK_VERSION}-scala_2.12

# 添加依赖包
ADD extends /opt/flink/lib

# 替换table planner包
RUN rm -rf ${FLINK_HOME}/lib/flink-table-planner-loader-*.jar

构建并推送镜像:

docker build -t dinky-flink:1.0.0-1.15.4 . --no-cache
docker tag dinky-flink:1.0.0-1.15.4 your-registry/dinky-flink:1.0.0-1.15.4
docker push your-registry/dinky-flink:1.0.0-1.15.4

2.2 扩展功能镜像

Python支持镜像
ARG FLINK_VERSION=1.15.4
FROM flink:${FLINK_VERSION}-scala_2.12

# 安装Miniconda
USER root
RUN wget "https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh" -O "miniconda.sh" \
    && chmod +x miniconda.sh
RUN ./miniconda.sh -b -p /opt/miniconda3 && chown -R flink /opt/miniconda3

USER flink
ENV PATH /opt/miniconda3/bin:$PATH
RUN pip install "apache-flink==${FLINK_VERSION}"
Hadoop支持镜像
ARG FLINK_VERSION=1.15.4
FROM flink:${FLINK_VERSION}-scala_2.12

# 安装Hadoop
ENV HADOOP_VERSION 3.3.4
ADD hadoop-${HADOOP_VERSION}.tar.gz /opt
RUN ln -s /opt/hadoop-${HADOOP_VERSION} /opt/hadoop

# 设置环境变量
ENV HADOOP_HOME=/opt/hadoop
ENV HADOOP_CLASSPATH=${HADOOP_HOME}/etc/hadoop:${HADOOP_HOME}/share/hadoop/common/lib/*:...

三、Kubernetes集群配置

在Dinky管理界面中配置Kubernetes集群信息:

3.1 基本配置

  • 集群类型:选择"Kubernetes Native"或"Kubernetes Operator"
  • 暴露端口类型:NodePort或ClusterIP
  • 命名空间:dinky
  • 提交账号:default
  • Flink镜像:上一步构建的镜像地址

3.2 资源配置

  • JobManager CPU:建议至少1核
  • TaskManager CPU:根据任务需求配置
  • 内存配置:根据任务规模设置JM和TM的内存大小

3.3 高级配置

  • KubeConfig:可手动填写或使用默认配置
  • Pod模板:可自定义JM和TM的Pod模板
  • Flink配置文件路径:如/opt/flink/conf

重要提示:对于Application模式,必须将Flink的conf目录复制到Dinky服务器的/opt/flink/conf路径下。

四、任务提交实践

4.1 启动Session集群

在集群配置完成后,可以直接通过Dinky界面一键启动Kubernetes Session集群,为后续任务执行提供运行环境。

4.2 提交Application任务

  1. 新建Flink SQL任务
  2. 选择集群类型为"kubernetes application"
  3. 选择配置好的集群
  4. 配置必要的Jar路径(格式必须为local://开头)
  5. 提交任务

4.3 提交Session任务

  1. 新建Flink SQL任务
  2. 选择集群类型为"kubernetes session"
  3. 选择已启动的Session集群
  4. 提交任务

五、最佳实践建议

  1. 镜像管理:建议为不同版本的Flink和Dinky维护不同的镜像标签,便于版本控制。

  2. 资源配置

    • 生产环境建议JM配置至少2核4G
    • 根据任务并行度合理设置TM数量和每个TM的slot数
  3. 网络配置

    • 生产环境建议使用ClusterIP+Ingress的暴露方式
    • 确保Dinky能够访问Kubernetes API Server
  4. 监控与日志

    • 配置Flink的监控指标输出
    • 使用Kubernetes的日志收集方案收集任务日志

结语

通过本文的介绍,我们了解了如何在Kubernetes环境中部署和使用Dinky项目。Kubernetes提供了强大的资源管理和调度能力,结合Dinky的便捷开发界面,可以大大提高Flink作业的开发效率和运维便利性。在实际生产环境中,建议根据具体业务需求进一步优化配置参数和部署架构。

【免费下载链接】dinky Dinky is an out-of-the-box, one-stop, real-time computing platform dedicated to the construction and practice of Unified Streaming & Batch and Unified Data Lake & Data Warehouse. Based on Apache Flink, Dinky provides the ability to connect many big data frameworks including OLAP and Data Lake. 【免费下载链接】dinky 项目地址: https://gitcode.com/gh_mirrors/di/dinky

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值