1.9. 卸装

在卸载 Red Hat Advanced Cluster Management for Kubernetes 时,您会看到两个不同的卸载过程级别: 删除自定义资源完整的 Operator 卸载。卸载过程最多可能需要 20 分钟。

  • 第一个级别是自定义资源移除,这是最基本的卸载类型,用于删除 MultiClusterHub 实例的自定义资源,但会保留其他所需的 Operator 资源。如果您计划使用相同的设置和组件重新安装,这个卸载级别很有用。
  • 第二个级别是更完整的卸载,可删除大多数 Operator 组件,不包括自定义资源定义等组件。当您继续执行此步骤时,它会删除所有没有通过删除自定义资源而被删除的组件和订阅。在卸载后,您必须在重新安装自定义资源前重新安装 Operator。

1.9.1. 先决条件:分离启用的服务

在卸载 Red Hat Advanced Cluster Management hub 集群前,您必须分离所有由该 hub 集群管理的集群。要解决错误,分离仍由 hub 集群管理的所有集群,然后尝试再次卸载。

  • 如果使用发现功能,在尝试卸载时可能会看到以下错误:

    Cannot delete MultiClusterHub resource because DiscoveryConfig resource(s) exist

    要禁用发现功能,请完成以下步骤:

    • 从控制台导航到 Discovered Clusters 表,再单击 Disable cluster discovery。确认您要删除该服务。
    • 您还可以使用终端。运行以下命令以禁用发现:
    $ oc delete discoveryconfigs --all --all-namespaces
  • 如果附加了受管集群,您可能会看到以下信息。注: 这不包括 local-cluster,它是您自助管理的 hub 集群:

    Cannot delete MultiClusterHub resource because ManagedCluster resource(s) exist

    有关分离集群的更多信息,请参阅从管理部分删除集群,在 创建集群中选择与您的供应商相关的信息。

  • 如果您有裸机资产,可能会看到以下内容:

    Cannot delete MultiClusterHub resource because BareMetalAssets resource(s) exist

    有关删除裸机资产的更多信息,请参阅删除裸机资产

  • 如果您使用可观察性功能,可能会看到以下内容:

    Cannot delete MultiClusterHub resource because MultiClusterObservability resource(s) exist
    • 要使用终端禁用并删除 MultiClusterObservability,请参阅以下步骤:

      1. 登录到您的 hub 集群。
      2. 输入以下命令删除 MultiClusterObservability 自定义资源:

        oc delete mco observability
    • 要使用控制台删除 MultiClusterObservability 自定义资源,请参阅以下流程:

      1. 如果安装了 MultiClusterObservability 自定义资源,请选择 MultiClusterObservability 选项卡。
      2. 选择 MultiClusterObservability 自定义资源的 Options 菜单。
      3. 选择 Delete MultiClusterObservability

        当您删除资源时,Red Hat Advanced Cluster Management hub 集群上的 open-cluster-management-observability 命名空间中的 pod 以及所有受管集群上的 open-cluster-management-addon-observability 命名空间中的 pod 都会被删除。

    : 删除 observability 服务后,您的对象存储不会受到影响。

