准备使用 OADP 实用程序恢复 Cloud Pak for Data

在使用 Cloud Pak for Data OADP 备份和还原实用程序还原 Cloud Pak for Data 实例(租户)之前,必须删除 Cloud Pak for Data 实例项目(命名空间)。

关于本任务

Cloud Pak for Data 实例中的资源由在其他项目中运行的操作员和控制器进行监视和管理。 为了防止在删除 Cloud Pak for Data 实例时损坏或不同步操作程序和资源,必须找到在元数据中指定了终结器的 Kubernetes 资源,并且必须先删除这些终结器,然后才能删除 Cloud Pak for Data 实例。

最佳实践: 如果您设置了环境变量,那么可以在此任务中以完全相同的方式运行命令。 有关指示信息,请参阅 设置安装环境变量

在运行此任务中的命令之前,请确保确定环境变量的来源。

过程

  1. 以实例管理员身份登录到 Red Hat® OpenShift® Container Platform
    ${OC_LOGIN}
    请记住: OC_LOGINoc login 命令的别名。
  2. 删除非名称空间资源。
    1. 从处于 Released 状态的 Cloud Pak for Data 实例获取 PersistentVolumes (PV) 的列表:
      oc get pv --no-headers | grep "Released.*${PROJECT_CPD_INST_OPERANDS}/.*" | awk '{print $1}'
    2. 删除这些 PV:
      oc get pv --no-headers | grep "Released.*${PROJECT_CPD_INST_OPERANDS}/.*" | awk '{print $1}' | xargs oc delete pv
    3. 删除过时的安全上下文约束(SCC):
      oc get scc | grep ${PROJECT_CPD_INST_OPERANDS} | awk '{print $1}' | xargs oc delete scc
  3. 找到并除去可能阻止删除 Cloud Pak for Data 实例操作数项目的终止程序,然后删除操作数项目:
    oc project ${PROJECT_CPD_INST_OPERANDS}
    while read -r resource_type
    do
        echo "${resource_type}"
        while read -r resource
        do
            if [ -z "${resource}" ]; then
                continue
            fi
            kubectl delete "${resource}" -n "${PROJECT_CPD_INST_OPERANDS}" --timeout=10s \
            || kubectl patch "${resource}" -n "${PROJECT_CPD_INST_OPERANDS}" \
                --type=merge \
                --patch '{"metadata":{"finalizers":[]}}'
        done <<< "$(kubectl get "${resource_type}" -n "${PROJECT_CPD_INST_OPERANDS}" -o name  | sort)"
    done <<< "$(kubectl api-resources --namespaced=true -o name | grep ibm.com | sort)"
    oc delete project ${PROJECT_CPD_INST_OPERANDS}
  4. 除去所有终结器时,请检查是否已删除 Cloud Pak for Data 实例操作数项目:
    oc get project ${PROJECT_CPD_INST_OPERANDS} -o yaml
    如果删除了该项目,那么该命令将返回以下消息:
    Error from server (NotFound): namespaces "${PROJECT_CPD_INST_OPERANDS}" not found
  5. 如果某些服务已安装在系留项目中,请对每个系留项目重复步骤 1 和 2。

    在这些命令中,将 PROJECT_CPD_INST_OPERANDS 环境变量替换为 PROJECT_CPD_INSTANCE_TETHERED

    提示: 如果设置 PROJECT_CPD_INSTANCE_TETHERED_LIST 环境变量,请将绑定项目列表打印到终端:
    echo $PROJECT_CPD_INSTANCE_TETHERED_LIST

    在重新运行命令之前,请使用此信息来设置 PROJECT_CPD_INSTANCE_TETHERED 环境变量。

  6. 删除 Cloud Pak for Data 实例操作程序项目:
    oc project ${PROJECT_CPD_INST_OPERATORS}
    while read -r resource_type
    do
        echo "${resource_type}"
        while read -r resource
        do
            if [ -z "${resource}" ]; then
                continue
            fi
            kubectl delete "${resource}" -n "${PROJECT_CPD_INST_OPERATORS}" --timeout=10s \
            || kubectl patch "${resource}" -n "${PROJECT_CPD_INST_OPERATORS}" \
                --type=merge \
                --patch '{"metadata":{"finalizers":[]}}'
        done <<< "$(kubectl get "${resource_type}" -n "${PROJECT_CPD_INST_OPERATORS}" -o name  | sort)"
    done <<< "$(kubectl api-resources --namespaced=true -o name | grep ibm.com | sort)"
    oc delete project ${PROJECT_CPD_INST_OPERATORS}
  7. 如果已安装 Cloud Pak for Data scheduling service ,请 将其卸载
  8. 删除 Cloud Pak for Data 实例的webhook配置。
    注意 :仅当删除 Cloud Pak for Data 实例操作员项目的上一步操作完成后,才能执行此步骤。
    oc get validatingwebhookconfiguration ibm-common-service-validating-webhook-${PROJECT_CPD_INST_OPERATORS}
    oc delete validatingwebhookconfiguration ibm-common-service-validating-webhook-${PROJECT_CPD_INST_OPERATORS}
  9. 删除过时的网络链接:
    oc get validatingwebhookconfigurations -l olm.owner.namespace=${PROJECT_CPD_INST_OPERATORS}
    oc delete validatingwebhookconfigurations -l olm.owner.namespace=${PROJECT_CPD_INST_OPERATORS}