×

以下描述了如何删除或卸载之前使用 Operator Lifecycle Manager (OLM) 安装在您的 AWS 集群上的 Red Hat OpenShift Service 上的 Operator。

在尝试重新安装相同的 Operator 之前,必须成功且完全卸载该 Operator。未能完全正确卸载 Operator 可能会导致资源(例如项目或命名空间)卡在“终止”状态,并在尝试重新安装 Operator 时出现“错误解析资源”消息。

使用 Web 控制台从集群中删除 Operator

集群管理员可以使用 Web 控制台从选定的命名空间中删除已安装的 Operator。

先决条件
  • 您可以使用具有 `dedicated-admin` 权限的帐户访问 AWS 集群的 Red Hat OpenShift Service Web 控制台。

步骤
  1. 导航到**Operators** → **已安装的 Operators** 页面。

  2. 滚动或在**按名称筛选**字段中输入关键字以查找要删除的 Operator。然后,单击它。

  3. 在**Operator 详情**页面的右侧,从**操作**列表中选择**卸载 Operator**。

    将显示**卸载 Operator?**对话框。

  4. 选择**卸载**以删除 Operator、Operator 部署和 Pod。此操作之后,Operator 将停止运行,并且不再接收更新。

    此操作不会删除 Operator 管理的资源,包括自定义资源定义 (CRD) 和自定义资源 (CR)。Web 控制台启用的仪表板和导航项以及继续运行的集群外资源可能需要手动清理。要卸载 Operator 后删除这些资源,您可能需要手动删除 Operator CRD。

使用 CLI 从集群中删除 Operator

集群管理员可以使用 CLI 从选定的命名空间中删除已安装的 Operator。

先决条件
  • 您可以使用具有 `dedicated-admin` 权限的帐户访问 AWS 集群上的 Red Hat OpenShift Service。

  • 您的工作站上已安装 OpenShift CLI (oc)。

步骤
  1. 确保在 `currentCSV` 字段中标识已订阅 Operator(例如,`serverless-operator`)的最新版本。

    $ oc get subscription.operators.coreos.com serverless-operator -n openshift-serverless -o yaml | grep currentCSV
    示例输出
      currentCSV: serverless-operator.v1.28.0
  2. 删除订阅(例如,`serverless-operator`)

    $ oc delete subscription.operators.coreos.com serverless-operator -n openshift-serverless
    示例输出
    subscription.operators.coreos.com "serverless-operator" deleted
  3. 使用上一步中的 `currentCSV` 值删除目标命名空间中 Operator 的 CSV

    $ oc delete clusterserviceversion serverless-operator.v1.28.0 -n openshift-serverless
    示例输出
    clusterserviceversion.operators.coreos.com "serverless-operator.v1.28.0" deleted

刷新失败的订阅

在 Operator Lifecycle Manager (OLM) 中,如果您订阅的 Operator 引用网络上无法访问的镜像,您可以在 `openshift-marketplace` 命名空间中找到出现以下错误的作业

示例输出
ImagePullBackOff for
Back-off pulling image "example.com/openshift4/ose-elasticsearch-operator-bundle@sha256:6d2587129c846ec28d384540322b40b05833e7e00b25cca584e004af9a1d292e"
示例输出
rpc error: code = Unknown desc = error pinging docker registry example.com: Get "https://example.com/v2/": dial tcp: lookup example.com on 10.0.0.1:53: no such host

结果,订阅停留在失败状态,并且无法安装或升级 Operator。

您可以通过删除订阅、集群服务版本 (CSV) 和其他相关对象来刷新失败的订阅。重新创建订阅后,OLM 就会重新安装 Operator 的正确版本。

先决条件
  • 您有一个失败的订阅,无法拉取无法访问的 bundle 镜像。

  • 您已确认可以访问正确的 bundle 镜像。

步骤
  1. 获取 Operator 安装所在命名空间中的 `Subscription` 和 `ClusterServiceVersion` 对象的名称

    $ oc get sub,csv -n <namespace>
    示例输出
    NAME                                                       PACKAGE                  SOURCE             CHANNEL
    subscription.operators.coreos.com/elasticsearch-operator   elasticsearch-operator   redhat-operators   5.0
    
    NAME                                                                         DISPLAY                            VERSION    REPLACES   PHASE
    clusterserviceversion.operators.coreos.com/elasticsearch-operator.5.0.0-65   OpenShift Elasticsearch Operator   5.0.0-65              Succeeded
  2. 删除订阅

    $ oc delete subscription <subscription_name> -n <namespace>
  3. 删除集群服务版本

    $ oc delete csv <csv_name> -n <namespace>
  4. 获取 `openshift-marketplace` 命名空间中任何失败作业和相关配置映射的名称

    $ oc get job,configmap -n openshift-marketplace
    示例输出
    NAME                                                                        COMPLETIONS   DURATION   AGE
    job.batch/1de9443b6324e629ddf31fed0a853a121275806170e34c926d69e53a7fcbccb   1/1           26s        9m30s
    
    NAME                                                                        DATA   AGE
    configmap/1de9443b6324e629ddf31fed0a853a121275806170e34c926d69e53a7fcbccb   3      9m30s
  5. 删除作业

    $ oc delete job <job_name> -n openshift-marketplace

    这确保不会重新创建尝试拉取不可访问镜像的 Pod。

  6. 删除配置映射

    $ oc delete configmap <configmap_name> -n openshift-marketplace
  7. 使用 Web 控制台中的 OperatorHub 重新安装 Operator。

验证
  • 检查 Operator 是否已成功重新安装

    $ oc get sub,csv,installplan -n <namespace>