Kubernetes部署Redis集群教程介绍
Kubernetes如何部署Redis集群?Redis 是一种流行的NoSQL 数据库和支持多种抽象数据结构的内存数据存储。这些包括字符串、列表、散列、集合、流等。Redis 提供了访问可变数据结构的语法,允许多个进程以共享方式读取和写入它们。
Redis 集群是一组 Redis 实例,可自动跨节点对数据进行分片。使用集群使用户能够在节点之间拆分他们的数据集,并在某些节点出现故障时继续运行数据库。
如何在Kubernetes上部署Redis集群?本教程将向你展示如何使用 ConfigMap 和 Helm 在 Kubernetes 上部署 Redis 集群。
先决条件
- 由两个或多个节点组成的Kubernetes 集群
- 安装了 Helm 3
- 已安装 kubectl 1.14 或更高版本
注意:如果你使用的是 Minikube,你可以通过--nodes
在start
命令中添加选项来模拟双节点集群:
minikube start --nodes 2
使用 ConfigMap 在 Kubernetes 上部署 Redis
Kubernetes如何部署Redis集群?以下步骤说明了如何配置 Redis 缓存和包含 Redis 实例的 Pod。
- 使用文本编辑器,创建将存储 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
系统确认操作成功。
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-master
pod 上的目录中。spec.volumes.items
然后,该部分redis-config
将先前创建的 ConfigMap 中的密钥公开为redis.conf
文件。
7. 保存文件并退出。
8. 使用kubectl应用 pod 清单。
kubectl apply -f redis-pod.yaml
系统确认pod创建成功。
9. 如何在Kubernetes上部署Redis集群?检查pod状态。
kubectl get pod
10. 输入创建的 pod kubectl exec
。
kubectl exec -it redis -- redis-cli
Redis 服务器控制台出现:
11.使用PING命令检查服务器是否在线。
PING
如果服务器与控制台通信,它将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 图表。
2. 更新本地 Helm 存储库。
helm repo update
3.helm install
用于安装图表。基本命令如下:
helm install redis-test bitnami/redis
重要提示:如果你在 Minikube 上安装图表,CrashLoopBackOff
由于未绑定的数量声明,pod 卡在事件中的情况并不少见。为了防止这种情况,使用--set
选项,并设置persistence.storageClass
到nfs-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
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-client
pod的创建。
6. 输入客户端 pod kubectl exec
。
kubectl exec --tty -i redis-client --namespace default -- bash
出现客户端控制台。
7. 如何在Kubernetes上部署Redis集群?使用以下redis-cli
命令访问Redis主实例:
redis-cli -h redis-test-master -a $REDIS_PASSWORD
显示主实例的控制台。
8. 要访问副本,请使用相同的命令,但更改目标。
redis-cli -h redis-test-replicas -a $REDIS_PASSWORD
9. 使用PING
命令测试与服务器的连接。
PING
该PONG
响应确认服务器监听。
Kubernetes部署Redis集群教程结论
Kubernetes如何部署Redis集群?完成本教程后,你应该知道如何手动配置 Redis 缓存和 Pod,以及如何使用 Helm 部署 Redis。
有关类似于 Redis 的更流行工具,请阅读我们关于最佳数据管理软件的文章。