k8s集群下搭建数据同步工具-canal:canal-admin篇

  • 前言
  • 容器化
    • canal-admin
      • 环境准备
  • k8s集群创建pod
    • canal-admin

前言

本文使用v1.1.4版本的canal相关程序进行容器化,主要包含cana-admin、canal-server、canal-adapter三个部分,其中admin和server官方都提供了镜像,但是根据实际情况还是决定自己来构建镜像,原因如下

  • admin镜像中包含了数据库程序,我打算使用外建的数据库,所以把这部分剔除了
  • 自建镜像相对简单,修改起来比较容易

容器化

canal-admin

环境准备

  • yum源文件 CentOS6-Base-163.repo
  • jdk包 jdk-8u201-linux-x64.tar.gz
  • canal-admin程序包 canal.admin-1.1.4.tar.gz
  • centos基础镜像 centos:6.6

将准备的文件与Dockerfile放在同一文件夹下

  • 解压canal-admin程序包
mkdir canal-admintar -zxvf canal.admin-1.1.4.tar.gz -C canal-admincd canal-admin/binvi startup.sh
# 将脚本最后的启动命令改为如下(将程序改为前台运行,否则在创建pod后容器会退出)
$JAVA $JAVA_OPTS $JAVA_DEBUG_OPT $CANAL_OPTS -classpath .:$CLASSPATH com.alibaba.otter.canal.admin.CanalAdminApplication 1>>/dev/null 2>&1# 修改canal-admin/conf下application.yml,将数据库信息修改为自己的地址
  • 创建Dockerfile文件如下