1.9.2. 使用命令删除资源

  1. 如果还没有运行 oc 命令,请确保 OpenShift Container Platform CLI 配置为运行 oc 命令。如需有关如何配置 oc 命令的更多信息,请参阅 OpenShift Container Platform 文档中的 OpenShift CLI 入门
  2. 输入以下命令来更改到您的项目命名空间。将 namespace 替换为项目命名空间的名称:

    oc project <namespace>
  3. 输入以下命令删除 MultiClusterHub 自定义资源:

    oc delete multiclusterhub --all

    您可以输入以下命令来查看进度:

    oc get mch -o yaml
  4. 运行清理脚本删除所有潜在的剩余工件。如果您计划在同一集群中使用旧版本的 Red Hat Advanced Cluster Management 重新安装,则运行此清理脚本。

    1. 按照安装 Helm 中的内容,安装 Helm CLI 二进制版本 3.2.0 或更新版本。
    2. 将以下脚本复制到一个文件中:

      #!/bin/bash
      ACM_NAMESPACE=<namespace>
      oc delete mch --all -n $ACM_NAMESPACE
      helm ls --namespace $ACM_NAMESPACE | cut -f 1 | tail -n +2 | xargs -n 1 helm delete --namespace $ACM_NAMESPACE
      oc delete apiservice v1beta2.webhook.certmanager.k8s.io v1.admission.cluster.open-cluster-management.io v1.admission.work.open-cluster-management.io
      oc delete clusterimageset --all
      oc delete configmap -n $ACM_NAMESPACE cert-manager-controller cert-manager-cainjector-leader-election cert-manager-cainjector-leader-election-core
      oc delete consolelink acm-console-link
      oc delete crd klusterletaddonconfigs.agent.open-cluster-management.io placementbindings.policy.open-cluster-management.io policies.policy.open-cluster-management.io userpreferences.console.open-cluster-management.io searchservices.search.acm.com discoveredclusters.discovery.open-cluster-management.io discoveryconfigs.discovery.open-cluster-management.io
      oc delete mutatingwebhookconfiguration cert-manager-webhook cert-manager-webhook-v1alpha1 ocm-mutating-webhook managedclustermutators.admission.cluster.open-cluster-management.io
      oc delete oauthclient multicloudingress
      oc delete rolebinding -n kube-system cert-manager-webhook-webhook-authentication-reader
      oc delete scc kui-proxy-scc
      oc delete validatingwebhookconfiguration cert-manager-webhook cert-manager-webhook-v1alpha1 channels.apps.open.cluster.management.webhook.validator application-webhook-validator multiclusterhub-operator-validating-webhook ocm-validating-webhook

      将脚本中的 <namespace> 替换为安装 Red Hat Advanced Cluster Management 的命名空间的名称。确保指定正确的命名空间,因为命名空间会被清理和删除。

    3. 运行该脚本删除所有从之前安装中保留的工件。如果没有剩余的工件,则会返回一个没有找到资源的信息。

      注: 如果您计划重新安装相同的 Red Hat Advanced Cluster Management 版本,您可以跳过这个过程中的下一步并重新安装自定义资源。继续以完整 Operator 的卸载过程。

  5. 输入以下命令在安装它的命名空间中删除 Red Hat Advanced Cluster Management ClusterServiceVersionSubscription
❯ oc get csv
NAME                                 DISPLAY                                      VERSION   REPLACES   PHASE
advanced-cluster-management.v2.4.0   Advanced Cluster Management for Kubernetes   2.4.0                Succeeded

❯ oc delete clusterserviceversion advanced-cluster-management.v2.4.0

❯ oc get sub
NAME                        PACKAGE                       SOURCE                CHANNEL
acm-operator-subscription   advanced-cluster-management   acm-custom-registry   release-2.5

❯ oc delete sub acm-operator-subscription

注: CSV 的订阅名称和版本可能有所不同。

1.9.3. 使用控制台删除组件

当使用 Red Hat OpenShift Container Platform 控制台卸载时,需要删除 operator。使用控制台完成以下步骤进行卸载:

  1. 在 OpenShift Container Platform 控制台导航中,选择 Operators > Installed Operators > Advanced Cluster Manager for Kubernetes.。
  2. 删除 MultiClusterHub 自定义资源。

    1. 选择 Multiclusterhub 标签页。
    2. 选择 MultiClusterHub 自定义资源的 Options 菜单。
    3. 选择 Delete MultiClusterHub
  3. 使用以下命令,根据删除 MultiClusterHub 实例中的步骤运行清理脚本。

    提示: 如果您计划重新安装相同的 Red Hat Advanced Cluster Management 版本,您可以跳过这个过程中的其余步骤并重新安装自定义资源。

  4. 进入 Installed Operators
  5. 选择 Options 菜单并选择 Uninstall operator 来删除 Red Hat Advanced Cluster Management