当前位置: 首页 > article >正文

k8s使用本地docker私服启动自制的flink集群

目标:使用本地flink环境自制flink镜像包上传到本地的私服,然后k8s使用本地的私服拉取镜像启动Flink集群

1、将本地的flink软件包打包成Docker镜像

从官网下载flink-1.13.6的安装包,修改其中的flink-conf.yaml,修改下面几项配置

rest.address: 0.0.0.0

rest.bind-address: 0.0.0.0

jobmanager.bind-host: 0.0.0.0

taskmanager.bind-host: 0.0.0.0

我本地解压的flink安装包路径为 /opt/flink-1.13.6,使用tar打包

tar -zcvf flink-1.13.6.tgz /opt/flink-1.13.6/

新建一个文件夹用于单独存放到打包用到的文件 mkdir -p /opt/docker-flink

参照 文章 编写Dockerfile并进行打包

上述文件可通过百度网盘提取
链接:https://pan.baidu.com/s/18SOMo1bdhlRfN0Tk1ot9iQ?pwd=iwsj 
提取码:iwsj

打包执行 

docker build ./ -t 192.168.101.141:5000/flink:1.13.6

成功后可以使用docker images查看是否在列表中

2、安装本地私服registry

本来是打算安装harbor的,奈何因为网络的原因只能作罢(换了国内源也没能解决)。

这里就安装registry测试吧,拉取镜像

docker pull m.daocloud.io/docker.io/library/registry:2.7.1

 由于k8s拉取镜像时要求https,故参照 文章1 制作了自签证书

执行 

openssl req -newkey rsa:4096 -nodes -sha256 -keyout domain.key -x509 -days 365 -out domain.crt

然后将domain.key和domain.crt移动到/etc/docker/registry/ssl目录下面

参照文章2使用下面的命令启动registry

docker run -d \
  --restart=always \
  --name registry \
  -v /opt/registry:/var/lib/registry \
  -v /etc/docker/registry/ssl:/certs \
  -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
  -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
  -p 5000:443 \
  m.daocloud.io/docker.io/library/registry:2.7.1

启动成功后在浏览器中访问https://192.168.101.141:5000/v2/_catalog 验证是否启动成功

没有问题的话,可以将第一步的镜像推上去

docker push 192.168.101.141:5000/flink:1.13.6

推送成功后可以访问https://192.168.101.141:5000/v2/flink/tags/list验证

或者将docker images中的镜像使用docker rm 删掉,然后从registry私服拉下来

3、编写k8s所需的配置文件

通过百度网盘获取写好的模板,此模板也是参照flink官网进行改写的
链接:https://pan.baidu.com/s/1Y93J-xS9ylnEmrZIxdJhXg?pwd=y4ih 
提取码:y4ih

下载下来后放在/opt/session-mode目录下,然后进入此目录执行 apply启动

# 根据配置文件部署flink集群
kubectl apply -f .
# 删除配置文件中启动的pod
kubectl delete -f .
# 查看正在运行的pod列表
kubectl get pods -A
# 查看指定pod 的启动描述
kubectl describe pod [pod name]
# 查看指定pod的运行日志
kubectl logs [pod name]

4、测试效果

启动成功后可以访问http://192.168.101.141:30081查看Flink WebUI

我这边执行kubectl apply -f .后没有启动成功,通过kubectl get pods -A看到下面这样

default       flink-jobmanager-69d7f845b5-trjl9    0/1     ErrImagePull   0          3s
default       flink-taskmanager-96757889-ktz4q     0/1     ErrImagePull   0          3s
default       flink-taskmanager-96757889-pzml8     0/1     ErrImagePull   0          3s
default       flink-taskmanager-96757889-rmrjn     0/1     ErrImagePull   0          3s

通过kubectl describe pod flink-jobmanager-69d7f845b5-trjl9

可以看到由于https安全的问题没有成功拉取镜像

Failed to pull image "192.168.101.141:5000/flink": rpc error: code = Unknown desc = Error response from daemon: Get https://192.168.101.141:5000/v2/: x509: certificate signed by unknown authority

5、遇到的一些问题

安装企业私服harbor时因为无法访问国外域名导致失败

prepare base dir is set to /opt/software/harbor
Unable to find image 'goharbor/prepare:v1.10.19' locally
docker: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).
See 'docker run --helpyanzyan'z

由于测试当日发现只有道客云才能拉取docker镜像,但无法注册账号,获取验证码的地址502,通过github账号注册回跳到道客云也报错


http://www.kler.cn/a/307137.html

相关文章:

  • Leecode热题100-35.搜索插入位置
  • 解决Anaconda出现CondaHTTPError: HTTP 000 CONNECTION FAILED for url
  • Openstack7--安装消息队列服务RabbitMQ
  • GISBox VS ArcGIS:分别适用于大型和小型项目的两款GIS软件
  • 【AI大模型】ELMo模型介绍:深度理解语言模型的嵌入艺术
  • NUXT3学习日记一(在我git中拉取代码、文件讲解)
  • OKHttp实现原理分享
  • vue3 指定元素全屏 screenfull(可直接粘贴使用)
  • 《凡人歌》:网络安全组电话响3声必须接,安全组长被压迫患得惊恐症、抑郁症
  • HTTP跨域请求时为什么要发送options请求
  • 【LLMs对抗性提示:提示泄漏、非法行为、DAN、Waluigi效应、 游戏模拟器、防御策略————】
  • JSON教程
  • 聪明办法学 Python 第二版.1.学习安排
  • vue3项目实现全局国际化
  • 深入理解C++中的std::string::substr成员函数:子串操作的艺术
  • 增强LinkedList实现瑞士轮赛制编排
  • C++课程笔记 类和对象
  • Android JobScheduler介绍
  • 介绍一些免费 的 html 5模版网站 和配色 网站
  • Spring的核心思想
  • Linux常用命令以及操作技巧
  • 数据库之索引<保姆级文章>
  • 纯血鸿蒙NEXT常用的几个官方网站
  • 你天天用微服务还不知道心跳检测机制是什么?
  • Redis的配置与优化
  • spring模块(六)spring event事件(3)广播与异步问题