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

kubernetes的基于Operator实现Redis主从复制

 

 

operator 实现过程

1)安装operator,生成对应CRD,以及对应CRD Controller Pod
2) 编写 CRD 清单文件,里面定义用户的需求
3)apply CRD 清单文件

 

Operator 案例

案例: 基于 Operator 实现 Redis 主从复制

#Redis Operator 国内项目
https://github.com/tongdun/td-redis-operator
#著名Redist Operator项目
https://github.com/OT-CONTAINER-KIT/redis-operator/

 

安装 Operator

wget https://raw.githubusercontent.com/tongdun/td-redisoperator/main/deploy/deploy.yaml

kubectl apply -f deploy.yaml

 #查看CRD

root@master1 stateful]# kubectl get crd |grep redis
redisclusters.cache.tongdun.net    2026-05-28T15:29:01Z
redisstandbies.cache.tongdun.net   2026-05-28T15:29:01Z

 

[root@master1 stateful]# kubectl api-resources |grep redis
redisclusters                                    cache.tongdun.net/v1alpha1        true         RedisCluster
redisstandbies                                   cache.tongdun.net/v1alpha1        true         RedisStandby

#基于Operator安装redis主从和哨兵

wget https://raw.githubusercontent.com/tongdun/td-redisoperator/main/cr/redis_standby.yaml

 

#创建redis主从资源清单文件

 

[root@master1 ~]#vim redis_standby.yaml 

apiVersion: cache.tongdun.net/v1alpha1
kind: RedisStandby
metadata:name: redis-standby-tomnamespace: redis
spec:app: standby-tomcapacity: 2048dc: hzenv: demoimage: tongduncloud/redis-standby:1.0monitorimage: tongduncloud/redis-exporter:1.0 #netmode: ClusterIPnetmode: NodePort   #修改SVC类型realname: sasecret: "123456"    #指定连接密码sentinelimage: tongduncloud/sentinel-standby:lateststorageclass: "sc-nfs" #指定storageclassvip: 172.17.128.8

 

#参数说明
https://github.com/tongdun/td-redis-operator/wiki/RedisStandby%E4%BA%A4%E4%BB%98%E4%BB%8B%E7%BB%8D
app           关联应用
capacity     容量,单位Mb
dc           机房
env           可选(demo,production)
image         Redis镜像
monitorimage exporter镜像
netmode       网络模式,可选(ClusterIP、NodePort)
realname     负责人
secret       密码
sentinelimage 哨兵镜像
storageclass PVC
vip           外部网络访问地址,无实际功能

 

root@master1 stateful]# cat redis_standby.yaml    
apiVersion: cache.tongdun.net/v1alpha1
kind: RedisStandby
metadata:name: redis-standby-tomnamespace: redis
spec:app: standby-tomcapacity: 2048dc: guangzhouenv: demoimage: tongduncloud/redis-standby:1.0monitorimage: tongduncloud/redis-exporter:1.0netmode: NodePortrealname: sasecret: "123456"sentinelimage: tongduncloud/sentinel-standby:lateststorageclass: "sc-nfs"vip: 172.17.128.8

 

[root@master1 stateful]# kubectl get pod -n redis
NAME                        READY   STATUS    RESTARTS   AGE
operator-66c655b5c8-rhrfc   1/1     Running   0          7m51s

 

kubectl apply -f redis_standby.yaml 

 

创建出来是 redis主从架构带哨兵

一主一从3个哨兵

#查看生成的Pod

kubectl get pod -n redis -o wide

[root@master1 stateful]# kubectl get pod -o wide -n redis
NAME                        READY   STATUS    RESTARTS   AGE   IP            NODE        NOMINATED NODE   READINESS GATES
operator-66c655b5c8-rhrfc   1/1     Running   0          48m   10.244.1.49   node1.org   <none>           <none>
redis-standby-tom-0         2/2     Running   0          57s   10.244.2.43   node2.org   <none>           <none>
redis-standby-tom-1         1/2     Running   0          36s   10.244.1.55   node1.org   <none>           <none>
sentinel-standby-tom-0      1/1     Running   0          57s   10.244.1.53   node1.org   <none>           <none>
sentinel-standby-tom-1      1/1     Running   0          54s   10.244.2.44   node2.org   <none>           <none>
sentinel-standby-tom-2      1/1     Running   0          52s   10.244.1.54   node1.org   <none>           <none>

 

 

