范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

云原生Redisonk8s编排部署讲解与实战操作

  一、概述
  REmote DIctionary Server( Redis  ) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。
  Redis有三种集群模式:主从模式,Sentinel(哨兵)模式,Cluster模式,这三种模式环境编排部署都会在本文章介绍与实战操作。
  想了解更多关于redis概念与原理介绍,可参考我这篇文章:Redis原理介绍与环境部署(主从模式、哨兵模式、集群模式)
  二、redis 主从模式编排部署实战操作
  地址:https://artifacthub.io/packages/helm/bitnami/redis 1)下载chart 包helm repo add bitnami https://charts.bitnami.com/bitnami  helm pull bitnami/redis --version 17.3.7  tar -xf redis-17.3.7.tgz2)构建镜像
  这里就不重新构建镜像了,只是把远程镜像tag一下,推到本地harbor仓库加速下载镜像。有不清楚怎么构建镜像的小伙伴,可以私信或者留言。 docker pull docker.io/bitnami/redis:7.0.5-debian-11-r7  # tag docker tag docker.io/bitnami/redis:7.0.5-debian-11-r7 myharbor.com/bigdata/redis:7.0.5-debian-11-r7  # 推送镜像到本地harbor仓库 docker push myharbor.com/bigdata/redis:7.0.5-debian-11-r73)修改yaml编排redis/templates/master/pv.yaml
  新增 pv.yaml  文件,内容如下:{{- range .Values.master.persistence.local }} --- apiVersion: v1 kind: PersistentVolume metadata:   name: {{ .name }}   labels:     name: {{ .name }} spec:   storageClassName: {{ $.Values.master.persistence.storageClass }}   capacity:     storage: {{ $.Values.master.persistence.size }}   accessModes:     - ReadWriteOnce   local:     path: {{ .path }}   nodeAffinity:     required:       nodeSelectorTerms:         - matchExpressions:             - key: kubernetes.io/hostname               operator: In               values:                 - {{ .host }} --- {{- end }}redis/templates/replicas/pv.yaml
  新增 pv.yaml  文件,内容如下:{{- range .Values.replica.persistence.local }} --- apiVersion: v1 kind: PersistentVolume metadata:   name: {{ .name }}   labels:     name: {{ .name }} spec:   storageClassName: {{ $.Values.replica.persistence.storageClass }}   capacity:     storage: {{ $.Values.replica.persistence.size }}   accessModes:     - ReadWriteOnce   local:     path: {{ .path }}   nodeAffinity:     required:       nodeSelectorTerms:         - matchExpressions:             - key: kubernetes.io/hostname               operator: In               values:                 - {{ .host }} --- {{- end }}redis/values.yaml  global:   redis:     password: "123456"  ...  image:   registry: myharbor.com   repository: bigdata/redis   tag: 7.0.5-debian-11-r7  master:   count: 1   persistence:     enabled: true     size: 8Gi     storageClass: "local-redis-storage"     local:     - name: redis-0       host: "local-168-182-110"       path: "/opt/bigdata/servers/redis/data/data1"  replica:   replicaCount: 2   persistence:     enabled: true     size: 8Gi     storageClass: "local-redis-storage"     local:     - name: redis-1       host: "local-168-182-111"       path: "/opt/bigdata/servers/redis/data/data1"     - name: redis-2       host: "local-168-182-112"       path: "/opt/bigdata/servers/redis/data/data1"4)开始部署# 创建存储目录 mkdir /opt/bigdata/servers/redis/data/data1  # 先检查语法 helm lint ./redis  # 开始安装 helm install redis ./redis -n redis --create-namespace
  NOTES REVISION: 1 TEST SUITE: None NOTES: CHART NAME: redis CHART VERSION: 17.3.7 APP VERSION: 7.0.5  ** Please be patient while the chart is being deployed **  Redis® can be accessed on the following DNS names from within your cluster:      redis-master.redis.svc.cluster.local for read/write operations (port 6379)     redis-replicas.redis.svc.cluster.local for read-only operations (port 6379)    To get your password run:      export REDIS_PASSWORD=$(kubectl get secret --namespace redis redis -o jsonpath="{.data.redis-password}" | base64 -d)  To connect to your Redis® server:  1. Run a Redis® pod that you can use as a client:     kubectl run --namespace redis redis-client --restart="Never"  --env REDIS_PASSWORD=$REDIS_PASSWORD  --image myharbor.com/bigdata/redis:7.0.5-debian-11-r7 --command -- sleep infinity     Use the following command to attach to the pod:     kubectl exec --tty -i redis-client     --namespace redis -- bash  2. Connect using the Redis® CLI:    REDISCLI_AUTH="$REDIS_PASSWORD" redis-cli -h redis-master    REDISCLI_AUTH="$REDIS_PASSWORD" redis-cli -h redis-replicas  To connect to your database from outside the cluster execute the following commands:      kubectl port-forward --namespace redis svc/redis-master 6379:6379 &     REDISCLI_AUTH="$REDIS_PASSWORD" redis-cli -h 127.0.0.1 -p 6379
  5)测试验证kubectl get pods,svc -n redis -owide
  # 登录master,可读可写 kubectl exec -it redis-master-0 -n redis -- redis-cli -h redis-master -a $(kubectl get secret --namespace redis redis -o jsonpath="{.data.redis-password}" | base64 -d)  # 登录slave,只读 kubectl exec -it redis-master-0 -n redis -- redis-cli -h redis-replicas -a $(kubectl get secret --namespace redis redis -o jsonpath="{.data.redis-password}" | base64 -d)
  6)卸载helm uninstall redis-sentinel -n redis-sentinel # delete ns  kubectl delete ns redis-sentinel --force # delete pv kubectl delete pv `kubectl get pv|grep ^redis-|awk "{print $1}"` --force  rm -fr /opt/bigdata/servers/redis/data/data1/*三、redis 哨兵模式编排部署实战操作
  主从模式的弊端就是不具备高可用性,当master挂掉以后,Redis将不能再对外提供写入操作,因此sentinel应运而生。
  1)构建镜像
  这里也重新构建镜像了,有不懂构建镜像的小伙伴可以在评论下方留言。这里也只是把远程的镜像推送到本地harbor。 docker pull docker.io/bitnami/redis-sentinel:7.0.5-debian-11-r6 # tag docker tag docker.io/bitnami/redis-sentinel:7.0.5-debian-11-r6 myharbor.com/bigdata/redis-sentinel:7.0.5-debian-11-r6 # push docker push  myharbor.com/bigdata/redis-sentinel:7.0.5-debian-11-r62)修改yaml编排redis-sentinel/values.yaml  replica:   # replica.replicaCount与sentinel.quorum值一样   replicaCount: 3   storageClass: "local-redis-storage"     local:     - name: redis-0       host: "local-168-182-110"       path: "/opt/bigdata/servers/redis/data/data1"     - name: redis-1       host: "local-168-182-111"       path: "/opt/bigdata/servers/redis/data/data1"     - name: redis-2       host: "local-168-182-112"       path: "/opt/bigdata/servers/redis/data/data1"  sentinel:   enabled: true   image:     registry: myharbor.com     repository: bigdata/redis-sentinel     tag: 7.0.5-debian-11-r6   quorum: 3redis-sentinel/templates/replicas/pv.yaml
  新增 pv.yaml  文件,内容如下:{{- range .Values.sentinel.persistence.local }} --- apiVersion: v1 kind: PersistentVolume metadata:   name: {{ .name }}   labels:     name: {{ .name }} spec:   storageClassName: {{ $.Values.sentinel.persistence.storageClass }}   capacity:     storage: {{ $.Values.sentinel.persistence.size }}   accessModes:     - ReadWriteOnce   local:     path: {{ .path }}   nodeAffinity:     required:       nodeSelectorTerms:         - matchExpressions:             - key: kubernetes.io/hostname               operator: In               values:                 - {{ .host }} --- {{- end }}3)开始部署# 创建存储目录 mkdir -p /opt/bigdata/servers/redis/data/data1  helm install redis-sentinel ./redis-sentinel -n redis-sentinel --create-namespace
  NOTES NAME: redis-sentinel LAST DEPLOYED: Fri Nov  4 22:42:52 2022 NAMESPACE: redis-sentinel STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: CHART NAME: redis CHART VERSION: 17.3.7 APP VERSION: 7.0.5  ** Please be patient while the chart is being deployed **  Redis® can be accessed via port 6379 on the following DNS name from within your cluster:      redis-sentinel.redis-sentinel.svc.cluster.local for read only operations  For read/write operations, first access the Redis® Sentinel cluster, which is available in port 26379 using the same domain name above.    To get your password run:      export REDIS_PASSWORD=$(kubectl get secret --namespace redis-sentinel redis-sentinel -o jsonpath="{.data.redis-password}" | base64 -d)  To connect to your Redis® server:  1. Run a Redis® pod that you can use as a client:     kubectl run --namespace redis-sentinel redis-client --restart="Never"  --env REDIS_PASSWORD=$REDIS_PASSWORD  --image myharbor.com/bigdata/redis:7.0.5-debian-11-r7 --command -- sleep infinity     Use the following command to attach to the pod:     kubectl exec --tty -i redis-client     --namespace redis-sentinel -- bash  2. Connect using the Redis® CLI:    REDISCLI_AUTH="$REDIS_PASSWORD" redis-cli -h redis-sentinel -p 6379 # Read only operations    REDISCLI_AUTH="$REDIS_PASSWORD" redis-cli -h redis-sentinel -p 26379 # Sentinel access  To connect to your database from outside the cluster execute the following commands:      kubectl port-forward --namespace redis-sentinel svc/redis-sentinel 6379:6379 &     REDISCLI_AUTH="$REDIS_PASSWORD" redis-cli -h 127.0.0.1 -p 6379
  查看 kubectl get pods,svc -n redis-sentinel -owide
  4)模拟故障测试# 查看 kubectl exec -it redis-sentinel-node-0 -n redis-sentinel -- redis-cli -h redis-sentinel -a $(kubectl get secret --namespace redis-sentinel redis-sentinel -o jsonpath="{.data.redis-password}" | base64 -d) info replication
  模拟故障,kill master pod kubectl delete pod redis-sentinel-node-0 -n redis-sentinel
  再次查看master所在节点,master节点已经切换到其它节点了。
  再测试读写 # 登录master节点 kubectl exec -it redis-sentinel-node-0 -n redis-sentinel -- redis-cli -h redis-sentinel-node-2.redis-sentinel-headless -a $(kubectl get secret --namespace redis-sentinel redis-sentinel -o jsonpath="{.data.redis-password}" | base64 -d)  # 登录slave节点 kubectl exec -it redis-sentinel-node-0 -n redis-sentinel -- redis-cli -h redis-sentinel-node-0.redis-sentinel-headless -a $(kubectl get secret --namespace redis-sentinel redis-sentinel -o jsonpath="{.data.redis-password}" | base64 -d)
  5)卸载helm uninstall redis-sentinel -n redis # delete ns  kubectl delete ns redis --force # delete pv kubectl delete pv `kubectl get pv|grep ^redis-|awk "{print $1}"` --force  rm -fr /opt/bigdata/servers/redis/data/data1/*四、redis 集群模式编排部署实战操作
  集群模式 可以说是sentinel+主从模式的结合体,通过cluster可以实现主从和master重选功能,所以如果配置两个副本三个分片的话,就需要六个Redis实例。因为Redis的数据是根据一定规则分配到cluster的不同机器的,当数据量过大时,可以新增机器进行扩容。
  1)下载chart 包helm repo add bitnami https://charts.bitnami.com/bitnami  helm pull bitnami/redis-cluster --version 8.2.7  tar -xf redis-cluster-8.2.7.tgz2)构建镜像
  这里就不重新构建镜像了,只是把远程镜像tag一下,推到本地harbor仓库加速下载镜像。有不清楚怎么构建镜像的小伙伴,可以私信或者留言。 docker pull docker.io/bitnami/redis-cluster:7.0.5-debian-11-r9  # tag docker tag docker.io/bitnami/redis-cluster:7.0.5-debian-11-r9 myharbor.com/bigdata/redis-cluster:7.0.5-debian-11-r9  # 推送镜像到本地harbor仓库 docker push myharbor.com/bigdata/redis-cluster:7.0.5-debian-11-r93)修改yaml编排redis-cluster/templates/pv.yaml
  新增 pv.yaml  文件,内容如下:{{- range .Values.persistence.local }} --- apiVersion: v1 kind: PersistentVolume metadata:   name: {{ .name }}   labels:     name: {{ .name }} spec:   storageClassName: {{ $.Values.persistence.storageClass }}   capacity:     storage: {{ $.Values.persistence.size }}   accessModes:     - ReadWriteOnce   local:     path: {{ .path }}   nodeAffinity:     required:       nodeSelectorTerms:         - matchExpressions:             - key: kubernetes.io/hostname               operator: In               values:                 - {{ .host }} --- {{- end }}password: "123456"  ...  image:   registry: myharbor.com   repository: bigdata/redis-cluster   tag: 7.0.5-debian-11-r9  ...  persistence:   storageClass: "local-redis-cluster-storage"   local:     - name: redis-cluster-0       host: "local-168-182-110"       path: "/opt/bigdata/servers/redis-cluster/data/data1"     - name: redis-cluster-1       host: "local-168-182-110"       path: "/opt/bigdata/servers/redis-cluster/data/data2"     - name: redis-cluster-2       host: "local-168-182-110"       path: "/opt/bigdata/servers/redis-cluster/data/data3"     - name: redis-cluster-3       host: "local-168-182-111"       path: "/opt/bigdata/servers/redis-cluster/data/data1"     - name: redis-cluster-4       host: "local-168-182-111"       path: "/opt/bigdata/servers/redis-cluster/data/data2"     - name: redis-cluster-5       host: "local-168-182-111"       path: "/opt/bigdata/servers/redis-cluster/data/data3"     - name: redis-cluster-6       host: "local-168-182-112"       path: "/opt/bigdata/servers/redis-cluster/data/data1"     - name: redis-cluster-7       host: "local-168-182-112"       path: "/opt/bigdata/servers/redis-cluster/data/data2"     - name: redis-cluster-8       host: "local-168-182-112"       path: "/opt/bigdata/servers/redis-cluster/data/data3"    cluster:   init: true   # 一主两从(三组)   nodes: 9   replicas: 24)开始部署# 创建存储目录 mkdir -p /opt/bigdata/servers/redis-cluster/data/data{1..3}  helm install redis-cluster ./redis-cluster -n redis-cluster --create-namespace
  NOTES NOTES: CHART NAME: redis-cluster CHART VERSION: 8.2.7 APP VERSION: 7.0.5** Please be patient while the chart is being deployed **   To get your password run:     export REDIS_PASSWORD=$(kubectl get secret --namespace "redis-cluster" redis-cluster -o jsonpath="{.data.redis-password}" | base64 -d)  You have deployed a Redis® Cluster accessible only from within you Kubernetes Cluster.INFO: The Job to create the cluster will be created.To connect to your Redis® cluster:  1. Run a Redis® pod that you can use as a client: kubectl run --namespace redis-cluster redis-cluster-client --rm --tty -i --restart="Never"   --env REDIS_PASSWORD=$REDIS_PASSWORD  --image myharbor.com/bigdata/redis-cluster:7.0.5-debian-11-r9 -- bash  2. Connect using the Redis® CLI:  redis-cli -c -h redis-cluster -a $REDIS_PASSWORD
  查看 kubectl get pods,svc -n redis-cluster -owide
  5)故障模拟测试kubectl exec -it redis-cluster-0 -n redis-cluster -- redis-cli -c -h redis-cluster -a $(kubectl get secret --namespace "redis-cluster" redis-cluster -o jsonpath="{.data.redis-password}" | base64 -d) CLUSTER INFO  kubectl exec -it redis-cluster-0 -n redis-cluster -- redis-cli -c -h redis-cluster -a $(kubectl get secret --namespace "redis-cluster" redis-cluster -o jsonpath="{.data.redis-password}" | base64 -d) CLUSTER NODES
  删除其中一个master节点 kubectl delete pod redis-cluster-1 -n redis-cluster  # 再查看节点情况 kubectl exec -it redis-cluster-0 -n redis-cluster -- redis-cli -c -h redis-cluster -a $(kubectl get secret --namespace "redis-cluster" redis-cluster -o jsonpath="{.data.redis-password}" | base64 -d) CLUSTER NODES
  6)卸载helm uninstall redis-cluster -n redis-cluster # delete ns  kubectl delete ns redis-cluster --force # delete pv kubectl delete pv `kubectl get pv|grep ^redis-cluster-|awk "{print $1}"` --force  rm -fr /opt/bigdata/servers/redis-cluster/data/data{1..3}/*
  git地址:https://gitee.com/hadoop-bigdata/redis-on-k8s
  Redis on k8s 三种模式的编排部署就先到这里了,小伙伴有任何疑问,欢迎给我留言哦,后续会持续更新【大数据+云原生】相关的问题~

