#创建实例
以下 Redis 版本被完全支持:5.0、6.0、7.2;其他版本默认不支持。
版本建议
在生产环境中使用时,建议优先选择 7.2 版本,其次是 6.0。
7.2是社区仍在维护的版本,修复了6.0和5.0中已知的问题。6.0和5.0版本已不再由社区维护。7.2与6.0和5.0完全兼容。7.2对 ACL 功能进行了进一步增强。- 不建议使用
5.0,因为它不支持 ACL 等高级功能,缺乏用户管理能力;所有业务流程将共用一个密码,存在潜在安全风险;且修改密码需要重启所有节点。
架构建议
单节点架构 无从节点且不具备故障转移能力,仅适用于开发和测试环境。您可以根据业务的数据和并发需求选择 Sentinel 架构 或 Cluster 架构。
#目录
#创建 Redis 实例
#操作步骤
Sentinel CLI
Cluster CLI
Standalone CLI
Web Console
使用 CLI 创建 Redis 6.0 Sentinel 模式实例:
$ cat << EOF | kubectl -n default create -f -
apiVersion: middleware.alauda.io/v1
kind: Redis
metadata:
name: s6
spec:
arch: sentinel
customConfig:
databases: "16"
hz: "10"
save: 60 10000 300 100 600 1
timeout: "0"
exporter:
enabled: true
resources:
limits:
cpu: 100m
memory: 384Mi
requests:
cpu: 50m
memory: 128Mi
replicas:
sentinel:
master: 1
slave: 1
resources:
limits:
cpu: "1"
memory: 2Gi
requests:
cpu: "1"
memory: 2Gi
sentinel:
monitorConfig:
down-after-milliseconds: "30000"
failover-timeout: "180000"
parallel-syncs: "1"
replicas: 3
resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 100m
memory: 128Mi
version: "6.0"
EOF具体字段说明请参考 Redis API 文档。
使用 CLI 创建 Redis 6.0 Cluster 模式实例:
$ cat << EOF | kubectl -n default create -f -
apiVersion: middleware.alauda.io/v1
kind: Redis
metadata:
name: c6
spec:
affinityPolicy: AntiAffinityInSharding
arch: cluster
customConfig:
hz: "10"
save: 60 10000 300 100 600 1
timeout: "0"
exporter:
enabled: true
resources:
limits:
cpu: 100m
memory: 384Mi
requests:
cpu: 50m
memory: 128Mi
expose:
type: NodePort
replicas:
cluster:
shard: 3
slave: 1
resources:
limits:
cpu: 200m
memory: 200Mi
requests:
cpu: 200m
memory: 200Mi
version: "6.0"
EOF具体字段说明请参考 Redis API 文档。
使用 CLI 创建 Redis 6.0 Standalone 模式实例:
$ cat << EOF | kubectl -n default create -f -
apiVersion: middleware.alauda.io/v1
kind: Redis
metadata:
name: standalone
spec:
arch: standalone
customConfig:
databases: "16"
hz: "10"
save: 60 10000 300 100 600 1
timeout: "0"
exporter:
enabled: true
resources:
limits:
cpu: 100m
memory: 384Mi
requests:
cpu: 50m
memory: 128Mi
replicas:
sentinel:
master: 1
resources:
limits:
cpu: "1"
memory: 1Gi
requests:
cpu: "1"
memory: 1Gi
version: "6.0"
EOF具体字段说明请参考 Redis API 文档。
-
进入数据服务视图。
-
在数据服务视图左侧导航栏点击 Redis。
-
点击 命名空间名称。
-
点击 创建 Redis 实例。
-
选择架构类型。
-
参考以下说明完成相关配置。
配置项 配置内容 说明 参数配置 参数模板 可选择系统参数模板或自定义参数模板。自定义参数模板请参考 。 连接配置 设置默认密码 建议启动实例时为 redis default用户设置密码。若未设置密码,请参考 用户管理 重置密码或创建额外账户。访问方式 当应用与 Redis 实例位于不同业务集群时,使用 外部访问 方式。外部访问 支持 LoadBalancer和NodePort,生产环境推荐使用LoadBalancer。当应用与 Redis 实例位于同一业务集群时,使用 集群内访问 方式。指定主机端口 使用 NodePort 进行外部访问时,可指定服务的 nodeport 端口号。
Sentinel 模式:更新实例时端口不可互换;若需互换端口,需先更新为其他未占用端口,再重新指定。
Cluster 模式:更新实例时若只需替换某一端口,可在 YAML 中重新输入或修改对应的 node port。调度配置 反亲和策略 为满足不同业务场景下的高可靠性和高可用性需求,平台为 Cluster 模式 提供反亲和策略,默认应用为 强制反亲和。
注意:实例创建后,该配置不可修改。节点标签 通过标签筛选当前集群中可用节点,Pod 将调度到这些可用节点。
注意:实例创建后,该配置不可修改。Pod 容忍度 若可用节点存在污点,只有设置了容忍度的 Pod 才能容忍这些污点,可能被调度到匹配 Pod 容忍度和节点污点的节点。匹配规则如下: - Equal:Pod 容忍的 key、value 和 effect 与节点污点设置完全匹配时,Pod 才能容忍该污点。
- Exists:Pod 容忍的 key 和 effect 与节点污点设置一致时,Pod 才能容忍该污点。
注意:effect 决定了不容忍该污点的 Pod 是否会被调度到带有该污点的节点。例如,若 effect 为 NoExecute,则只有容忍该污点的 Pod(包括本 Redis 实例中的 Pod)会被调度,且已运行在该节点但不容忍该污点的 Pod(其他实例的 Pod)会被驱逐。更多匹配规则请参考 Kubernetes 社区文档。当前 Web Console 不支持创建
standalone(Redis 单节点架构)。 -
点击 创建。
实例状态变为 Running 后,表示实例创建成功。
实例创建完成后,可使用以下命令查看实例状态:
$ kubectl -n default get redis
NAME ARCH VERSION ACCESS STATUS MESSAGE BUNDLE VERSION AUTOUPGRADE AGE
c5 cluster 5.0 NodePort Ready 4.0.1 2m46s
c6 cluster 6.0 Initializing 4.0.1 3m26s
c7 cluster 7.2 NodePort Initializing 4.0.1 98s
s5 sentinel 5.0 Ready 4.0.1 3m10s
s6 sentinel 6.0 Ready 4.0.1 25m
s7 sentinel 7.2 NodePort Ready 4.0.1 2m15s
standalone standalone 6.0 Initializing 4.0.1 6s输出表格字段含义如下:
| 字段 | 说明 |
|---|---|
| NAME | 实例名称 |
| ARCH | 该值对应 Redis 的架构类型。
|
| VERSION | 当前支持的三个版本:5.0、6.0、7.2 |
| ACCESS | 实例支持的访问方式。
|
| STATUS | 实例当前状态,可能包括以下状态:
|
| MESSAGE | 实例处于当前状态的原因 |
| BUNDLE VERSION | 管理该实例的 operator 版本号 |
| AUTOUPGRADE | 实例是否开启自动升级 |
| AGE | 实例创建时间 |