在 K8S 中快速部署 Redis Cluster & Redisinsight

开发 项目管理
使用 Bitnami helm chart 在 K8S redis 命名空间中一键部署 Redis cluster 。

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
  • 1.
  • 2.

查看随机生成的 Redis 密码

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

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

自定义 values.yaml

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

官方默认配置:

​https://github.com/bitnami/charts/blob/master/bitnami/redis-cluster/values.yaml​

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

helm upgrade -n redis -f values.yaml staging
  • 1.

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

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

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
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.

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

kubectl apply -f redisinsight.yaml
  • 1.

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

kubectl port-forward deployment/redisinsight -n redis 8001
  • 1.

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

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

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

责任编辑:姜华 来源: 黑客下午茶
相关推荐

2023-07-11 07:12:21

Hadoop部署mysql

2021-04-22 09:46:35

K8SCluster Aut集群

2023-09-06 08:12:04

k8s云原生

2022-11-06 21:31:11

云原生Sentinel集群模式

2022-04-22 13:32:01

K8s容器引擎架构

2021-08-13 07:00:41

云原生k8sspringboot

2021-08-26 07:20:05

云原生K8sSpringboot

2022-09-27 12:00:58

HadoopK8S开源

2021-09-26 07:43:08

KongKongaK8s

2023-11-03 08:43:00

云原生TLS 证书

2023-01-12 11:31:00

K8sToken

2024-08-30 09:21:28

2023-07-10 07:22:16

2021-11-04 07:49:58

K8SStatefulSetMySQL

2022-01-02 08:42:50

架构部署容器

2023-02-27 07:40:00

2023-11-06 07:16:22

WasmK8s模块

2021-05-07 09:31:33

KindK8s Operator

2021-10-27 08:25:10

K8SRedis数据持久化

2021-11-29 08:48:00

K8S KubernetesAirflow
点赞
收藏

51CTO技术栈公众号