FROM centos:6.6#设置时钟
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo ZONE=\"Asia/Shanghai\" > /etc/sysconfig/clock#更新yum源
RUN rm -rf /etc/yum.repos.d/*.repo
COPY CentOS6-Base-163.repo /etc/yum.repos.d/
RUN yum clean all#创建用户
RUN groupadd -g 2500 canal; useradd -u 2501 -g canal -d /home/canal -m canal
RUN echo canal:De@2018er | chpasswd; echo root:dockerroot | chpasswd# 安装相关包
RUN yum -y install wget vi openssl.x86_64 glibc.x86_64 tar inetutils-ping net-tools telnet which file
RUN yum clean all# 配置java环境变量
COPY jdk-8u201-linux-x64.tar.gz /opt
RUN tar -zvxf /opt/jdk-8u201-linux-x64.tar.gz -C /opt && \rm -rf /opt/jdk-8u201-linux-x64.tar.gz && \chmod -R 755 /opt/jdk1.8.0_201 && \chown -R root:root /opt/jdk1.8.0_201
RUN echo 'export JAVA_HOME=/opt/jdk1.8.0_201' >> /etc/profile
RUN echo 'export JRE_HOME=$JAVA_HOME/jre' >> /etc/profile
RUN echo 'export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH' >> /etc/profile
RUN echo 'export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH' >> /etc/profile
RUN source /etc/profile#安装中文包
RUN yum install kde-l10n-Chinese -y
RUN yum install glibc-common -y
RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
ENV JAVA_HOME /opt/jdk1.8.0_201
ENV PATH $PATH:$JAVA_HOME/bin
ENV LANG zh_CN.UTF-8
ENV LC_ALL zh_CN.UTF-8#ADD 复制canal-admin程序
ADD canal-admin /home/canal/
RUN chmod 755 /home/canal/bin#启动程序
WORKDIR /home/canal/bin
RUN chmod 777 /home/canal/bin/restart.sh
RUN chmod 777 /home/canal/bin/startup.sh
RUN chmod 777 /home/canal/bin/stop.sh
ENTRYPOINT /home/canal/bin/restart.sh
  • 构建镜像
docker build  -t canal/canal-admin:v1.1.4 .

k8s集群创建pod

以下所有操作均在testcanal命名空间下进行

canal-admin

  • 将application.yml已cofigmap形式挂载到容器内(方便变更配置)
# 创建configmap
kubectl create configmap canal-admin-stable-conf --from-file=/canal/canal-admin/conf/application.yml -n testcanal# 如需变更配置,修改完application文件后,执行如下语句更新
kubectl create configmap canal-admin-stable-conf --from-file=/canal/canal-admin/conf/application.yml -n testcanal -o yaml --dry-run | kubectl replace -f -
  • canal-admin-deploy-stable.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:name: canal-admin-stablenamespace: testcanallabels:app: canal-admin-stable
spec:replicas: 1template:metadata:labels:app: canal-admin-stablespec:containers:- image: canal/canal-admin:v1.1.4name: canal-admin-stableports:- containerPort: 8089protocol: TCPname: httpresources:requests:cpu: 100mmemory: 100Milimits:cpu: 2000mmemory: 2GivolumeMounts:- mountPath: /home/canal/conf/application.ymlsubPath: application.ymlname: admin-confvolumes:- name: admin-confconfigMap:name: canal-admin-stable-confsecurityContext:runAsUser: 0
  • canal-admin-svc-stable.yaml(admin需要外网访问,创建nodeport类型svc)
apiVersion: v1
kind: Service
metadata:name: canal-admin-stablenamespace: testcanallabels:app: canal-admin-stable
spec:selector:app: canal-admin-stabletype: NodePortports:- name: webnodePort: 31628port: 8089targetPort: http
  • 创建admin相关
kubectl apply -f canal-admin-svc-stable.yaml
kubectl apply -f canal-admin-deploy-stable.yaml# 查看pod创建结果
kubectl get pods -n testcnal# 访问master节点:31628验证是否成功
http://masterIp:31628

以上就是我在搭建和使用 canal 过程中的一些总结,希望对你有所帮助!

欢迎关注我的个人微信公众号,一个菜鸟程序猿的技术技术分享和奔溃日常

k8s集群下搭建数据同步工具-canal:canal-admin篇相关推荐

  1. 【云原生之kubernetes实战】在k8s集群下部署Weave Scope监控平台

    [云原生之kubernetes实战]在k8s集群下部署Weave Scope监控平台 一.Weave Scope介绍 1.Weave Scope简介 2.Weave Scope的特点 3.Weave ...

  2. Docker+K8S 集群环境搭建及分布式应用部署

    互联网正在飞速发展,早已由最初的单体架构演变为如今的分布式架构,而分布式架构也为系统运维带来了挑战.架构在发展,系统运维技术也在不断升级.而伴随着系统运维的是如今炒的火热的容器技术,Docker 就是 ...

  3. 【kubernetes】k8s集群的搭建安装详细说明【创建集群、加入集群、踢出集群、重置集群...】【含离线搭建方法】

    文章目录 环境主机说明 虚拟机环境配置[3台主机同步] 配置selinux 配置防火墙 配置解析 关闭swap 配置yum源 安装docker并启动服务 配置加速器 设置内核参数 安装k8s 查看可用 ...

  4. [k8s]elk架构设计-k8s集群里搭建

    elasticsearch和mysql的对比 https://blog.csdn.net/qq_21383435/article/details/79323383 Mapping ~ Schema m ...

  5. k8s集群下创建高可用postgresql数据库集群实践

    K8s 安装 pg集群服务器 主要的目的是做到自动灾备切换,利用kubernetes 集群做到高可用的数据库服务. 三个节点, 2节点部署 proxy,sentinel,3节点keeper (DB) ...

  6. 不懂就问:ZooKeeper 集群如何进行数据同步?

    本文作者:HelloGitHub-老荀 Hi,这里是 HelloGitHub 推出的 HelloZooKeeper 系列,免费开源.有趣.入门级的 ZooKeeper 教程,面向有编程基础的新手. 项 ...

  7. 基于阿里云ECS服务器的k8s集群环境搭建

    前言:  网上搭建k8s的文章很多,但很多都无法按其说明在阿里云ecs服务器成功搭建,所以我就花了些时间基于自己成功搭建k8s的步骤写了个 操作手册,希望对想搭建k8s环境的盆友有所帮助. 声明:  ...

  8. k8s集群下的健康检查

    k8s支持两种健康检查模式:readiness.liveness 简单的来说,readiness检查是否可以暴露该应用(availabel),liveness检查是否需要重启. 三种检查方式:http ...

  9. K8S集群的搭建:环境准备及相关命令

    四种途径 环境准备 1. 设置主机名与时区 timedatectl set-timezone Asia/Shanghai #都要执行 hostnamectl set-hostname master # ...

最新文章

  1. python tensorflow教程_TensorFlow入门教程TensorFlow 基本使用T
  2. 语言都是相通的,学好一门语言,再学第二门语言就很简单,记录一下我复习c语言的过程。...
  3. 14.关于原子性的相关介绍
  4. Apache POI和EasyExcel 第五集:Apache POI的Excel读取不同类型的数据
  5. 如果在chrome的新标签中继续打开开发工具
  6. Linux使用systemctl设置程序开机自启动
  7. 转:深度学习与自然语言处理之五:从RNN到LSTM
  8. python中deepcopy函数_python – copy.deepcopy使用自定义的__new __()方法在对象上引发TypeError...
  9. vscode或cmd:无法将“git”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确
  10. mysql中的生日应该是什么类型_MySQL中的定点数类型
  11. html添加工具栏,添加带有命令的工具栏 (HTML)
  12. [推荐书籍]Flex 4 in Action MEAP Edition
  13. paip.提升用户体验----解决浏览器关闭后自动退出的问题
  14. 惠普HP Laser 108a 打印机驱动
  15. 曲奇云盘资源搜索引擎_曲奇云盘下载-曲奇云盘资源共享群组下载_快啦网
  16. 用Python验证指数基金定投策略
  17. Unity5 UI.Text 引发Canvas.SendWillRenderCanvases很卡的问题
  18. 从淘宝服务器IP地址服务获取IP地址信息的方法
  19. android 会话通讯插件,Android版添加phonegap--融云即时通讯插件教程
  20. M1芯片已适配Final Cut Pro X苹果M1处理器安装新版FCPX教程 适配M1芯片的Mac电脑Final Cut Pro更新版本10.5

热门文章

  1. html5 2019新年祝福页面,2019最新创意暖心新年祝福语 简单的祝福 - 中国万年历
  2. node.js安装后输入“node -v”提示‘node‘ 不是内部或外部命令,也不是可运行的程序的解决方法
  3. 使用Mbrfix卸载Ubuntu系统
  4. 阿里云、华为云、谷歌云都已入局,盘点13家云计算厂商的RPA
  5. 黄灰色鱼骨流程图图表合集PPT模板
  6. logstash判断是否匹配_logstash 中的贪婪匹配
  7. 第7周项目2 - 建立链队算法库
  8. (转)手机淘宝视频下载分析
  9. 金融时间序列分析:3. First Demo By Python
  10. 怎样开启计算机的隐藏功能音乐,只要开启vivo手机的这一隐藏功能,就让音乐效果翻倍...