#创建实例
以下 Redis 版本已完全支持:6.0、7.2、8.4;默认情况下不支持其他版本。
版本建议
在生产环境中使用时,建议优先选择 7.2 或 8.4 版本,其次是 6.0。
7.2和8.4仍由社区维护,并修复了6.0中已知的问题。6.0版本已不再由社区维护。7.2和8.4与6.0完全兼容。7.2和8.4进一步增强了 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 文档。
-
进入 Alauda Application Services 视图。
-
在 Alauda Application Services 视图左侧导航栏中,单击 Redis。
-
单击 命名空间名称。
-
单击 创建 Redis 实例。
-
选择一种架构类型。
-
参考下方说明完成相关配置。
配置 配置项 说明 参数配置 参数模板 您可以选择系统参数模板或自定义参数模板。对于自定义参数模板,请参见 参数模板管理。 连接配置 设置默认密码 建议在启动实例时为 redis default用户设置密码。如果未设置密码,请参见 用户管理 重置密码或创建额外账号。访问方式 如果应用和 Redis 实例分布在不同的业务集群中,请使用外部访问方式。外部访问方式支持 LoadBalancer和NodePort,其中生产环境推荐使用LoadBalancer。如果应用和 Redis 实例分布在同一个业务集群中,请使用集群内访问方式。指定主机端口 使用 NodePort 进行外部访问时,您可以指定 service 的 nodeport 端口号。
Sentinel 模式:更新实例时,端口不能互换;如果需要互换端口,请先更新为另一个未占用的端口,然后再重新指定。
Cluster 模式:更新实例时,如果只需要替换一个端口,可以在 YAML 中重新输入或修改对应的 node port。调度配置 反亲和策略 为满足不同业务场景下对高可靠性和高可用性的需求,平台为 Cluster 模式 提供了反亲和策略,其中默认应用的反亲和策略为 强制反亲和。
注意:实例创建后,此配置将无法再修改。节点标签 通过标签筛选当前集群中的可用节点。Pods 将被调度到可用节点上。
注意:实例创建后,此配置将无法再修改。Pod 容忍 如果可用节点存在 taint,则仅设置了 toleration 的 Pods 才能容忍这些 taint,并可能被调度到与 Pod toleration 和 node taint 匹配的节点上。匹配规则如下。 - Equal:当 Pod 所容忍的 key、value 和 effect 与节点 taint 设置完全匹配时,Pod 将容忍该节点 taint。
- Exists:当 Pod 所容忍的 key 和 effect 与节点 taint 设置保持一致时,Pod 将容忍该节点 taint。
注意:effect 决定了不容忍该节点 taint 的 Pods 是否会被分配到带有 taint 的节点上。例如,如果 effect 为 NoExecute,则只有容忍该 taint 的 Pods(包括此 Redis 实例中的 Pods)会被调度到该节点上,而节点上已运行但不容忍该 taint 的 Pods(来自其他实例的 Pods)将被驱逐。有关匹配规则的更多信息,请参见 Kubernetes 社区文档。当前 Web Console 不支持创建
standalone(Redis 单节点架构)。 -
单击 创建。
当实例状态变为 Running 时,表示实例已成功创建。
创建实例后,您可以使用以下命令检查实例状态:
$ kubectl -n default get redis
NAME ARCH VERSION ACCESS STATUS MESSAGE BUNDLE VERSION AUTOUPGRADE AGE
c6 cluster 6.0 Initializing 4.0.1 3m26s
c7 cluster 7.2 NodePort Initializing 4.0.1 98s
c8 cluster 8.4 NodePort Ready 4.0.1 2m46s
s6 sentinel 6.0 Ready 4.0.1 25m
s7 sentinel 7.2 NodePort Ready 4.0.1 2m15s
s8 sentinel 8.4 Ready 4.0.1 3m10s
standalone standalone 6.0 Initializing 4.0.1 6s输出表字段含义如下:
| 字段 | 说明 |
|---|---|
| NAME | 实例名称 |
| ARCH | 该值对应 Redis 的架构。
|
| VERSION | 当前仅支持以下 3 个版本:6.0、7.2、8.4 |
| ACCESS | 实例支持的访问方式。
|
| STATUS | 实例的当前状态,可能包括以下状态:
|
| MESSAGE | 实例处于当前状态的原因 |
| BUNDLE VERSION | 管理该实例的 operator 的版本号 |
| AUTOUPGRADE | 该实例是否启用了自动升级 |
| AGE | 实例创建于多久之前 |