使用docker build自制flink镜像供k8s使用

1、创建一个空目录专门用于自制docker镜像

mkdir -p /opt/module/flink-docker

2、将符合项目要求的本地flink拷贝到目录

cp -r /opt/module/flink-1.16.3 /opt/module/flink-dockercd /opt/module/flink-dockermv flink-1.16.3 flink

3、编写Dockerfile文件

FROM m.daocloud.io/docker.io/library/openjdk:8-jre #基于openjdk:8-jre镜像#设置环境变量
#本地准备好的flink软件目录,用于拷贝到镜像内部
ENV FLINK_DIR=flink/
#镜像中存放flink的Home目录
ENV FLINK_HOME=/opt/flink
#拷贝本地的文件到镜像指定地方
COPY gosu-amd64 /usr/local/bin/gosu
COPY gosu-amd64.asc /usr/local/bin/gosu.asc
#替换镜像中的镜像源
RUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list && \sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
#拷贝本地的文件到镜像指定地方
COPY gettext-base_0.21-4_amd64.deb /gettext-base_0.21-4_amd64.deb
COPY libjemalloc-dev_5.2.1-3_amd64.deb /libjemalloc-dev_5.2.1-3_amd64.deb# 在镜像内部运行下面的命令
RUN apt-get -y install dpkg; \dpkg -i /gettext-base_0.21-4_amd64.deb; \dpkg -i /libjemalloc-dev_5.2.1-3_amd64.deb; \apt-get -y install gettext-base libjemalloc-dev; \rm -rf /gettext-base_0.21-4_amd64.deb /libjemalloc-dev_5.2.1-3_amd64.deb; \rm -rf /var/lib/apt/lists/*
# 设置环境变量
ENV GOSU_VERSION 1.11
# 在镜像内部运行下面的命令
RUN gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \gpgconf --kill all; \rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc; \chmod +x /usr/local/bin/gosu; \gosu nobody true# 设置环境变量
ENV FLINK_HOME=/opt/flink
ENV PATH=$FLINK_HOME/bin:$PATH
# 在镜像内部运行下面的命令
RUN groupadd --system --gid=9999 flink && \useradd --system --home-dir $FLINK_HOME --uid=9999 --gid=flink flink
# 设置工作目录
WORKDIR $FLINK_HOME
# 拷贝本地flink到镜像内部
COPY $FLINK_DIR $FLINK_HOME# 在镜像内部执行下面的命令
RUN set -ex; \chown -R flink:flink .; \chmod -R 775 .; \# Replace default REST/RPC endpoint bind address to use the container's network interface \sed -i 's/rest.address: localhost/rest.address: 0.0.0.0/g' $FLINK_HOME/conf/flink-conf.yaml; \sed -i 's/rest.bind-address: localhost/rest.bind-address: 0.0.0.0/g' $FLINK_HOME/conf/flink-conf.yaml; \sed -i 's/jobmanager.bind-host: localhost/jobmanager.bind-host: 0.0.0.0/g' $FLINK_HOME/conf/flink-conf.yaml; \sed -i 's/taskmanager.bind-host: localhost/taskmanager.bind-host: 0.0.0.0/g' $FLINK_HOME/conf/flink-conf.yaml; \sed -i '/taskmanager.host: localhost/d' $FLINK_HOME/conf/flink-conf.yaml;
# 在镜像内部执行下面的命令
RUN rm -rf $FLINK_DIR
# 拷贝文件到镜像根目录
COPY docker-entrypoint.sh /
# 在镜像内部执行下面的命令
RUN chmod +x /docker-entrypoint.sh
# 为容器指定默认执行的命令,容器启动时的默认行为
ENTRYPOINT ["/docker-entrypoint.sh"]
# 于声明容器运行时对外提供服务的端口
EXPOSE 6123 8081
# 镜像被启动后Docker容器默认执行的命令
CMD ["help"]

4、将Dockerfile中依赖的文件下载到本地

上文中用到的docker-entrypoint.sh、gettext-base_0.21-4_amd64.deb、gosu-amd64、gosu-amd64.asc和libjemalloc-dev_5.2.1-3_amd64.deb文件先下载到本地

Dockfile及docker-entrypoint.sh可以参考

flink-docker/1.18/scala_2.12-java8-ubuntu at master · apache/flink-docker · GitHub

5、构建镜像包

docker build --no-cache -t flink:1.16.3 ./

6、打标签,目的是为了推送到Harbor

docker tag flink:1.16.3 harbor的ip:harbor的端口/flink/flink:1.16.3docker push harbor的ip:harbor的端口/flink/flink:1.16.3

7、使用k8s部署

参考flink官方创建所需的yaml文件,或者下载文末百度网盘中的文件(使用的namespace为flink)

Kubernetes 设置 | Apache Flink

# 进入k8s部署文件yaml所在目录
cd /opt/session-mode
# 部署
kubectl apply -f .

flink-docker.tgz
链接:https://pan.baidu.com/s/1ItGu2Sh3nigtwvRAeGGUHQ?pwd=5qj0 
提取码:5qj0

session-mode.zip
链接:https://pan.baidu.com/s/1aKtBuV8NtoHKFCaPn1Zi5w?pwd=l9k1 
提取码:l9k1

参考:

https://www.cnblogs.com/chouc/p/17330527.html
GitHub - apache/flink-docker: Docker packaging for Apache Flink

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/57311.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

了解孤独症患者的表现,用心聆听,传递温暖

在孤独症患者的世界里,每一声细微的呢喃,每一次不经意的眼神交流,都可能是他们内心世界的真实写照。孤独症,这个看似遥远的词汇,实则紧紧牵动着无数家庭的心。它不仅仅是一种疾病,更是一种需要全社会共同理…

代码随想录算法训练营第52天|110. 字符串接龙、105.有向图的完全可达性、106. 岛屿的周长

文章目录 110. 字符串接龙105.有向图的完全可达性106. 岛屿的周长 110. 字符串接龙 卡码网 110. 字符串接龙 代码随想录 广度优先第一个遇到的就是最短的。 from collections import deque n int(input().strip())start, end input().split()strList [] for _ in range(n):…

15分钟学 Go 第 15 天:映射(Map)

第15天:映射(Map) 学习目标 在本节中,我们将深入理解Go语言中的字典类型(映射),通过例子与图示来帮助你掌握其使用方法。我们将涵盖以下几个方面: 概念定义创建和使用映射访问和更…

从零学习大模型(三)-----GPT3(下)

特殊初始化与优化 初始化方法:GPT-3 的模型使用了与 GPT-2 类似的修改初始化方法,包括预归一化(pre-normalization)**和**可逆标记化(reversible tokenization),从而在训练过程中更好地保持模型…

H7-TOOL的LUA小程序教程第15期:电压,电流,NTC热敏电阻以及4-20mA输入(2024-10-21,已经发布)

LUA脚本的好处是用户可以根据自己注册的一批API(当前TOOL已经提供了几百个函数供大家使用),实现各种小程序,不再限制Flash里面已经下载的程序,就跟手机安装APP差不多,所以在H7-TOOL里面被广泛使用&#xff…

输入输出--I/O流【C++提升】

1.1基础知识&#xff1a; 在C中&#xff0c;输入输出&#xff08;IO&#xff09;流是通过标准库中的 <iostream> 头文件来处理的。C 提供了几种基本的输入输出流类&#xff0c;最常用的有以下几种&#xff1a; std::cin&#xff1a;用于输入。std::cout&#xff1a;用于…

python的Django的render_to_string函数和render函数的使用

一、render_to_string render_to_string 是 Django 框架中的一个便捷函数&#xff0c;用于将模板渲染为字符串。 render_to_string(template_name.html, context, requestNone, usingNone) template_name.html&#xff1a;要渲染的模板文件的名称。context&#xff1a;传递给…

UICollectionView 的UICollectionReusableView复用 IOS18报错问题记录

- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath 方法复用报错 报错详情&#xff1a; Terminating app due to uncaught exception NSInternal…

无人机电机运行算法

一、电机控制策略 无人机电机通常采用无刷直流电机&#xff08;BLDC&#xff09;或永磁同步电机&#xff08;PMSM&#xff09;&#xff0c;其控制策略主要包括以下几个方面&#xff1a; PID控制&#xff1a; PID&#xff08;Proportional Integral Derivative&#xff09;控…

如何保证系统的高并发,高性能,高可用

三高理论图 三高架构图 构建弹性伸缩架构、实现负载均衡和自动扩展 采用分布式微服务集群的架构&#xff0c;将系统拆分成多个独立的模块&#xff0c;每个模块可以独立部署&#xff0c;独立拓展&#xff0c;每个模块可以部署多个实例。 做好负载均衡&#xff0c;将流量合理地…

to_sql报错not all arguments converted during string formatting

报错&#xff1a; DatabaseError: Execution failed on sql SELECT name FROM sqlite_master WHERE typetable AND name?;: not all arguments converted during string formattingb 报错的代码如下&#xff1a; import pymysql import pandas as pd con pymysql.connect(…

双向循环带头链表

双向循环带头链表是一种复杂的数据结构。 带头链表是指在链表的最前端有一个额外的节点&#xff08;头节点&#xff09;&#xff0c;这个头节点不存储实际的数据&#xff0c;主要用于方便链表的操作&#xff0c;比如在表头插入或删除节点时不用特殊处理空链表的情况。 双向…

Linux基础命令(入门)

linux 用户 root 用户 一个特殊的管理帐户 也被称为超级用户 root已接近完整的系统控制 对系统损害几乎有无限的能力 除非必要,不要登录为 root 普通&#xff08; 非特权 &#xff09; 用户权限有限 造成损害的能力比较有限 linux的哲学思想&#xff08;优点&#xf…

DCS项目调试踩坑记录

最近在调试一个DCS项目&#xff08;集散控制系统&#xff09;&#xff0c;实际上就是一个新建厂区的控制系统。PLC用的是西门子1500&#xff0c;控制画面使用组态王7.5。 在调试过程中&#xff0c;发现给西门子DB块的变量转移到组态王太难了&#xff0c;因此记录一下&#xff0…

#{}和${}

总结&#xff1a; #{}&#xff1a;先编译sql语句&#xff0c;再给占位符传值&#xff0c;底层是PreparedStatement实现。可以防止sql注入&#xff0c;比较常用。 ${}&#xff1a;先进行sql语句拼接&#xff0c;然后再编译sql语句&#xff0c;底层是Statement实现。存在sql注入…

pthread_create

pthread_create 是 POSIX 线程&#xff08;Pthreads&#xff09;库中的一个函数&#xff0c;用于创建一个新的线程。这个函数允许程序在运行时并发执行多个线程&#xff0c;从而提高程序的效率和响应能力。 函数原型 #include <pthread.h>int pthread_create(pthread_t…

【设计模式-我的思考】套餐模式

imom排故下线-订单状态集查询功能实现(套餐模式) 需求描述 排故下线状态 不排故&#xff1a;未启用排故下线确认配置&订单状态参数值&#xff01;&#xff08;170、180、190&#xff09; 待排故&#xff1a;启用排故下线确认配置&排故下线确认未执行&订单状态参数…

Spire.PDF for .NET【页面设置】演示:在 C# 中应用 PDF 页面转换

当您在导出为 PDF 格式的文档中翻页时&#xff0c;页面过渡会显示装饰效果&#xff0c;例如溶解或擦除。当您以 PDF 格式创建幻灯片时&#xff0c;页面过渡特别有用。Spire.PDF是一款专为开发人员设计的强大 .NET 组件&#xff0c;可让您将页面过渡应用于 PDF 文件。 这里介绍…

vue3学习记录-组件通信

vue3学习记录-组件通信 1.父子组件通信2.兄弟组件传值2.1 以父组件为媒介2.2 发布订阅模式2.3 使用mitt2.3.1 全局使用2.3.2 局部使用 1.父子组件通信 父组件&#xff1a; <template>父组件原有的title:{{ title }}<p>---</p><com :title"title&qu…

MyBatis入门之一对一关联关系(示例)

【图书介绍】《SpringSpring MVCMyBatis从零开始学&#xff08;视频教学版&#xff09;&#xff08;第3版&#xff09;》-CSDN博客 《SpringSpring MVCMyBatis从零开始学(视频教学版)&#xff08;第3版&#xff09;》(杨章伟&#xff0c;刘祥淼)【摘要 书评 试读】- 京东图书 …