创建实例

完全支持以下 Redis 版本:6.0 和 7.2;默认不支持其他版本。

版本建议

在生产环境中使用时,建议优先选择 7.2 版本,而不是 6.0。7.2 是默认版本。

  1. 7.2 仍由 Community 维护,并修复了 6.0 中的已知问题。6.0 版本已不再由 Community 维护。
  2. 7.2 与 6.0 完全兼容。
  3. 7.2 进一步改进了 ACL 功能。
  4. v5.1.0 引入的跨数据中心复制功能(包括 Active-Active 模式)仅在 7.2 上可用。
架构建议

Single-node architecture 没有从节点,也不具备故障转移能力,因此只能用于开发和测试环境。您可以根据业务的数据量和并发需求,在 Sentinel architecture 和 Cluster architecture 之间进行选择。

创建 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 文档。

Sentinel 密码

Sentinel 实例有两个相互独立的 default 用户密码:spec.passwordSecret 用于对 Redis 数据节点进行身份验证,spec.sentinel.passwordSecret 用于对 Sentinel 节点进行身份验证。上面的示例未设置任何密码,因此两者均处于开放状态。Web Console 默认启用 Sentinel 密码;从 CLI 创建实例时,请显式设置该密码。

每个字段都引用同一命名空间中的一个 Secret,该对象在 password 键下保存密码,且密码长度必须为 8 到 32 个字符。

$ kubectl -n default create secret generic s6-sentinel-password --from-literal=password='<sentinel-password>'

然后在实例中引用它:

spec:
  sentinel:
    passwordSecret: s6-sentinel-password

通过 Sentinel 连接的客户端必须单独提供此密码和 Redis 密码 — 请参阅 访问实例(Sentinel 模式)。

实例创建后,可以使用以下命令检查实例状态:

$ kubectl -n default get redis
NAME         ARCH         VERSION   ACCESS     STATUS         MESSAGE   BUNDLE VERSION   AUTOUPGRADE   AGE
c6           cluster      6.0                  Initializing             5.1.0                         3m26s
c7           cluster      7.2       NodePort   Initializing             5.1.0                         98s
s6           sentinel     6.0                  Ready                    5.1.0                         25m
s7           sentinel     7.2       NodePort   Ready                    5.1.0                         2m15s
standalone   standalone   6.0                  Initializing             5.1.0                         6s

输出表中各字段的含义如下:

字段描述
NAME实例名称
ARCH此值对应 Redis 的架构。
  • cluster:Cluster 模式
  • sentinel:Sentinel 模式
  • standalone:单节点 Redis
此字段表示此 CR 资源管理的是 Standalone、Sentinel 还是 Cluster 模式的 Redis。
VERSION当前支持以下 2 个版本:6.0 和 7.2
ACCESS实例支持的访问方式。
  • :实例通过 ClusterIP 提供服务
  • NodePort:实例通过 NodePort 提供服务
  • LoadBalancer:实例通过 LoadBalancer 提供服务
STATUS实例的当前状态,可能包括以下状态:
  • Initializing:实例正在初始化或更新
  • Rebalancing:Cluster 实例正在扩容或缩容
  • Error:实例遇到不可恢复的错误
  • Paused:实例已手动暂停
  • Ready:实例已就绪
MESSAGE实例处于当前状态的原因
BUNDLE VERSION管理该实例的 operator 的版本号
AUTOUPGRADE是否为实例启用了自动升级
AGE实例创建至今的时长