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

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

从一箭双星透视我国卫星快递的商业图谱一箭双星再次成功发射,背后也浮现出一张我国卫星快递的商业图谱。9月25日,我国在太原卫星发射中心使用快舟一号甲运载火箭,以一箭双星方式,成功将试验十四号和试验十五号卫星发射升空。有中国登月火箭将展出,美国不希望看到的事情可能要发生?虽然美国的阿尔忒弥斯载人重返月球计划已经提出了很多年,为此也专门研制了新一代运载火箭新一代载人登月飞船,但是现在美国重返月球计划并不顺利,我们中国的探月工程却稳步推进,我们的载人登成吉思汗在屠城时,有3种人他不杀,这才是让敌人最害怕的都知道,中国在元朝时期疆域最为广阔,是因为中国历史上出了一个特别好战的人物成吉思汗。他似乎就是为了征战而生,一生都在沙场驰骋。铁木真1162年出生,1204年统一蒙古各部,1206由4万人骨搭建的教堂,你害怕吗?说起欧洲建筑,很多给人留下深刻印象,很多经典的宏伟建筑保存至今,各个建筑流派也是彰显特点,别具一格。例如古希腊建筑,古罗马建筑,拜占庭式建筑,哥特式建筑,巴洛克式建筑等,代表作有帕人民币连破五大关,美国美元强是好事情,不会有新的广场协议今日早盘,离岸人民币汇率大幅下跌,接连跌破7。19,7。20,7。21,7。22和7。23,暴跌600多点,并且打破2015年汇改纪录,创下08年以来最低。没过多久,在岸人民币汇率新消息!龚翔宇伤病疑点重重,中国女排新核心无意间说出事情真相中国女排世锦赛首场比赛,主力接应龚翔宇意外缺席,杀了众多女排球迷一个措手不及。比赛结束后,电视转播镜头给到了在看台上观看比赛的龚翔宇。龚翔宇细心的低头看着脚下的台阶,然后一瘸一拐缓国庆佳节即将到来,3件关于社保的事情,你都掌握了吗?时间真如白驹过隙,好像就在不久之前,新年的钟声才刚刚敲响,回首我们已经来到了秋高气爽的九月。再过一周不到的时间,举国同庆的国庆佳节就又到来了,就目前的情况来看,很多房地产项目都在此小兵献给刘邦4条妙策,带给汉朝400年江山,其中两条被沿用2000年打江山容易,守江山难,这句话放在刘邦身上格外合适。他在与项羽的逐鹿天下之中取得了胜利,建立了大汉王朝。可就在他以为自己从此可以安安心心地过上万人之上的皇帝生活时,却发现,汉朝建立之盛世莲花画意黄马2022南昌县(小蓝经开区)第二届大地艺术系列活动展开幕盛世莲花,画意黄马,9月26日,南昌县2022第二届大地艺术活动展在南昌市南昌县黄马乡开幕。南昌县委常委宣传部长胡朝辉县人大常委会党组副书记副主任刘玉等相关部门负责人出席了本次活动华夏文明的祖脉秦岭风光秦岭,素有国家中央公园之称,是重要的生态屏障。大秦岭是中国地理版图的一部分,然而,这并不是普通的一部分,而是极不寻常的一部分。大秦岭处在中国腹心地带,是与昆仑山一脉相承的中诵千年经典传华夏文明书香润万家奋进新时代经典诵读晚会在郑举行河南日报记者胡春娜赵大明9月22日晚,由省委宣传部主办,省教育厅承办,河南广播电视台郑州师范学院河南省文艺评论家协会共同协办的书香润万家奋进新时代经典诵读晚会在郑州举行。为进一步坚
云南有哪些网红打卡拍照圣地?谢邀!吴叔常年写云南旅游相关的文章,很高兴回答这个关于云南旅游的问题。云南的网红打卡拍照圣地,与云南独特的气候地理历史密切相关。总结一下,主要有这些与海同框云南远离大海,但云南首推青春期孩子很自卑,作为家长应该如何正确引导?青春期的孩子,如果性格外向,开朗,大咧咧,不拘小节,耐挫力强,这样的孩子一定是青春期叛逆也问题不大。怕就怕那种性格内向,不太合群,喜欢独处,不爱说话,不太爱笑,自卑感强的孩子,这样猪肉和什么菜炒最好吃?猪肉和什么菜炒着最好吃,看地区,看口味。因为猪肉百搭,和任何配菜都好吃,不同地方的人,习惯不同配菜。单论炒菜,列举三道菜,猪肉炒菜前三名第一道,青椒炒肉。这道菜应该是第一名,起码吃患抑郁症,每天晚上失眠,内心焦虑不安该怎么办?这是抑郁症患者的一种表现,根据个人经验可以分享一点对策给你。可是尝试一下看看是否适合你。让自己疲惫起来。睡觉之前不要喝咖啡,喝茶。这两种饮料容易导致失眠。白天不要让自己睡着,这样晚吃鸡游戏为什么登机前要等一分钟?哦,一个好新颖的问题,曾经我也想过,拿绝地求生来讲吧。登机前一分钟我认为(1)原因一就是热身,熟悉枪械开上两梭子,跑跑跳跳热热手,熟悉熟悉建筑天气等信息。(2)给玩家载入提供一些时有什么让自己狠下心减肥的方法?为了一口气,跟同事打赌两个月,还写了协议书,从58。9KG减到50KG。时间是3月1日至4月30日。最后我赢了,在最后一天体重刚刚到50KG。身高164。骨架大,梨形身材。说说我这012个月的婴儿在每个阶段最值得买的玩具有哪几款?新生儿通过什么来认识和探索世界?最好的工具莫过于玩具!根据新生儿每月龄发育特点不同,准备的玩具也应有所区别,下面听希妈一一道来。02月龄声音玩具和视觉训练玩具这个时间段,主要培养宝西游记拍摄的时候,为什么孙悟空只咬一口蟠桃?别看这只是一个小细节,想当初这也是西游记剧组仔细衡量下的结果,原因其实也很简单第一为了拍摄效果,看剧照你就明白了,哪来那么大的真桃子那时候剧组能买到的桃子很小,拍摄效果不好,为了拍有什么可以称之为逆天的平价运动款主动降噪耳机呢?适合运动的降噪耳机,应该需要佩戴舒适的主动降噪耳机,推荐几款降噪效果不错,音质好的蓝牙耳机,可以参考参考!繁华的都市日渐喧嚣,许多人在通勤或者旅行时都习惯带上耳机,给自己一个宁静的凯特米德尔顿的珠宝盒中有哪些标志性的首饰?你好,我是西班牙小姐姐,很高兴能够回答这个问题。凯特米德尔顿,是剑桥公爵威廉王子的妻子,比起剑桥公爵夫人凯瑟琳这个称号,大家更熟悉更喜欢称呼她为凯特王妃。从2011年进入王室以来,有哪些男生自以为帅气其实很土的穿搭?俗话说的好长相不够,衣品来凑。如果你没有一张帅气的脸庞,那么穿衣打扮将会变得非常重要。可是每个人审美都有不同标准,对时尚都有不一样的态度,所以就会存在一部分男生自以为帅气其实很土的