×

以下描述了如何删除或卸载之前使用 Operator Lifecycle Manager (OLM) 在 OpenShift Dedicated 集群上安装的操作符。

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

使用 Web 控制台从集群中删除操作符

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

前提条件
  • 您可以使用具有 `dedicated-admin` 权限的帐户访问 OpenShift Dedicated 集群 Web 控制台。

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

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

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

    将显示**卸载操作符?**对话框。

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

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

使用 CLI 从集群中删除操作符

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

前提条件
  • 您可以使用具有 `dedicated-admin` 权限的帐户访问 OpenShift Dedicated 集群。

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

步骤
  1. 确保在 `currentCSV` 字段中标识已订阅操作符(例如 `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` 值删除目标命名空间中操作符的 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) 中,如果您订阅的操作符引用网络上无法访问的镜像,则您可以在 `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

结果,订阅卡在此失败状态中,并且操作符无法安装或升级。

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

前提条件
  • 您有一个失败的订阅,无法提取不可访问的包镜像。

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

步骤
  1. 从安装操作符的命名空间获取 `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` 命名空间中任何失败作业的名称及其相关的 ConfigMap。

    $ 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. 删除该 ConfigMap。

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

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

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