32.3. 升级 MetalLB
请注意,如果您当前运行的是版本 4.10,或 MetalLB Operator 的早期版本,对 4.10 之后的任何版本的自动更新都无法正常工作。从 4.11 或更高版本的 MetalLB Operator 版本升级到更新的版本。例如,从 4.12 升级到 4.13 版本将会平稳进行。
从 4.10 及更早版本的 MetalLB Operator 的升级步骤概述如下:
-
删除安装的 MetalLB Operator 版本,如 4.10。确保没有删除命名空间和
metallb
自定义资源。 - 使用 CLI,在安装之前版本的 MetalLB Operator 的同一命名空间中安装 MetalLB Operator 4.16。
此流程不适用于 MetalLB Operator 的自动 z-stream 更新,这遵循标准的方法。
有关从 4.10 及更早版本升级 MetalLB Operator 的详细信息,请参阅以下指导。作为集群管理员,使用 OpenShift CLI (oc
) 或 Web 控制台删除 MetalLB Operator 来启动升级过程。
32.3.1. 使用 Web 控制台从集群中删除 MetalLB Operator
集群管理员可以使用 Web 控制台从所选命名空间中删除已安装的 Operator。
先决条件
-
使用具有
cluster-admin
权限的账户访问 OpenShift Container Platform 集群 Web 控制台。
流程
-
导航到 Operators
Installed Operators 页面。 - 搜索 MetalLB Operator。然后点它。
在 Operator Details 页面右侧,从 Actions 下拉菜单中选择 Uninstall Operator。
此时会显示 Uninstall Operator? 对话框。
选择 Uninstall 来删除 Operator、Operator 部署和 pod。按照此操作,Operator 将停止运行,不再接收更新。
注意此操作不会删除 Operator 管理的资源,包括自定义资源定义 (CRD) 和自定义资源 (CR) 。Web 控制台和继续运行的集群资源启用的仪表板和导航项可能需要手动清理。要在卸载 Operator 后删除这些,您可能需要手动删除 Operator CRD。
32.3.2. 使用 CLI 从集群中删除 MetalLB Operator
集群管理员可以使用 CLI 从所选命名空间中删除已安装的 Operator。
先决条件
-
使用具有
cluster-admin
权限的账户访问 OpenShift Container Platform 集群。 -
已在工作站上安装
oc
命令。
流程
在
currentCSV
字段中检查订阅的 MetalLB Operator 的当前版本:$ oc get subscription metallb-operator -n metallb-system -o yaml | grep currentCSV
输出示例
currentCSV: metallb-operator.4.10.0-202207051316
删除订阅:
$ oc delete subscription metallb-operator -n metallb-system
输出示例
subscription.operators.coreos.com "metallb-operator" deleted
使用上一步中的
currentCSV
值来删除目标命名空间中相应 Operator 的 CSV:$ oc delete clusterserviceversion metallb-operator.4.10.0-202207051316 -n metallb-system
输出示例
clusterserviceversion.operators.coreos.com "metallb-operator.4.10.0-202207051316" deleted
32.3.3. 编辑 MetalLB Operator Operator 组
当从任何 MetalLB Operator 版本升级到并包括 4.10 升级到 4.11 及之后的版本时,从 Operator 组自定义资源(CR)中删除 spec.targetNamespaces
。无论是否使用 Web 控制台或 CLI 来删除 MetalLB Operator,都必须删除 spec。
MetalLB Operator 版本 4.11 或更高版本只支持 AllNamespaces
安装模式,而 4.10 或更早的版本支持 OwnNamespace
或 SingleNamespace
模式。
先决条件
-
您可以使用
cluster-admin
权限访问 OpenShift Container Platform 集群。 -
已安装 OpenShift CLI(
oc
)。
流程
运行以下命令,列出
metallb-system
命名空间中的 Operator 组:$ oc get operatorgroup -n metallb-system
输出示例
NAME AGE metallb-system-7jc66 85m
运行以下命令,验证与
metallb-system
命名空间关联的 Operator 组 CR 中是否存在spec.targetNamespaces
:$ oc get operatorgroup metallb-system-7jc66 -n metallb-system -o yaml
输出示例
apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: annotations: olm.providedAPIs: "" creationTimestamp: "2023-10-25T09:42:49Z" generateName: metallb-system- generation: 1 name: metallb-system-7jc66 namespace: metallb-system resourceVersion: "25027" uid: f5f644a0-eef8-4e31-a306-e2bbcfaffab3 spec: targetNamespaces: - metallb-system upgradeStrategy: Default status: lastUpdated: "2023-10-25T09:42:49Z" namespaces: - metallb-system
运行以下命令,编辑 Operator 组并删除
spec
部分下的targetNamespaces
和metallb-system
:$ oc edit n metallb-system
输出示例
operatorgroup.operators.coreos.com/metallb-system-7jc66 edited
运行以下命令,验证
spec.targetNamespaces
已从与metallb-system
命名空间关联的 Operator 组自定义资源中删除:$ oc get operatorgroup metallb-system-7jc66 -n metallb-system -o yaml
输出示例
apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: annotations: olm.providedAPIs: "" creationTimestamp: "2023-10-25T09:42:49Z" generateName: metallb-system- generation: 2 name: metallb-system-7jc66 namespace: metallb-system resourceVersion: "61658" uid: f5f644a0-eef8-4e31-a306-e2bbcfaffab3 spec: upgradeStrategy: Default status: lastUpdated: "2023-10-25T14:31:30Z" namespaces: - ""
32.3.4. 升级 MetalLB Operator
先决条件
-
使用具有
cluster-admin
角色的用户访问集群。
流程
验证
metallb-system
命名空间仍然存在:$ oc get namespaces | grep metallb-system
输出示例
metallb-system Active 31m
验证
metallb
自定义资源仍然存在:$ oc get metallb -n metallb-system
输出示例
NAME AGE metallb 33m
按照"使用 CLI 安装 OperatorHub"中的指导来安装 MetalLB Operator 的最新 4.16 版本。
注意安装最新的 MetalLB Operator 版本 4.16 时,您必须将 Operator 安装到之前安装的同一命名空间。
验证 Operator 的升级版本现在是 4.16 版本。
$ oc get csv -n metallb-system
输出示例
NAME DISPLAY VERSION REPLACES PHASE metallb-operator.4.16.0-202207051316 MetalLB Operator 4.16.0-202207051316 Succeeded