×

以下描述如何删除或卸载以前使用运算符生命周期管理器 (OLM) 在 OpenShift Container Platform 集群上安装的运算符。

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

更多信息,请参见 卸载失败后重新安装运算符

使用 Web 控制台从集群中删除运算符

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

先决条件
  • 您可以使用具有 `cluster-admin` 权限的帐户访问 OpenShift Container Platform 集群 Web 控制台。

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

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

  3. 在 **运算符详细信息** 页面的右侧,从 **操作** 列表中选择 **卸载运算符**。

    将显示 **卸载运算符?** 对话框。

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

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

使用 CLI 从集群中删除 Operator

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

先决条件
  • 您可以使用具有cluster-admin权限的帐户访问 OpenShift Container Platform 集群。

  • 您的工作站已安装 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 安装所在命名空间中SubscriptionClusterServiceVersion对象的名称

    $ 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>