删除自定义资源
本文解释了如何从您的Kubernetes环境中删除Redis Enterprise集群和Redis Enterprise数据库。
多命名空间管理
在删除命名空间之前,您必须先删除该命名空间内的Redis自定义资源(REDB、REC和operator)。删除包含REDB的命名空间可能会导致错误或数据丢失。
删除一个数据库 (REDB)
要删除由Redis Enterprise Kubernetes操作员管理的数据库,请从您的K8s集群中运行kubectl delete redb <your-db-name>
。
当你删除一个数据库时,你的数据和REDB自定义资源也会被删除。
删除一个Redis Enterprise集群(REC)
要删除由操作员管理的Redis Enterprise集群:
-
删除集群中的所有数据库。
-
从您的K8s集群中运行
kubectl delete rec <your-rec-name>
。
当你删除集群时,你的数据库和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)。
从一个命名空间中删除操作符
如果您在同一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)
- 在现有的参与集群之一上,删除REEA数据库(将
<reaadb-name>
替换为您的数据库名称)。
kubectl delete reaadb <reaadb-name>
- 验证REAADB不再存在。
kubectl get reaadb -o=jsonpath='{range .items[*]}{.metadata.name}'
删除远程集群 (RERC)
-
验证您要删除的RERC未在任何REAADB资源中列为参与集群。
如果RERC仍然被列为任何数据库中的参与集群,删除操作将被阻止。
-
在现有的参与集群之一上,删除RERC(将
<rerc-name>
替换为您的数据库名称)。
kubectl delete rerc <rerc-name>
- 验证RERC不再存在。
kubectl get rerc -o=jsonpath='{range .items[*]}{.metadata.name}'
排查REDB删除问题
该操作符将一个终结器附加到Redis Enterprise数据库(REDB)对象上。这确保了在从K8s集群中删除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资源。
如果发生这种情况,您可以手动移除终结器。
kubectl patch rec <your-rec-name> --type=json -p \
'[{"op":"remove","path":"/metadata/finalizers","value":"redbfinalizer.redisenterpriseclusters.app.redislabs.com"}]'