美文网首页operator中台建设
Kubernetes Redis 高可用方案

Kubernetes Redis 高可用方案

作者: 香菜香菜我是折耳根 | 来源:发表于2020-09-03 20:59 被阅读0次

    Redis 高可用方案常用的有两种:Redis Sentinel 和 Redis Cluster ,本篇笔记介绍这两种方案如何在 Kubernetes 中部署。在 Kubernetes 里部署服务通常有三种方式:自己手写 Kubernetes 资源描述文件(Manifests YAML)、Helm Chart 和 Operator 。手写资源描述文件需要对配置非常熟悉才能写的好,对于初学者一般采用 Helm 或者 Operator 方式安装,这里采用 Operator ,之所以选择 Operator ,是因为本着最简安装的原则,使用 Operator 方式安装可以少安装一个组件 Helm 。

    Redis Sentinel

    https://github.com/spotahome/redis-operator

    安装 Operator 以及相关权限:

    kubectl create -f https://raw.githubusercontent.com/spotahome/redis-operator/master/example/operator/all-redis-operator-resources.yaml
    
    kubectl create -f https://raw.githubusercontent.com/spotahome/redis-operator/master/example/redisfailover/basic.yaml
    
    apiVersion: databases.spotahome.com/v1
    kind: RedisFailover
    metadata:
      name: redisfailover
    spec:
      sentinel:
        replicas: 3
        resources:
          requests:
            cpu: 100m
          limits:
            memory: 100Mi
      redis:
        replicas: 3
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
          limits:
            cpu: 400m
            memory: 500Mi
    

    Redis Cluster

    https://github.com/ucloud/redis-cluster-operator

    测试

    apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
    kind: Deployment
    metadata:
      name: redis-master
      labels:
        app: redis
    spec:
      selector:
        matchLabels:
          app: redis
          role: master
          tier: backend
      replicas: 1
      template:
        metadata:
          labels:
            app: redis
            role: master
            tier: backend
        spec:
          containers:
          - name: master
            image: redis:5.0-alpine  # or just image: redis
            resources:
              requests:
                cpu: 100m
                memory: 100Mi
            ports:
            - containerPort: 6379
    
    NAME                                      READY   STATUS    RESTARTS   AGE
    drc-example-distributedrediscluster-0-0   1/1     Running   0          40m
    drc-example-distributedrediscluster-0-1   1/1     Running   0          39m
    drc-example-distributedrediscluster-1-0   1/1     Running   0          40m
    drc-example-distributedrediscluster-1-1   1/1     Running   0          39m
    drc-example-distributedrediscluster-2-0   1/1     Running   0          40m
    drc-example-distributedrediscluster-2-1   1/1     Running   0          39m
    redis-cluster-operator-fd6fb58c4-m977x    1/1     Running   0          75m
    redis-master-5d7f574d67-qjpxr             1/1     Running   0          27m
    
    kubectl exec -it redis-master-5d7f574d67-qjpxr sh
    
    redis-cli -h example-distributedrediscluster
    

    注意:-c 这个参数是需要加上的,否则会报错,因为按照分配算法需要 redis-cli 能够对 Cluster 自动寻址。

    相关文章

      网友评论

        本文标题:Kubernetes Redis 高可用方案

        本文链接:https://www.haomeiwen.com/subject/uenosktx.html