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

云原生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 三种模式的编排部署就先到这里了,小伙伴有任何疑问,欢迎给我留言哦,后续会持续更新【大数据+云原生】相关的问题~

体验谷歌浏览器最新版本的新功能谷歌浏览器现在每个月都会发布一个新版本,自然也会带来一些全新的功能,比如全新的文件下载样式保存标签组到书签栏为密码添加备注信息等。下面笔者就带大家体验一下。一使用全新的下载样式谷歌疆山疆水丨博斯腾湖湿地好风光航拍新疆博湖县博斯腾湖芦苇湿地(央广网发年磊摄)央广网博湖11月17日消息(记者李昊轩通讯员年磊)近日,航拍镜头下的新疆博湖县博斯腾湖湿地,金色繁茂的芦苇长满水面,迎风摇曳,满目金天马望远镜为OrionKL体检报告发布中国科学院上海天文台研究团队利用65米口径的天马射电望远镜对猎户座OrionKL天体完成了迄今为止最大带宽(15GHz)最高灵敏度(mK量级)的Q波段谱线巡天工作,探测到约600条16年前,湖北小伙因一书封神,3年赚4100万,如今他怎样了?2006年3月,一篇名为明朝那些事历史应该可以写得好看的帖子火遍天涯论坛。5月,帖子的浏览点击量破百万,评论跟帖数也达到上万条。发帖的ID名叫当年明月,他开创了一种崭新的写史方法,双十一战绩折射电视市场TCL海信两强争霸,小米风光不再虽然国内小米在电视销量上已经领先了很长时间,但是我们之前一直在说,小米去前年高端之路失败,基本就注定了小米在国内未来电视市场上竞争会处于一个弱势地位。毕竟低价产品人人都可以做,在低姜子牙胜率暴涨,封神却引热议,他到底该给谁封神?新版姜子牙上线不到6天的时间,几乎能看到他非ban必选的情况,并且新版姜子牙的排位率高达51。68,出场更是能达到25。2,可以说T0的法师都不为过。数据虽好,却让一部分玩家心寒新如何打造一块绝世好屏?vivoX90给了一个更优解当我们谈论一部手机的时候,经常会聊它的处理器和相机如何,但在日常使用中,跟我们交互最多的手机部件其实是屏幕。每一次解锁手机,眼睛都要从这块方寸大小的屏幕中获取信息。而且对旗舰手机来更大的灾难还没来?警告气候增加蝙蝠病毒传播,人类毫无办法?很多人应该深有体会,在小小的新冠病毒之下,就已经让全球陷入恐慌之中,虽然人类在不断地进行防御,但是,病毒的不断变异也在发生之中,让人防不胜防。以至于过了这么多年了,人类想对新冠的彻双十一尘埃落定电视品牌谁执牛耳?一年一度的购物狂欢双十一落下了帷幕,尽管今年大家似乎都有意不让自己过多的冲动消费,但有时看到神价格还是忍不住剁手。特别是今年的电视,价格更是不可思议55英寸的电视一千出头就可以到手香港签证详细介绍留学干货1。港澳通行证(EEP)我国公安部出入境管理局签发给中国內地居民因私往来香港或澳门地区旅游探亲从事商务培训就业留学等非公务活动的旅行证件。如果已经有了港澳通行证那就忽略这一部分,但阴雨天的洛阳龙门石窟之旅,假期街拍真实体验,观景观人都不错秋日生活打卡季阴雨天的洛阳龙门石窟之旅,假期街拍真实体验,观景观人都不错!接着上一片的文章,继续体验拍摄洛阳龙门石窟景区。这是我第一次来这里,一切都充满了好奇。虽然天公不作美,景区
小学教材被批画风怪异,人教出版社重绘今天(5月26日),人教版数学教材插图引发争议并火上热搜,有网友表示插画人物眼神奇怪毫无美感。当天中午,人民教育出版社发布说明称,关注到网上有关小学数学教材封面和插图的意见,已着手1952年,毛主席与许世友等人游孔庙,问孔子姓什么?无人答得上来1952年,到山东视察的毛主席,在许世友将军罗瑞卿将军等人的陪伴下,游览了曲阜的孔庙。在游览期间,毛主席一时兴起,问许世友等人孔庙已经有两千多年的历史了,那我考考你们,你们知道孔子日议员叫嚣中俄在日本海耍流氓,自卫队到台海自由航行5月24日,中俄两国空军在日本海东海西太平洋海域上空组织实施了联合空中战略巡航。当天,中俄空军多架轰炸机进入日韩的防空识别区,并编队绕行日本岛西南方向上空。随后,俄罗斯国防部公布了空军英烈余旭中国首批歼2016年冬天,我国第一批歼10女飞行员余旭不幸牺牲。在这个寒冷的季节,余旭同志离世的消息牵动了很多人的心弦。她完成了自己翱翔于蓝天的诺言,成为了追逐梦想的金孔雀。余旭是一名非常优7条热搜刷屏!刚刚,人教社回应了今天人教版数学教材插图引发争议一连上了7个热搜有网友晒出人教版数学教材中的部分插图人教版教材部分插图,图源网络有网友表示插画人物眼神奇怪毫无美感是真的有点丑也有网友指出对比其他版本巴黎给自己挖大坑!内马尔表态愿意续约姆巴佩却希望内马尔离队巴黎之所以能够顺利续约姆巴佩,主要是巴黎为姆巴佩提供了一份天价续约合同,相信大家对此不会有太大的分歧。巴黎除了提供天价年薪之外,还为姆巴佩提供了更高的话语权。巴黎接下去的管理层决定罗体约200名费耶诺德球迷和警方冲突,欧会杯决赛安全形势堪忧直播吧5月25日讯本赛季的欧会杯决赛将在阿尔巴尼亚首都地拉那举行,而赛前费耶诺德球迷不断闹事并和当地警方发生冲突,这让人们担心决赛时的安全形势。据罗马体育报报道,地拉那警方已经证实湖北富豪兰世立靠亲哥资助狂赚21亿,哥哥想去公司上班扫厕所去湖北前首富兰世立,身价21亿,亲哥找他借10万买铲车休想1991年,兰世立毅然决然的辞掉公务员的工作回到老家,对着大哥说自己想要去创业,但是家里早已一贫如洗。为了满足弟弟的愿望,哥替中国出气?俄军摧毁马达西奇工厂,拒绝中企收购如今被炸成废墟随着俄乌战争日渐胶着,俄罗斯空天军的空袭目标也从单纯的乌克兰军队和现役武器装备,扩大到了乌克兰的国产军工体系和接收西方武器的关键枢纽。乌克兰的米格29战斗机大修厂等军工单位都遭到了桃园大溃败!未选先爆出候选人风波,朱立伦面临诚信崩盘危机文陈景圣工作室李不言今日头条原创首发国民党桃园市长候选人风波荡漾,党主席朱立伦突袭式征召张善政惹得蓝营基层炸锅。为平众怒,张善政与党秘书长黄健庭党主席朱立伦纷纷道歉,但似乎止不了血塔图姆22129布朗25分,天王山防守大战凯尔特人胜热火在今日的东部决赛中,凯尔特人客场9380轻取热火,大比分32领先。罗威开局连续吃饼,巴特勒突破为热火率先得分。双方开局防守大战得分超低,德里克怀特上场后成为奇兵,连续突破得分后绿军