管理Kubernetes的Redis Enterprise数据库

本节描述了数据库控制器如何通过数据库自定义资源提供创建、管理和使用数据库的能力。

Redis 企业数据库 (REDB) 生命周期

Redis Enterprise 数据库 (REDB) 是通过自定义资源文件创建的。自定义资源定义了 REDB 的大小、名称和其他规格。当您应用自定义资源文件时,数据库将被创建。

Kubernetes 中的 Redis Enterprise 数据库控制器:

  • 发现自定义资源
  • 确保REDB在与Redis Enterprise集群(REC)相同的命名空间中创建
  • 保持自定义资源与REDB之间的一致性

数据库控制器识别新的自定义资源并验证其规范。 如果有效,控制器将自定义资源中指定的值与默认值结合,以创建完整的规范。然后,它使用这个完整的规范在指定的Redis Enterprise集群(REC)上创建数据库。

一旦数据库创建完成,它就会通过服务机制由Redis Enterprise集群的服务触发器暴露出来。 如果数据库自定义资源被删除,数据库及其服务将从集群中删除。

灵活的部署选项

可以在同一个操作员的管理下管理多个命名空间中的数据库。要了解更多信息,请参阅管理多个命名空间中的数据库

要了解更多关于设计多命名空间Redis Enterprise集群的信息,请参阅灵活的部署选项

创建数据库

您的 Redis Enterprise 数据库自定义资源必须是 kind: RedisEnterpriseDatabase 类型,并且具有 namememorySize 的值。所有其他值都是可选的,如果未指定,将使用默认值。

  1. 创建一个文件(在本例中为mydb.yaml),其中包含您的数据库自定义资源。

    apiVersion: app.redislabs.com/v1alpha1
    kind: RedisEnterpriseDatabase
    metadata:
      name: mydb
    spec:
      memorySize: 1GB
    

    要在与您的REC不同的命名空间中创建REDB,您需要在RedisEnterpriseDatabase自定义资源的spec部分中指定带有redisEnterpriseCluster的集群。

    redisEnterpriseCluster:
      name: rec
    
  2. 在您希望数据库所在的命名空间中应用文件。

    kubectl apply -f mydb.yaml
    
  3. 检查您的数据库状态。

    kubectl get redb mydb -o jsonpath="{.status.status}"
    

    当状态为active时,数据库已准备就绪,可以使用。

修改数据库

自定义资源定义了数据库的属性。 要更改数据库,您可以编辑原始规范并应用更改或使用kubectl edit

要修改数据库:

  1. 编辑定义:

    kubectl edit redb mydb
    
  2. 更改规范(仅限spec部分中的属性)并保存更改。
    有关更多详细信息,请参阅RedisEnterpriseDatabaseSpecOptions for Redis Enterprise databases

  3. 监控状态以查看更改何时生效:

    kubectl get redb mydb -o jsonpath="{.status.status}"
    

    当状态为active时,数据库已准备好使用。

删除数据库

只要自定义资源存在,数据库就会存在。 如果删除自定义资源,数据库控制器将删除数据库。 数据库控制器将从集群中移除数据库及其服务。

要删除数据库,请运行:

kubectl delete redb mydb

连接到数据库

数据库控制器创建数据库后,访问数据库的服务将在同一命名空间中创建。默认情况下有两个服务,一个是'ClusterIP'服务,另一个是'headless'服务。
数据库的连接信息存储在由数据库控制器维护的Kubernetes secret中。这个secret包含:

  • 数据库端口 (port)
  • 服务名称的逗号分隔列表(service_names
  • 用于身份验证的数据库密码 (password)

该密钥的名称存储在数据库自定义资源中。

注意:
使用这些步骤从您的K8s集群内部连接到您的数据库。要从K8s集群外部访问您的数据库,请设置Ingress控制器或使用OpenShift路由。
  1. 检索秘密名称。

    kubectl get redb mydb -o jsonpath="{.spec.databaseSecretName}"
    

    数据库密钥名称通常采用redb-的形式,因此在我们示例中它将是redb-mydb

  2. 检索并解码密码。

    kubectl get secret redb-mydb -o jsonpath="{.data.password}" | base64 --decode
    
  3. 检索并解码端口号。

    kubectl get secret redb-mydb -o jsonpath="{.data.port}" | base64 --decode
    
  4. 检索并解码服务名称。

    kubectl get secret redb-mydb -o jsonpath="{.data.service_names}" | base64 --decode
    

    你需要从列出的服务中选择一个来用于连接。

  5. 从集群中的一个pod,使用redis-cli连接到您的数据库。

    redis-cli -h <service_name> -p <port>
    
  6. 输入您从密钥中检索到的密码。

    auth <password>
    

    您现在已连接到您的数据库!

RATE THIS PAGE
Back to top ↑