在 Redis Enterprise 集群中使用持久卷
本节详细介绍如何为 Redis Enterprise 集群部署确定持久卷的大小并进行指定。
存储类型
Redis Enterprise for Kubernetes 只能使用块存储支持的存储类。块存储安装在 Kubernetes 节点级别,并使用 EXT4 或 XFS 文件系统。它可以来自企业级 SAN 或云环境,例如 EBS、Azure 托管磁盘或 GCP 持久磁盘。
警告:
不支持 NFS、类似 NFS 和多读写/共享存储选项。这些类型的存储通常很慢,并且可能导致与数据库存储要求不兼容的锁定行为。RECpersistentSpec字段
要使用 Redis Enterprise 操作员部署 Redis Enterprise 集群,规范应在redis-enterprise-cluster.yaml文件中包含一个persistentSpec部分 :
spec:
nodes: 3
persistentSpec:
enabled: true
storageClassName: "standard"
volumeSize: "23Gi” #optional
持久性存储是生产部署的必要条件。
笔记:
对于Kubenetes 上的 Redis Enterprise Cluster 的生产部署,必须在启用持久性的情况下部署 Redis Enterprise Cluster (REC)。Kubernetes文档中的 REC 部署文件默认包含此声明。卷大小
volumeSize是可选定义。默认情况下,如果省略定义,操作员会分配为节点定义的内存 (RAM) 量的五倍 (5x)(见下面的示例),这是硬件要求文章中所述的建议持久存储大小。
要明确指定持久存储大小,请使用 上例中所述的volumeSize属性。
持久卷声明在创建后可以扩展,但不能缩小。有关详细信息,请参阅扩展持久卷声明 (PVC)。
笔记:
我们建议您从 REC 声明中省略 volumeSize 定义,以便 Kubenetes 上的 Redis Enterprise Cluster 部署使用默认卷大小。存储类别名称
storageClassName确定由 Kubernetes 集群管理员定义的用于持久存储的存储类资源。
不同的Kubernetes发行版、不同的部署使用不同的Storage Class资源。
为了确定您的 K8s 部署可用的存储类资源,请使用以下命令:
kubectl get StorageClass
通常,AWS 提供“gp2”作为存储类名称,而 GKE 使用“标准”。Azure 提供两种存储类:“默认”使用 HDD,而“托管高级”使用 SSD。
下面是对该命令的响应的示例。
| 姓名: | GP2型 |
| 是否为默认类: | 是的 |
| 注释: | storageclass.beta.kubernetes.io/is-default-class=true |
| 供應者: | kubernetes.io/aws-ebs |
| 参数: | 加密=false,kmsKeyId=,类型=gp2 |
| 允许音量扩展: | <取消设置> |
| 安装选项: | <无> |
| 回收政策: | 删除 |
| 卷绑定模式: | 即时 |
| 事件: | <无> |
笔记:
必须为此部署类型指定 storageClassName。警告:
部署后无法更改存储类别。部署后尝试更改此值可能会导致意外且可能造成损害的行为。redisEnterpriseNodeResources 定义示例:
redisEnterpriseNodeResources:
limits:
cpu: “4000m”
memory: 4Gi
requests:
cpu: “4000m”
memory: 4Gi