#创建实例
以下 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 等高级功能,缺乏用户管理能力;所有业务流程共享一个密码,存在潜在的安全风险;而且,修改密码需要重启所有节点。
架构选择建议
单节点架构没有副本节点,缺乏故障转移能力,因此只应在开发和测试环境中使用。您可以根据业务的数据和并发需求选择 哨兵架构 或 集群架构。
#创建 Redis 实例
#操作步骤
哨兵 CLI
集群 CLI
单节点 CLI
Web 控制台
通过 CLI 创建 Redis 6.0 哨兵模式实例:
$ 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 集群模式实例:
$ 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 单节点模式实例:
$ 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 文档。
-
进入 Alauda 应用服务视图。
-
在 Alauda 应用服务视图的左侧导航栏中,单击 Redis。
-
单击 命名空间名称。
-
单击 创建 Redis 实例。
-
选择架构类型。
-
请参考以下说明完成相关配置。
配置 配置项 说明 参数配置 参数模板 可选择系统或自定义参数模板,关于自定义参数模板,请参考 参数模板管理。 连接配置 设置默认密码 为了保证环境的安全,建议在启动实例时设置 default用户的密码。如果未设置密码,请参见 用户管理 重置密码或创建额外账户。访问方式 如果应用程序与 Redis 实例位于不同的业务集群中,请使用 外部访问 方法。外部访问 方法支持 LoadBalancer和NodePort,推荐在生产环境中使用LoadBalancer。如果应用程序与 Redis 实例位于同一业务集群中,请使用 集群内访问 方法。指定主机端口 使用 NodePort 进行外部访问时,可以指定服务的 NodePort 端口号。
哨兵模式:更新实例时,端口不能互换;如果需要交换端口,必须先更新为另一个未占用的端口,然后重新指定。
集群模式:更新实例时,如果只需替换一个端口,可以重新输入或修改 YAML 中相应的节点端口。调度配置 反亲和策略 为满足不同业务场景下的高可靠性和高可用性需求,平台为 集群模式 提供反亲和策略,其中 强制反亲和 是默认的反亲和策略。
注意:实例创建后,该配置无法修改。节点标签 通过标签筛选出当前集群内可用的节点。Pods 将被调度到可用节点。
注意:实例创建后,该配置都无法修改。Pod 容忍 如果可用节点设置了污点,只有设置了容忍的 Pods 才能容忍这些污点,并有可能被调度到与 Pod 容忍和节点污点匹配的节点。匹配规则如下: - Equal:当 Pod 容忍的 key、value 和 effect 与节点污点设置完全一致时,Pod 会容忍节点污点。
- Exists:当 Pod 容忍的 key 和 effect 与节点污点设置保持一致时,Pod 会容忍节点污点。
注意:effect 决定了未容忍节点污点的 Pods 是否会被分配到有污点的节点上。例如,如果 effect 为 NoExecute,则只有容忍污点的 Pods(包括本 Redis 实例中的 Pods)才会被调度,而在该节点上未容忍污点的 Pods 会被驱逐(来自其他实例的 Pods)。有关匹配规则的更多信息,请参见 Kubernetes 社区文档。当前 Web 控制台不支持创建
standalone(Redis 单节点架构)。 -
单击 创建。
一旦实例状态变为 运行中,实例即已成功创建。
在实例创建后,您可以使用以下命令检查实例的状态:
$ 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 | 当前仅支持以下 3 个版本:5.0,6.0,7.2 |
| ACCESS | 实例支持的访问方式。
|
| STATUS | 实例当前状态,可能包括以下状态:
|
| MESSAGE | 实例处于当前状态的原因 |
| BUNDLE VERSION | 管理此实例的操作器版本号 |
| AUTOUPGRADE | 实例是否启用自动升级 |
| AGE | 实例创建时间 |