#查看PVC和PV

pvc pv 自动创建 自动绑定

[root@master1 stateful]# kubectl get pvc,pv -n redis     
NAME                                                   STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
persistentvolumeclaim/redis-data-redis-standby-tom-0   Bound    pvc-34274930-2b20-4328-8189-b5c2ba2d3a0f   64Gi       RWO            sc-nfs         <unset>                 93s
persistentvolumeclaim/redis-data-redis-standby-tom-1   Bound    pvc-3cf4c53c-0432-4265-bcff-d4c5ea6e7d84   64Gi       RWO            sc-nfs         <unset>                 72sNAME                                                        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                                  STORAGECLASS   VOLUMEATTRIBUTESCLASS   REASON   AGE
persistentvolume/pvc-34274930-2b20-4328-8189-b5c2ba2d3a0f   64Gi       RWO            Delete           Bound    redis/redis-data-redis-standby-tom-0   sc-nfs         <unset>                          93s
persistentvolume/pvc-3cf4c53c-0432-4265-bcff-d4c5ea6e7d84   64Gi       RWO            Delete           Bound    redis/redis-data-redis-standby-tom-1   sc-nfs         <unset>                          72s

 

[root@master1 stateful]# ls /data/sc-nfs/
redis-redis-data-redis-standby-tom-0-pvc-34274930-2b20-4328-8189-b5c2ba2d3a0f
redis-redis-data-redis-standby-tom-1-pvc-3cf4c53c-0432-4265-bcff-d4c5ea6e7d84
[root@master1 stateful]# 

 

测试功能

#测试主从复制功能
#连接到第一个redis节点

kubectl exec -it -n redis redis-standby-tom-0 -c redis-standby-tom -- sh

[root@master1 stateful]# kubectl exec -it -n redis redis-standby-tom-0 -c redis-standby-tom -- sh
sh-4.2# 
sh-4.2# redis-cli -a 123456 
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> 

 

查看主从复制信息

127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=10.244.1.55,port=6379,state=online,offset=44417,lag=0
master_replid:1c60033a39a97d76e4d148b4053f97834cc02082
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:44417
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:134217728
repl_backlog_first_byte_offset:1
repl_backlog_histlen:44417

 

[root@master1 ~]# kubectl get pod -o wide -n redis
NAME                        READY   STATUS    RESTARTS   AGE     IP            NODE        NOMINATED NODE   READINESS GATES
operator-66c655b5c8-rhrfc   1/1     Running   0          53m     10.244.1.49   node1.org   <none>           <none>
redis-standby-tom-0         2/2     Running   0          5m10s   10.244.2.43   node2.org   <none>           <none>
redis-standby-tom-1         1/2     Running   0          4m49s   10.244.1.55   node1.org   <none>           <none>
sentinel-standby-tom-0      1/1     Running   0          5m10s   10.244.1.53   node1.org   <none>           <none>
sentinel-standby-tom-1      1/1     Running   0          5m7s    10.244.2.44   node2.org   <none>           <none>
sentinel-standby-tom-2      1/1     Running   0          5m5s    10.244.1.54   node1.org   <none>           <none>

 

127.0.0.1:6379> role
1) "master"
2) (integer) 72333
3) 1) 1) "10.244.1.55"2) "6379"3) "72333"

写数据

127.0.0.1:6379> 
127.0.0.1:6379> set name ming
OK
127.0.0.1:6379> get name
"ming"

 

#连接到第二个redis节点

kubectl exec -it -n redis redis-standby-tom-1 -c redis-standby-tom -- sh

