• Redis 3 主 3 从(helm安装)


    资源清单

    本文安装 Redis 3主3从 依赖 K8S集群helm ,本文不提供 K8S集群helm 安装方式

    使用此文档部署,需要自行解决 storageClass 问题 ( NFS, ceph, openebs等 )

    软件 版本
    chart 7.5.0
    redis-cluster 6.2.6
    kubernetes v1.20.2
    helm v3.4.2

    helm 安装 Redis 3主3从

    1. 添加 bitnami 的仓库

    $ helm repo add bitnami https://charts.bitnami.com/bitnami
    

    2. 查询 Redis 资源

    $ helm repo update
    $ helm search repo redis
    NAME                           	CHART VERSION	APP VERSION  	DESCRIPTION                                       
    bitnami/redis                  	16.9.0       	6.2.7        	Redis(TM) is an open source, advanced key-value...
    bitnami/redis-cluster          	7.5.2        	6.2.7        	Redis(TM) is an open source, scalable, distribu...
    

    3. 拉取 chart 到本地

    $ mkdir /root/redis && cd /root/redis
    
    # 拉取 chart 到本地 /root/redis 目录
    $ helm pull bitnami/redis-cluster --version 7.5.0
    
    $ tar -xvf redis-cluster-7.5.0.tgz
    $ cp redis-cluster/values.yaml ./values-test.yaml
    
    # 查看当前目录层级
    $ tree -L 2
    .
    ├── redis-cluster
    │   ├── Chart.lock
    │   ├── charts
    │   ├── Chart.yaml
    │   ├── img
    │   ├── README.md
    │   ├── templates
    │   └── values.yaml
    ├── redis-cluster-7.5.0.tgz
    └── values-test.yaml
    

    4. 对本地 valuse-test.yaml 修改

    • 查看 集群 storageclasses
    $ kubectl get storageclasses
    NAME                          PROVISIONER          RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
    nfs-dynamic-class (default)   nfs-provisioner-01   Delete          Immediate           false                  14d
    
    • 修改配置
    $ cat values-test.yaml 
    
    ## 全局配置中未定义 storageClass: "",会使用集群默认的 storageClass,
    ## 此处 k8s 集群的默认 storageClass 为 nfs,底层为 华为云 SFS Turbo
    ## 使用此文档部署,需要自行解决 storageClass 问题 (ceph, nfs, 公有云提供的 nfs)
    global:
      storageClass: ""
      redis:
        password: "redis123"		# 定义 redis 密码
    
    
    service:
      ports:
        redis: 6379		# 定义 redis 服务端口
    
    
    redis:
      livenessProbe: 		# 修改了 livenessProbe 的探测时间
        enabled: true
        initialDelaySeconds: 60
        periodSeconds: 30
        timeoutSeconds: 10
        successThreshold: 1
        failureThreshold: 5
    
      readinessProbe:		# 修改了 readinessProbe 的探测时间
        enabled: true
        initialDelaySeconds: 60
        periodSeconds: 30
        timeoutSeconds: 10
        successThreshold: 1
        failureThreshold: 5
    
      startupProbe:		# 修改了 startupProbe 的探测时间
        enabled: false
        path: /
        initialDelaySeconds: 300
        periodSeconds: 30
        timeoutSeconds: 10
        failureThreshold: 6
        successThreshold: 1
    
      nodeSelector: {"node":"middleware"}		# 设置了服务的 node 亲和性,确保服务运行在指定的节点 (部分 k8s-node 节点运行中间件,部分 k8s-node 节点运行业务)
    
    
    updateJob:
      nodeSelector: {"node":"middleware"} 		# 设置了服务的 node 亲和性,确保服务运行在指定的节点 (部分 k8s-node 节点运行中间件,部分 k8s-node 节点运行业务)
    

    5. 安装 Redis 集群

    # 创建 test-middleware 名称空间
    $ kubectl create ns test-middleware
    
    # 安装 Redis 集群
    $ helm -n test-middleware install redis-cluster redis-cluster -f values-test.yaml
    
    ## helm -n NAMESAPCE install SERVER_NAME FILE_NAME -f CONFIG_FILE
    -n 指定 kubernetes 集群名称空间
    -f 指定使用的配置文件,文件中定义的配置可以覆盖 redis-cluster/values.yaml 文件中配置
    
    
    # 查看部署的 redis-cluster 集群
    $ helm -n test-middleware list
    NAME          	NAMESPACE     	REVISION	UPDATED                                	STATUS  	CHART               	APP VERSION
    redis-cluster 	test-middleware	1       	2022-05-06 20:46:11.085219867 +0800 CST	deployed	redis-cluster-7.5.0 	6.2.6 
    
    $ kubectl -n test-middleware get pods -l helm.sh/chart=redis-cluster-7.5.0
    NAME              READY   STATUS    RESTARTS   AGE
    redis-cluster-0   1/1     Running   0          17h
    redis-cluster-1   1/1     Running   1          17h
    redis-cluster-2   1/1     Running   0          17h
    redis-cluster-3   1/1     Running   0          17h
    redis-cluster-4   1/1     Running   0          17h
    redis-cluster-5   1/1     Running   0          17h
    
    > 默认 redis-cluster-0 和 redis-cluster-1 为主从,0主1从
    > 默认 redis-cluster-2 和 redis-cluster-3 为主从,0主1从
    > 默认 redis-cluster-4 和 redis-cluster-5 为主从,0主1从
    
    > 所以集群主节点为:redis-cluster-0 redis-cluster-2 redis-cluster-4
    > 所以集群从节点为:redis-cluster-1 redis-cluster-3 redis-cluster-5
    
    > default名称空间如何访问此 redis 集群,ping redis-cluster-[0-5].redis-cluster.test-middleware
    
    

    6. 连接 Redis 集群 验证服务

    # 获取 Redis 集群的密码
    $ kubectl get secret --namespace uat-middleware redis-cluster -o jsonpath="{.data.redis-password}" | base64 --decode
    redis123
    
    
    # 将 Redis 的密码存到 linux 的环境变量 REDIS_PASSWORD 中
    $ export REDIS_PASSWORD=$(kubectl get secret --namespace "demo" redis-service-redis-cluster -o jsonpath="{.data.redis-password}" | base64 --decode)
    
    
    # 启动一个临时容器
    $ kubectl run --namespace uat-middleware redis-cluster-client --rm --tty -i --restart='Never' \
    --env REDIS_PASSWORD=$REDIS_PASSWORD \
    --image docker.io/bitnami/redis-cluster:6.2.6-debian-10-r193 -- bash
    
    # 登陆 Redis 集群
    $ redis-cli -c -h redis-service-redis-cluster -a $REDIS_PASSWORD
    
    # 查看集群状态
    > cluster info
    > cluster nodes
    
    
    

    参考文档

    https://www.modb.pro/db/112292
    
    https://artifacthub.io/packages/helm/bitnami/redis-cluster/7.5.0
    
  • 相关阅读:
    3星|《腾讯产业森林:AI时代的创业密码》:后半部分是较详细的创业指南,前面泛泛介绍腾讯、AI
    3星|《三联生活周刊》2017年49期:小孩子一般在3岁时开始学会说“黑色”谎言,也就是专门利己毫不利人的谎言
    VS2010调试 --指南 Reference from : http://blog.csdn.net/kingzone_2008/article/details/8133048
    画图------Brush
    JavaScript Function.apply() 函数详解
    window.addEventListener来解决让一个js事件执行多个函数
    C# 框架是什么?MVC是什么 ?工厂模式是什么?设计模式是什么?三层架构是什
    C#反射机制介绍
    javascript 小日历
    javascript里的post和get有什么区别
  • 原文地址:https://www.cnblogs.com/evescn/p/16242491.html
Copyright © 2020-2023  润新知