Redis Enterprise for Kubernetes 架构
Redis Enterprise for Kubernetes 的架构和组件概述。
适用于 Kubernetes 的 Redis Enterprise |
---|
Redis Enterprise for Kubernetes 为您提供 Redis Enterprise 的速度和持久性,以及 Kubernetes (K8s) 的灵活性和易用性。Redis Enterprise for Kubernetes 使用 Kubernetes作员模式和自定义控制器将 Redis Enterprise 的最佳功能引入 Kubernetes 平台。
生命周期
Kubernetes 是一个快速发展的平台,发布周期短(大约 4 个月)。新功能、增强功能和错误修复的频繁涌入意味着 Kubernetes 发行版会迅速进出支持。Redis Enterprise 也是一款快速发展的产品,仅在列为受支持发行版的发行版上兼容并经过测试。
Redis Enterprise for Kubernetes 的每个版本都经过测试,以确保 Redis Enterprise 版本适用于当时支持的 Kubernetes 发行版。必须同时支持 Kubernetes 版本和 Redis Enterprise 版本,Operator 才能正常运行。我们鼓励您经常升级 Redis Enterprise for Kubernetes,这不仅是为了获得增强功能和错误修复的好处,而且是为了让您的软件得到支持。
建筑
下图说明了单个命名空间、三个节点部署的组件。

算子
Operator 是 Kubernetes API 的自定义扩展,旨在管理复杂的、有状态的应用程序及其组件。数据库和其他应用程序通常使用此运算符模式来扩展集群的行为,而无需更改其底层代码。Kubernetes.io/docs 对运算符模式有很好的解释。
Operator 是在命名空间中运行的部署,它使用控制器来管理自定义资源 (CR),确保这些资源得到持续监控和维护。
安装 Operator 后,将创建以下资源:
- Operator 将在其下运行的 service account
- 一组角色,用于定义作员执行其任务所需的权限
- 用于授权服务账户的角色绑定集
- CustomResourceDefinition (CRD) 对于每个 Redis Enterprise 自定义资源
- 作员部署
Namespace
Redis Enterprise 作员部署在命名空间中。每个命名空间只能托管一个 operator 和一个 RedisEnterpriseCluster (REC)。命名空间在资源之间创建逻辑边界,从而实现组织和安全性。某些资源仅限于命名空间,而其他资源则是集群范围的。
Redis Enterprise for Kubernetes 还支持多命名空间部署,这意味着作员可以监控其他命名空间(托管应用程序)的自定义资源并应用任何更改。
自定义资源
数据库和其他应用程序通常使用 Kubernetes 自定义资源 (CR) 来扩展集群的行为,而无需更改其底层代码。自定义资源 (CR) 扩展了 Kubernetes API,使用户能够以 Kubernetes 的方式管理 Redis 数据库。自定义资源是使用 YAML 配置文件创建和管理的。
这种声明式配置方法允许您为资源指定所需的状态,并且作员会进行必要的更改以实现该状态。这简化了安装、升级以及垂直和水平扩展。
作员会持续监控 CR 的更改,并自动协调您在 YAML 配置文件中指定的所需状态与资源的实际状态之间的任何差异。自定义资源也可以驻留在与管理它们的 Operator 不同的命名空间中,例如在多命名空间安装中。
自定义资源定义
自定义资源定义 (CRD) 是集群范围的资源,用于指定可以通过自定义资源文件配置哪些设置。任何未由 CRD 定义的设置都不由 Operator 管理。您仍然可以使用标准的 Redis Enterprise Software 方法更改这些非托管设置。
对于由作员管理的设置,在 CR YAML 文件之外所做的任何更改(例如,通过管理 UI)都将作员覆盖。确保使用 CR YAML 文件更新所有作员管理的设置,以防止冲突。
RedisEnterpriseCluster REC
Redis Enterprise 集群是一组池化资源的 Redis Enterprise 节点。每个节点都能够运行多个 Redis 实例(分片)。