超能使者PK法证先锋5预测前者大结局将回到原点,后者揭秘小丑超能使者以黑马之势勇超法证先锋5,后者骂者不断,前者好评如潮,多年来,我们一直在纠结着小丑的问题不放,小丑到底是谁?每个正派反派主角配角都猜了个遍,然而,到现在,魔姐才发现,小丑不工业手持平板电脑定制客供模块windows10平板手持平板接口改制工业手持平板电脑定制客供模块windows10平板手持平板接口改制视频加载中10寸windows系统三防平板电脑接口改制工业平板电脑定制客供模块。日常生活中虽然我们并不经常使用工业江西抚州寻梦汤翁故里情醉文昌戏里一日抚州城,千年临川郡江西人读书好,是古时代的一种共识,地处赣东的抚州尤甚。汤显祖纪念馆汤显祖是被称为东方莎士比亚的重要人物。汤显祖纪念馆是为了纪念我国明代伟大的戏剧家汤显祖而建立钱氏家族兴旺发达之我见千年钱氏家族为何兴旺发达钱氏家族兴旺发达之我见钱氏家族兴旺发达原因很多,不会是偶然的,是有必然的因果所致。现在我主要从钱氏家族建立吴越国的政治文化婚姻三个方面着手分析如下一如果没有从昌盛到衰落赵家老庄百年史话赵凌云,现年91岁,回忆并撰文这是丹江源头一块古老而贫穷的土地,又是林茂水美的秦岭支脉大杷山。这就是商洛市商州区三岔河乡引尤寺村上头的赵家老庄。据说我们赵家老祖先是朱安晚年欠债4000元,因常吃稀饭咸菜瘦弱不堪,为生计求助日本人1944年,鲁迅去世的第八年,10月15日的傍晚,三位不速之客突然造访了鲁迅北平的故居北平西三条胡同21号。当他们踏进院门的时候,鲁迅的原配夫人朱安和佣人王妈正在吃饭。看见有人走了量产自动驾驶年度格局三大梯队,特斯拉领衔,毫末速度最快曹原允中发自凹非寺量子位公众号QbitAI自动驾驶的两条路线之争,在2022年似乎完全分出了结果。一方面,完全无人驾驶路线,以Robotaxi为代表的纯L4路线,进展遇冷,发展遇阻续航625km,对标蔚来ET7,售价40。68万起,捷尼赛思EG80上市11月29日,韩国现代高端品牌捷尼赛思旗下首款中大型纯电轿车EG80正式上市,售价40。68万47。58,新车基于燃油版G80打造,最高续航里为625km。外观方面,捷尼赛思EG8放弃华为mate50Pro购买了vivoX90Pro使用3天后,比华为香多了想支持国产,观望了很久,在华为Mate50系列和vivoX90系列里纠结了很久,最终选择了vivoX90Pro,使用3天后,比华为香多了关于屏幕vivox90Pro首发2KE6屏幕今天全世界都在看的新闻2022。11。28王毅会见俄罗斯新任驻华大使莫尔古洛夫中共中央政治局委员国务委员兼外长王毅27日会见俄罗斯新任驻华大使莫尔古洛夫。王毅欢迎莫尔古洛夫来华履新,表示中俄都坚持推进多极世界,不认同单极霸印度降雨导致北部新棉质量下降中国棉花网专讯据外电报道,今年的非季节性降雨破坏了印度北部增产的前景,特别是在旁遮普邦和哈里亚纳邦。市场报告显示,由于季风时间的延长,北印度棉花的质量也有所下降。由于该地区纤维长度
手握7万元想买5门4座纯电动微型车?浅析顶配版小麒麟用车成本买车要考虑自己的经济条件,根据自己的收入水平选择适合自己的车型。对于很多工薪阶层来说,月收入五六千元,在生活成本的支出上就已经捉襟见肘了。所以在考虑买车时,除了新车的售价之外,用车国家开发银行2022年发放科技创新贷款2619亿元记者从国家开发银行获悉,2022年,该行发放科技创新贷款2619亿元,其中中长期贷款占比超过90,重点支持了集成电路生物育种空天科技智能机器人等领域发展。一名工作人员在进行实验。新迎财神新春音乐会汉服游园深圳这个宝藏公园超多精彩活动等你来!寅虎踏香去,卯兔寻蜜来。正值2023兔年新春佳节之际,位于深圳市福田区中心地带的香蜜公园准备了超多精彩活动,还有超多惊喜福利为市民朋友们送上新春祝福。一起来看看吧!香蜜邀你迎财神快中国女排名将姚迪朱婷最新消息游戏新春创作纪意甲比赛如火如荼斯坎迪奇迎战苦主朱婷场上承担重负主接一传主要防守还要承担球队主攻做出了极大的付出最后导致体能不足姚迪今天担任替补表现还算比较突出但她由于刚到队伍与队友新民艺评丨上海出品电视剧三体热播,让观众对中国科幻的未来充满期待历时四年打磨的电视剧版三体日前开播,观众对其赞扬远胜于动画版三体,其播放的视频网站上该剧甚至打破了剧集首日热度值纪录。原著粉丝大赞,因其忠于原著也有人挠头表示门槛太高,看不懂!影视餐饮业启动数字化快车来源消费日报外卖配送美食直播菜品分析不少餐饮企业借助互联网技术转型升级,实现线上与线下相互引流,不断拓宽多样化的数字化消费场景。足不出户享受美食下班路上点个外卖,设置好配送时间,到中央批复!福建省两个城市被委以重任,要大力搞经济了!历史的车轮滚滚向前,福建省终于迎来了重磅政策,这也预示着大力搞经济的帷幕已经全面拉开了!近日,国家批复同意在福建省福州市设立中国印度尼西亚经贸创新发展示范园区,在福建省漳州市设立中田亮除夕晒全家福,为增高脚踩木头,14岁森碟1米7和妈妈一样高1月21日除夕,田亮分享全家福,和往年一样,全家都会穿白黑西装和红色礼裙,以白色背景拍全家福,记录一家四口这一年的变化。田亮为大家送上祝福,叶一茜转发称复制粘贴组合给大家拜年,同样景区载人热气球从空中坠落,当地政府人员已前往处理1月22日下午,四川乐山沙湾区太平镇醉花谷景区内有一个载人热气球从高空坠落,现场目击者称曾听到爆炸声。极目新闻记者从当地相关部门了解到,目前太平镇政府相关负责人已赶往现场。景区内热兔年,ToYou兔年农历新年已经到来过去的一年每一位水利人都积极投身工作,不辞辛苦领导同事并肩作战家人朋友理解支持水利事业蓬勃发展都让大家觉得有力量继续前行新的一年我们的心中有哪些期许?让我们一起初一凌晨医生驱车200公里紧急救命网友向生命的守护神致敬!除夕夜,在万家团圆的时刻,为了病人,他却离开了家人,驱车200公里去救患者的性命,在大年除夕夜,他用行动将什么是医者仁心诠释的淋漓致尽。究竟怎么回事?点个关注不迷路。小编就和大家一