在 K8S 中快速部署 Redis Cluster & Redisinsight

简介: 在 K8S 中快速部署 Redis Cluster & Redisinsight

Redis Cluster



部署


使用 Bitnami helm chart 在 K8S redis 命名空间中一键部署 Redis cluster 。


helm repo add bitnami https://charts.bitnami.com/bitnami
helm install -n redis staging bitnami/redis-cluster


查看随机生成的 Redis 密码


记住 helm chart deployment 将为 Redis cluster 生成一个随机密码。您可以通过以下命令行查看密码:


export REDIS_PASSWORD=$(kubectl get secret --namespace redis staging-redis-cluster -o jsonpath="{.data.redis-password}" | base64 --decode)


自定义 values.yaml


为什么要自定义?因为默认的 Redis cluster helm chart 配置可能不是您用例的最佳配置。


官方默认配置:

制作 values.yaml 的本地副本。您可以修改 values.yaml 中的内容,并通过运行以下命令将配置更改应用到 Redis cluster:


helm upgrade -n redis -f values.yaml staging


values.yaml 中有很多配置可以自定义。下面是一个简单示例:


cluster:
  init: true
  ## nodes:是包括副本在内的节点总数。
  ## 这意味着将有 3 个主节点和 3 个副本节点
  ##(由于 replicas 默认设置为 1,每个主节点将有 1 个副本)。
  ## 因此,nodes = numberOfMasterNodes + numberOfMasterNodes * replicas
  nodes: 6
  replicas: 1


Redisinsight



通过 Redisinsight 访问管理 Redis 集群


尽管我们非常乐意使用 redis-cli 命令行工具与 Redis 集群进行交互,而且效率很高。但使用 Web UI 来实现同样的效果更加直观和高效。我们选择使用由 RedisLab 开发的 redisinsight。 Web UI 可以作为 Deployment 部署到 K8S 中。以下是 RedisLab 官方文档提供的稍微修改过的版本。主要区别在于增加了 PVC(持久卷声明),这样配置就不会因为重启而丢失:


---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: redisinsight-pv-claim
  labels:
    app: redisinsight
    namespace: redis
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
    storage: 1Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redisinsight
  namespace: redis
  labels:
    app: redisinsight
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: redisinsight
    template:
      metadata:
        labels:
          app: redisinsight
      spec:
        containers:
        - name:  redisinsight
          image: redislabs/redisinsight:1.9.0
          imagePullPolicy: IfNotPresent
          securityContext:
            runAsUser: 0
          volumeMounts:
          - name: db
            mountPath: /db
          ports:
          - containerPort: 8001
            protocol: TCP
        volumes:
        - name: db
          persistentVolumeClaim:
            claimName: redisinsight-pv-claim


将上述 YAML 保存到 redisinsight.yaml 中,通过运行以下命令将其部署到 K8S 中:


kubectl apply -f redisinsight.yaml


部署完成后,运行端口转发:


kubectl port-forward deployment/redisinsight -n redis 8001


然后,您可以通过在 Web 浏览器中打开 http://localhost:8001 来访问 redisinsight Web UI。您可以在 UI 中单击 Connect to a Redis Database 按钮,将显示以下弹出窗口:


image.png


Host将是 K8S 控制台中可用的 redis cluster service 的 IP值。Port 为默认的 redis 端口 6379。Username 默认值为 default。Name 可以是你选择的任何名字。如前一节所述,需要通过kubectl 命令行从 config map 中检索密码。点击 ADD REDIS DATABASE 按钮后,它会提示你选择所有或任何一个 Redis cluster 成员作为种子节点连接到集群。你可以选择全部或其中任何一个。一旦连接配置完成,你应该能够访问一个功能齐全的 web UI 来查看和管理你刚刚安装的Redis cluster。


image.pngimage.png


正如您在上面的屏幕截图中看到的那样,我们刚刚配置的 Redis 集群中有 3 个主节点和 3 个从节点。它还显示每个分区中有多少 key 以及正在使用多少 memory。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
存储 负载均衡 NoSQL
【赵渝强老师】Redis Cluster分布式集群
Redis Cluster是Redis的分布式存储解决方案,通过哈希槽(slot)实现数据分片,支持水平扩展,具备高可用性和负载均衡能力,适用于大规模数据场景。
914 2
|
NoSQL Java 网络安全
SpringBoot启动时连接Redis报错:ERR This instance has cluster support disabled - 如何解决?
通过以上步骤一般可以解决由于配置不匹配造成的连接错误。在调试问题时,一定要确保服务端和客户端的Redis配置保持同步一致。这能够确保SpringBoot应用顺利连接到正确配置的Redis服务,无论是单机模式还是集群模式。
868 5
|
存储 NoSQL Redis
手把手教你用 Docker 部署 Redis
Redis是高性能内存数据库,支持多种数据结构,适用于缓存、消息队列等场景。本文介绍如何通过Docker快速拉取轩辕镜像并部署Redis,涵盖快速启动、持久化存储及docker-compose配置,助力开发者高效搭建稳定服务。
3162 8
|
Kubernetes NoSQL Redis
k8s快速部署Redis单机
k8s快速部署Redis单机
1094 1
|
存储 NoSQL Redis
Docker 部署 Redis
在使用 Docker 部署 Redis 时,为实现数据持久化,需正确挂载容器内的数据目录到宿主机。推荐命令如下: ``` docker run -d --name redis -v /mnt/data/redis:/data -p 6379:6379 redis ``` 该命令将宿主机的 `/mnt/data/redis` 目录挂载到容器的 `/data` 目录,确保 Redis 数据持久化。此路径更通用,适合大多数场景。避免使用不匹配的挂载路径,如 `/var/lib/redis` 或 `/mnt/data/redis` 到非默认目录,以防止数据无法正确持久化。
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
1123 26
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
监控 NoSQL 网络协议
【Azure Redis】部署在AKS中的应用,连接Redis高频率出现timeout问题
查看Redis状态,没有任何异常,服务没有更新,Service Load, CPU, Memory, Connect等指标均正常。在排除Redis端问题后,转向了AKS中。 开始调查AKS的网络状态。最终发现每次Redis客户端出现超时问题时,几乎都对应了AKS NAT Gateway的更新事件,而Redis服务端没有任何异常。因此,超时问题很可能是由于NAT Gateway更新事件导致TCP连接被重置。
514 7
|
消息中间件 NoSQL Kafka
Flink-10 Flink Java 3分钟上手 Docker容器化部署 JobManager TaskManager Kafka Redis Dockerfile docker-compose
Flink-10 Flink Java 3分钟上手 Docker容器化部署 JobManager TaskManager Kafka Redis Dockerfile docker-compose
723 4
|
NoSQL Linux Shell
Redis 的安装与部署(图文)
Redis 的安装与部署(图文)