Redis 集群由 RedisEnterpriseCluster (REC) 自定义资源创建和管理。对 REC 配置文件的更改会提示作员对集群进行更改。标准数据库 (REDB) 和主动-主动数据库 (REAADB) 都需要 REC。
有关字段和设置的完整列表,请参阅 RedisEnterpriseCluster API 参考。
RedisEnterprise数据库 REDB
Redis Enterprise 数据库是一个逻辑实体,用于跨多个 Redis 实例管理整个数据集。Redis 实例是一个单线程数据库进程(通常称为分片)。
Redis 数据库由 RedisEnterpriseDatabase (REDB) 自定义资源 (CR) 创建和管理。对 REDB YAML 配置文件的更改会提示 Operator 对数据库进行更改。
作员可以管理同一命名空间或不同命名空间中的数据库。有关更多信息,请参阅“灵活部署”选项和“管理多个命名空间中的数据库”。
有关字段和设置的完整列表,请参阅 RedisEnterpriseDatabase (REDB) API 参考。
安全
Redis Enterprise for Kubernetes 使用密钥来管理您的集群凭证、集群证书和客户端证书。您可以使用 RedisEnterpriseCluster (REC) 规范配置 LDAP 和节点间加密。
REC 凭证
Redis Enterprise for Kubernetes 使用 RedisEnterpriseCluster (REC) 自定义资源创建 Redis Enterprise 集群。在创建过程中,它会生成随机凭证供作员使用。凭证保存在 Kubernetes (K8s) 密钥中。密钥名称默认为集群的名称。
有关更多详细信息,请参阅管理 REC 凭证。
REC 证书
默认情况下,Redis Enterprise Software for Kubernetes 在创建期间为集群生成 TLS 证书。这些自签名证书在每个 Redis Enterprise 集群 (REC) 的第一个节点上生成,并复制到集群中的所有其他节点。
有关更多详细信息,请参阅管理 REC 证书。
客户端证书
对于要使用的每个客户端证书,您需要创建一个 Kubernetes 密钥来保存它。然后,您可以在 Redis Enterprise 数据库 (REDB) 自定义资源中引用该密钥。
有关更多详细信息,请参阅添加客户端证书。
存储
持久性存储对于 Redis Enterprise 是必需的。Redis Enterprise for Kubernetes 需要网络连接存储。
Redis Enterprise for Kubernetes 使用 PersistentVolumeClaims (PVC) 来管理存储资源。PVC 是 Redis Pod 使用的 PersistentVolume (PV) 资源的抽象表示。PVC 由 Redis Enterprise作员创建,并由 RedisEnterpriseCluster (REC) 使用。
PVC 是以特定大小创建的,如果底层存储类支持,则可以扩展 PVC。
自动分层存储
适用于 Kubernetes 的 Redis 企业软件支持自动分层(以前称为 Redis on Flash),它扩展了节点内存以同时使用 RAM 和闪存存储。SSD(固态驱动器)可以存储不常用的 (暖) 值,而您的键和常用 (热) 值仍存储在 RAM 中。这可以提高大型数据集的性能并降低成本。
强烈建议使用 NVMe (non-volatile memory express) SSD 以实现最佳性能。
联网
默认情况下,Kubernetes 不允许您从 K8s 集群外部访问 Redis 数据库。Redis Enterprise for Kubernetes 支持多种将外部流量路由到 Redis Enterprise 集群 (REC) 的方法:
- Ingress 控制器 HAProxy 和 NGINX 需要一个
ingress
API 资源。 - Istio 需要
Gateway
和VirtualService
API 资源。 - OpenShift 使用路由来路由外部流量。
主动-主动数据库需要在 REC 中使用 ingressOrRouteSpec 字段配置上述路由方法之一。
服务 Rigger
服务 Rigger 负责创建和更新与数据库对象相关的服务。它识别集群中的数据库对象,并根据redisEnterpriseCluster.Spec.servicesRiggerSpec
设置以允许访问这些数据库。默认情况下,每个数据库都有两项服务,一个cluster_ip
Service 与数据库同名,并且headless
Service 与数据库同名,后缀为-headless
.它还会创建其他类型的 Service,例如 Ingress Services 或 OpenshiftRoutes(在redisEnterpriseCluster.Spec.ingressOrRouteSpec
) 提供对 REAADB 对象的访问。
您可以使用kubectl get services
命令。
Kubernetes 是一个动态环境,节点和 Pod 会根据需要而变化。服务 Rigger 会监视集群的这些更改,并更新数据库服务以确保与数据库的可靠通信。
主动-主动数据库
在 Kubernetes 上,Redis Enterprise 主动-主动数据库提供对来自不同 Kubernetes 集群的相同数据集的读写访问权限。创建主动-主动数据库需要在位于不同 Kubernetes 集群中的两个 Redis Enterprise 集群之间路由网络访问。如果没有为每个集群配置适当的访问权限,数据库实例之间的同步将失败。Kubernetes 上的主动-主动数据库也需要准入控制器,以验证对自定义资源的更改。
有关更多详细信息和安装信息,请参阅主动-主动数据库。有关主动-主动的更多常规信息,请参阅 Redis Enterprise Software 文档。
RedisEnterpriseRemoteCluster RERC
RedisEnterpriseRemoteCluster (RERC) 包含允许 REC 链接到 RedisEnterpriseActiveActiveDatabase (REAADB) 的详细信息。RERC 资源在 REAADB 资源中列出,以成为主动-主动数据库的参与集群。
有关字段和设置的完整列表,请参阅 RERC API 参考。
RedisEnterpriseActiveActiveDatabase REAADB
RedisEnterpriseActiveActiveDatabase (REAADB) 资源创建和管理跨多个 Kubernetes 集群的数据库。REAADB 需要外部路由、至少两个 REC 和至少两个 RERC。
有关字段和设置的完整列表,请参阅 REAADB API 参考。
指标
要从数据库和 Redis Enterprise 集群 (REC) 收集指标数据,您可以将 Prometheus 服务器连接到 REC 上公开的终端节点。Redis Enterprise for Kubernetes 会创建一个专用服务来公开prometheus
端口 (8070) 用于数据收集。一个名为ServiceMonitor
允许 Prometheus作员连接到此端口并从 Redis Enterprise 收集数据。