root@master1 stateful]# kubectl exec -it -n redis redis-standby-tom-1 -c redis-standby-tom -- sh
sh-4.2# redis-cli -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> 
127.0.0.1:6379> role
1) "slave"
2) "10.244.2.43"
3) (integer) 6379
4) "connected"
5) (integer) 92372
127.0.0.1:6379> 

 

127.0.0.1:6379>  info replication
# Replication
role:slave
master_host:10.244.2.43
master_port:6379
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:101108
slave_priority:100
slave_read_only:0
connected_slaves:0
master_replid:1c60033a39a97d76e4d148b4053f97834cc02082
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:101108
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:134217728
repl_backlog_first_byte_offset:1
repl_backlog_histlen:101108

 

127.0.0.1:6379> get name
"ming"

 

 

http://www.rkmt.cn/news/1417727.html

相关文章:

  • DDrawCompat终极指南:让Windows经典游戏在现代系统上完美运行的免费兼容性方案
  • 使用 Taotoken CLI 工具一键配置多开发环境下的模型调用参数
  • 构建去中心化AI推理任务匹配系统:架构、挑战与实现
  • 在旧笔记本上复活Gentoo:超轻量级安装与i3wm平铺窗口管理器配置全流程
  • 基于HMC5883L与Arduino的电子指南针:从磁场感知到动态指针显示
  • 2026年近期西南地区餐椅采购指南:聚焦康定直销工厂联系方式与选型策略 - 2026年企业资讯
  • 保姆级教程!手把手教你安装 OpenClaw,小白也能一次成功
  • 【数据分析】分数阶混沌系统的混沌附matlab代码
  • 2026年5月北京二手房装修公司推荐:TOP5排名旧房翻新评测专业价格 - 品牌推荐
  • AI新范式:Agent的核心逻辑与四大模块深度解析!
  • Multi-Agent 系统的监控埋点:关键节点与性能指标定义
  • 2025-2026年北京二手房装修公司推荐:五大评测价格特点防结构隐患案例 - 品牌推荐
  • 接入 Taotoken 后在不同时段测试 API 响应延迟的实际体感与观察
  • 逆变拓扑迭代复盘:低压MOS全桥改推挽(60V MOS+650V IGBT高低压混搭原理)
  • 别再乱删文件了!手把手教你用chattr给Linux文件上锁(附防误删实战)
  • 从 SEO 到 GEO:AI 搜索时代下,技术内容正在发生哪些变化?
  • Arduino状态机实战:从传感器到执行器的嵌入式系统集成教学项目
  • 2026年5月上海十大办公家具厂家排名推荐:评测专业选择指南价格 - 品牌推荐
  • 飞书机器人Webhook实战:除了文本告警,Java还能这样玩转富文本和卡片消息
  • Maixduino开发板Arduino实战:从NeoPixels到手机虚拟LED的三种闪烁方案
  • 2026年5月天津除甲醛公司推荐:十大榜专业评测母婴级防过敏价格 - 品牌推荐
  • 哪家上海办公家具厂家好?2026年5月推荐TOP5评测案例性价比高特点 - 品牌推荐
  • 2026年成都锦城学院权威深度解析:高教择校场景下民办院校质量辨识与就业保障痛点 - 品牌推荐
  • 2026广安全屋红木定制整装厂家评测:重庆红木家具厂电话/四川红木家具全屋定制靠谱厂家/四川红木家具厂价格/四川红木家具厂排名/选择指南 - 优质品牌商家
  • taotoken在构建多模型智能体应用时的路由与成本管理实践
  • 猫抓浏览器扩展:5分钟掌握视频资源嗅探下载技巧
  • 扎克伯格夫妇旗下Biohub发布蛋白质“世界模型“
  • 2026年锦城学院深度盘点:高教场景应用型人才培养与就业痛点破解 - 品牌推荐
  • 2026年5月比较好的安阳婚姻服务服务中心推荐榜厂家推荐榜,一对一婚恋匹配/高端猎婚定制/中老年婚恋关怀/婚恋心理辅导/企业联谊活动厂家选择指南 - 海棠依旧大
  • 流式输出(Streaming):为你的自研 AI 平台添加类似打字机的体验