删除自定义资源

本文解释了如何从您的Kubernetes环境中删除Redis Enterprise集群和Redis Enterprise数据库。

多命名空间管理

在删除命名空间之前,您必须先删除该命名空间内的Redis自定义资源(REDBRECoperator)。删除包含REDB的命名空间可能会导致错误或数据丢失。

删除一个数据库 (REDB)

要删除由Redis Enterprise Kubernetes操作员管理的数据库,请从您的K8s集群中运行kubectl delete redb

当你删除一个数据库时,你的数据和REDB自定义资源也会被删除。

删除一个Redis Enterprise集群(REC)

要删除由操作员管理的Redis Enterprise集群:

  1. 删除集群中的所有数据库。

  2. 从您的K8s集群中运行kubectl delete rec

当你删除集群时,你的数据库和REC自定义资源也会被删除。然而,在此过程中,集群的持久卷声明(PVCs)不会被删除。如果你想删除PVCs,你需要手动删除它们。

删除操作员

有两种方法可以删除操作符。您可以删除整个操作符包,但这也会删除操作符创建的任何集群范围的资源。要仅删除特定命名空间中的资源并保留其他集群范围的资源,您需要手动删除每个资源。

无论您决定删除整个捆绑包还是仅删除特定命名空间中的资源,删除操作员ConfigMap(operator-environment-config)都是重要的。

kubectl delete cm operator-environment-config

删除操作符包

要从您的K8s集群中删除操作符,您可以使用以下命令删除操作符包:

  • kubectl delete -f bundle.yaml 用于非OpenShift的K8s部署
  • kubectl delete -f openshift.bundle.yaml 用于 OpenShift 部署

这将从您的K8s集群中移除操作符及其自定义资源定义(CRDs)。

警告:
Redis Enterprise CRDs 是非命名空间资源,这意味着它们在整个 K8s 集群中共享。在一个命名空间中删除 CRDs 将会删除 K8s 集群中所有其他命名空间中的自定义资源。

从一个命名空间中删除操作符

如果您在同一K8s集群的不同命名空间中运行Redis Enterprise集群,删除整个操作员捆绑包可能会导致数据丢失。

为了安全地从某个命名空间中删除操作符而不影响其他命名空间,请单独删除操作符文件,不包括CRD文件:

kubectl delete -f role.yaml
kubectl delete -f role_binding.yaml
kubectl delete -f service_account.yaml
kubectl delete -f admission-service.yaml
kubectl delete -f operator.yaml

您还需要从验证webhook中移除the namespaceSelector部分

删除一个Active-Active数据库(REAADB)

  1. 在现有的参与集群之一上,删除REEA数据库(将替换为您的数据库名称)。
kubectl delete reaadb <reaadb-name>
  1. 验证REAADB不再存在。
kubectl get reaadb -o=jsonpath='{range .items[*]}{.metadata.name}'

删除远程集群 (RERC)

  1. 验证您要删除的RERC未在任何REAADB资源中列为参与集群。

    如果RERC仍然被列为任何数据库中的参与集群,删除操作将被阻止。

  2. 在现有的参与集群之一上,删除RERC(将替换为您的数据库名称)。

kubectl delete rerc <rerc-name>
  1. 验证RERC不再存在。
kubectl get rerc -o=jsonpath='{range .items[*]}{.metadata.name}'

排查REDB删除问题

该操作符将一个终结器附加到Redis Enterprise数据库(REDB)对象上。这确保了在从K8s集群中删除REDB自定义资源之前,数据库会被删除。

如果操作符未运行,或者发生其他致命错误,操作符不会自动移除终结器。在这种情况下,您将无法删除您的REDB资源。

如果发生这种情况,您可以手动移除终结器。

警告:
如果您手动移除终结器,无法保证底层的REDB已被删除。这可能会导致资源问题并需要手动干预。
kubectl patch redb <your-db-name> --type=json -p \
    '[{"op":"remove","path":"/metadata/finalizers","value":"finalizer.redisenterprisedatabases.app.redislabs.com"}]'

排查REC删除问题

该操作符将一个终结器附加到Redis Enterprise集群(REC)对象上。这确保了在从K8s集群中删除REC自定义资源之前,Redis集群会被删除。

如果操作符未运行,或者发生其他致命错误,操作符不会自动移除终结器。在这种情况下,您将无法删除您的REC资源。

如果发生这种情况,您可以手动移除终结器。

警告:
如果您手动移除终结器,无法保证底层的REC已被删除。这可能会导致资源问题并需要手动干预。
kubectl patch rec <your-rec-name> --type=json -p \
    '[{"op":"remove","path":"/metadata/finalizers","value":"redbfinalizer.redisenterpriseclusters.app.redislabs.com"}]'
RATE THIS PAGE
Back to top ↑