如何在Kubernetes上部署Redis集群?详细分布指南

2021年11月19日22:36:34 发表评论 1,232 次浏览

Kubernetes部署Redis集群教程介绍

Kubernetes如何部署Redis集群?Redis 是一种流行的NoSQL 数据库和支持多种抽象数据结构的内存数据存储。这些包括字符串、列表、散列、集合、流等。Redis 提供了访问可变数据结构的语法,允许多个进程以共享方式读取和写入它们。

Redis 集群是一组 Redis 实例,可自动跨节点对数据进行分片。使用集群使用户能够在节点之间拆分他们的数据集,并在某些节点出现故障时继续运行数据库。

如何在Kubernetes上部署Redis集群本教程将向你展示如何使用 ConfigMap 和 Helm 在 Kubernetes 上部署 Redis 集群。

先决条件

  • 由两个或多个节点组成的Kubernetes 集群
  • 安装了 Helm 3
  • 已安装 kubectl 1.14 或更高版本

注意:如果你使用的是 Minikube,你可以通过--nodesstart命令中添加选项来模拟双节点集群:

minikube start --nodes 2

使用 ConfigMap 在 Kubernetes 上部署 Redis

Kubernetes如何部署Redis集群?以下步骤说明了如何配置 Redis 缓存和包含 Redis 实例的 Pod。

  1. 使用文本编辑器,创建将存储 Redis 配置的 ConfigMap YAML。
nano redis-conf.yaml

2. 在该data.redis-config部分中指定你的 Redis 配置。

apiVersion: v1
kind: ConfigMap
metadata:
  name: test-redis-config
data:
  redis-config: |
    maxmemory 2mb
    maxmemory-policy allkeys-lru 

上面的示例配置设置了maxmemory指令并告诉 Redis 为数据集使用最大 2 MB 的存储空间。该maxmemory-policy指令定义了达到内存限制时要应用的过程。allkeys-lru首先删除最近较少使用的 (LRU) 键。

3. 保存文件并退出。

4. 通过应用 YAML 文件创建 ConfigMap。

kubectl apply -f redis-conf.yaml

系统确认操作成功。

如何在Kubernetes上部署Redis集群?详细分布指南

5. 创建 Redis pod 清单。

nano redis-pod.yaml

6. Kubernetes部署Redis集群教程:指定你的 pod 配置。

apiVersion: v1
kind: Pod
metadata:
  name: redis
spec:
  containers:
  - name: redis
    image: redis:5.0.4
    command:
      - redis-server
      - "/redis-master/redis.conf"
    env:
    - name: MASTER
      value: "true"
    ports:
    - containerPort: 6379
    resources:
      limits:
        cpu: "0.1"
    volumeMounts:
    - mountPath: /redis-master-data
      name: data
    - mountPath: /redis-master
      name: config
  volumes:
    - name: data
      emptyDir: {}
    - name: config
      configMap:
        name: test-redis-config
        items:
        - key: redis-config
          path: redis.conf

在上面的示例中,清单定义了config卷并将其安装在/redis-masterpod 上的目录中。spec.volumes.items然后,该部分redis-config将先前创建的 ConfigMap 中的密钥公开为redis.conf文件。

7. 保存文件并退出。

8. 使用kubectl应用 pod 清单。

kubectl apply -f redis-pod.yaml

系统确认pod创建成功。

如何在Kubernetes上部署Redis集群?详细分布指南

9. 如何在Kubernetes上部署Redis集群?检查pod状态。

kubectl get pod
如何在Kubernetes上部署Redis集群?详细分布指南

10. 输入创建的 pod kubectl exec

kubectl exec -it redis -- redis-cli

Redis 服务器控制台出现:

如何在Kubernetes上部署Redis集群?详细分布指南

11.使用PING命令检查服务器是否在线。

PING
如何在Kubernetes上部署Redis集群?详细分布指南

如果服务器与控制台通信,它将PONG作为答案返回。

注意:部署Bare Metal Cloud 服务器以确保 Redis 集群的高可用性和最高性能。使用起价仅为 0.10 美元/小时的服务器实现可靠的基础架构

使用 Helm Chart 在 Kubernetes 上部署 Redis

Kubernetes如何部署Redis集群?Helm 提供了一种使用预制Helm chart设置 Redis 集群的快速方法。

1.添加包含要安装的 Redis 图表的 Helm 存储库。

helm repo add [repo-name] [repo-address]

Kubernetes部署Redis集群教程:本文使用 Bitnami 存储库中提供的 Redis 图表。

如何在Kubernetes上部署Redis集群?详细分布指南

2. 更新本地 Helm 存储库。

helm repo update
如何在Kubernetes上部署Redis集群?详细分布指南

3.helm install用于安装图表。基本命令如下:

helm install redis-test bitnami/redis

重要提示:如果你在 Minikube 上安装图表,CrashLoopBackOff由于未绑定的数量声明,pod 卡在事件中的情况并不少见。为了防止这种情况,使用--set选项,并设置persistence.storageClassnfs-client两个吊舱。

如何在Kubernetes上部署Redis集群?由于Redis默认部署了非管理卷权限,Redis pod可能无法与服务器通信。通过设置volumePermissions为 来解决此问题true

最终helm install命令应如下所示:

helm install redis-test --set persistence.storageClass=nfs-client,redis.replicas.persistence.storageClass=nfs-client bitnami/redis --set volumePermissions.enabled=true
如何在Kubernetes上部署Redis集群?详细分布指南

4. 将Redis密码导出为环境变量。

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

5. 创建一个用于访问数据库的 Redis 客户端 pod。

kubectl run --namespace default redis-client --restart='Never'  --env REDIS_PASSWORD=$REDIS_PASSWORD  --image docker.io/bitnami/redis:6.2.5-debian-10-r63 --command -- sleep infinity

系统确认redis-clientpod的创建。

如何在Kubernetes上部署Redis集群?详细分布指南

6. 输入客户端 pod kubectl exec

kubectl exec --tty -i redis-client --namespace default -- bash

出现客户端控制台。

如何在Kubernetes上部署Redis集群?详细分布指南

7. 如何在Kubernetes上部署Redis集群?使用以下redis-cli命令访问Redis主实例:

redis-cli -h redis-test-master -a $REDIS_PASSWORD

显示主实例的控制台。

如何在Kubernetes上部署Redis集群?详细分布指南

8. 要访问副本,请使用相同的命令,但更改目标。

redis-cli -h redis-test-replicas -a $REDIS_PASSWORD

9. 使用PING命令测试与服务器的连接。

PING
如何在Kubernetes上部署Redis集群?详细分布指南

PONG响应确认服务器监听。

Kubernetes部署Redis集群教程结论

Kubernetes如何部署Redis集群?完成本教程后,你应该知道如何手动配置 Redis 缓存和 Pod,以及如何使用 Helm 部署 Redis。

有关类似于 Redis 的更流行工具,请阅读我们关于最佳数据管理软件的文章。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: