3.4. 删除 OpenShift Serverless
如果需要从集群中删除 OpenShift Serverless,您可以手动删除 OpenShift Serverless Operator 和其他 OpenShift Serverless 组件。在删除 OpenShift Serverless Operator 之前,您必须删除 Knative Serving 和 Knative Eventing。
3.4.1. 卸载 Knative Serving
在删除 OpenShift Serverless Operator 之前,您必须删除 Knative Serving。要卸载 Knative Serving,您必须删除 KnativeServing
自定义资源 (CR) 并删除 knative-serving
命名空间。
先决条件
- 您可以访问具有集群管理员权限的 OpenShift Container Platform 帐户。
-
安装 OpenShift CLI (
oc
) 。
流程
删除
KnativeServing
CR:$ oc delete knativeservings.operator.knative.dev knative-serving -n knative-serving
在该命令运行完成且已从
knative-serving
命名空间中移除所有 Pod 后,删除命名空间:$ oc delete namespace knative-serving
3.4.2. 卸载 Knative Eventing
在删除 OpenShift Serverless Operator 之前,您必须删除 Knative Eventing。要卸载 Knative Eventing,您必须删除 KnativeEventing
自定义资源 (CR) 并删除 knative-eventing
命名空间。
先决条件
- 您可以访问具有集群管理员权限的 OpenShift Container Platform 帐户。
-
安装 OpenShift CLI (
oc
) 。
流程
删除
KnativeEventing
CR:$ oc delete knativeeventings.operator.knative.dev knative-eventing -n knative-eventing
在该命令运行完成且已从
knative-eventing
命名空间中移除所有 Pod 后,删除命名空间:$ oc delete namespace knative-eventing
3.4.3. 删除 OpenShift Serverless Operator
删除 Knative Serving 和 Knative Eventing 后,您可以删除 OpenShift Serverless Operator。您可以使用 OpenShift Container Platform Web 控制台或 oc
CLI 完成此操作。
3.4.3.1. 使用 Web 控制台从集群中删除 Operator
集群管理员可以使用 Web 控制台从所选命名空间中删除已安装的 Operator。
先决条件
-
使用具有
cluster-admin
权限的账户访问 OpenShift Container Platform 集群 Web 控制台。
流程
-
进入 Operators
Installed Operators 页面,在 Filter by name 字段滚动鼠标或键入关键词,以查找您想要的 Operator。然后点它。 在 Operator Details 页面右侧,从 Actions 列表中选择 Uninstall Operator。
此时会显示 Uninstall Operator? 对话框,提醒您:
删除 Operator 不会移除任何自定义资源定义或受管资源。如果 Operator 在集群中部署了应用程序,或者配置了非集群资源,则这些应用程序将继续运行,需要手动清理。
此操作将删除 Operator 以及 Operator 部署和 pod(若有)。任何 Operands 和由 Operator 管理的资源(包括 CRD 和 CR)都不会被删除。Web 控制台为一些 Operator 启用仪表板和导航项。要在卸载 Operator 后删除这些,您可能需要手动删除 Operator CRD。
- 选择 Uninstall。此 Operator 将停止运行,并且不再接收更新。
3.4.3.2. 使用 CLI 从集群中删除 Operator
集群管理员可以使用 CLI 从所选命名空间中删除已安装的 Operator。
先决条件
-
使用具有
cluster-admin
权限的账户访问 OpenShift Container Platform 集群。 -
已在工作站上安装
oc
命令。
流程
通过
currentCSV
字段检查已订阅 Operator 的当前版本(如jaeger
):$ oc get subscription jaeger -n openshift-operators -o yaml | grep currentCSV
输出示例
currentCSV: jaeger-operator.v1.8.2
删除订阅(如
jaeger
):$ oc delete subscription jaeger -n openshift-operators
输出示例
subscription.operators.coreos.com "jaeger" deleted
使用上一步中的
currentCSV
值来删除目标命名空间中相应 Operator 的 CSV:$ oc delete clusterserviceversion jaeger-operator.v1.8.2 -n openshift-operators
输出示例
clusterserviceversion.operators.coreos.com "jaeger-operator.v1.8.2" deleted
3.4.3.3. 刷新失败的订阅
在 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 的正确版本。
先决条件
- 您有一个失败的订阅,无法拉取不能访问的捆绑包镜像。
- 已确认可以访问正确的捆绑包镜像。
流程
从安装 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
删除订阅:
$ oc delete subscription <subscription_name> -n <namespace>
删除集群服务版本:
$ oc delete csv <csv_name> -n <namespace>
在
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
删除作业:
$ oc delete job <job_name> -n openshift-marketplace
这样可确保尝试拉取无法访问的镜像的 Pod 不会被重新创建。
删除配置映射:
$ oc delete configmap <configmap_name> -n openshift-marketplace
- 在 Web 控制台中使用 OperatorHub 重新安装 Operator。
验证
检查是否已成功重新安装 Operator:
$ oc get sub,csv,installplan -n <namespace>
3.4.4. 删除 OpenShift Serverless 自定义资源定义
卸载 OpenShift Serverless 后,Operator 和 API 自定义资源定义(CRD)会保留在集群中。您可以使用以下步骤删除剩余的 CRD。
移除 Operator 和 API CRD 也会移除所有使用它们定义的资源,包括 Knative 服务。
先决条件
- 您可以访问具有集群管理员权限的 OpenShift Container Platform 帐户。
- 您已卸载了 Knative Serving 并移除了 OpenShift Serverless Operator。
-
安装 OpenShift CLI (
oc
) 。
流程
运行以下命令删除 OpenShift Serverless CRD:
$ oc get crd -oname | grep 'knative.dev' | xargs oc delete