32.3. 升级 MetalLB


请注意,如果您当前运行的是版本 4.10,或 MetalLB Operator 的早期版本,对 4.10 之后的任何版本的自动更新都无法正常工作。从 4.11 或更高版本的 MetalLB Operator 版本升级到更新的版本。例如,从 4.12 升级到 4.13 版本将会平稳进行。

从 4.10 及更早版本的 MetalLB Operator 的升级步骤概述如下:

  1. 删除安装的 MetalLB Operator 版本,如 4.10。确保没有删除命名空间和 metallb 自定义资源。
  2. 使用 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 控制台。

流程

  1. 导航到 Operators Installed Operators 页面。
  2. 搜索 MetalLB Operator。然后点它。
  3. Operator Details 页面右侧,从 Actions 下拉菜单中选择 Uninstall Operator

    此时会显示 Uninstall Operator? 对话框。

  4. 选择 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 命令。

流程

  1. currentCSV 字段中检查订阅的 MetalLB Operator 的当前版本:

    $ oc get subscription metallb-operator -n metallb-system -o yaml | grep currentCSV

    输出示例

      currentCSV: metallb-operator.4.10.0-202207051316

  2. 删除订阅:

    $ oc delete subscription metallb-operator -n metallb-system

    输出示例

    subscription.operators.coreos.com "metallb-operator" deleted

  3. 使用上一步中的 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 或更早的版本支持 OwnNamespaceSingleNamespace 模式。

先决条件

  • 您可以使用 cluster-admin 权限访问 OpenShift Container Platform 集群。
  • 已安装 OpenShift CLI(oc)。

流程

  1. 运行以下命令,列出 metallb-system 命名空间中的 Operator 组:

    $ oc get operatorgroup -n metallb-system

    输出示例

    NAME                   AGE
    metallb-system-7jc66   85m

  2. 运行以下命令,验证与 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

  3. 运行以下命令,编辑 Operator 组并删除 spec 部分下的 targetNamespacesmetallb-system

    $ oc edit n metallb-system

    输出示例

    operatorgroup.operators.coreos.com/metallb-system-7jc66 edited

  4. 运行以下命令,验证 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 角色的用户访问集群。

流程

  1. 验证 metallb-system 命名空间仍然存在:

    $ oc get namespaces | grep metallb-system

    输出示例

    metallb-system                                     Active   31m

  2. 验证 metallb 自定义资源仍然存在:

    $ oc get metallb -n metallb-system

    输出示例

    NAME      AGE
    metallb   33m

  3. 按照"使用 CLI 安装 OperatorHub"中的指导来安装 MetalLB Operator 的最新 4.16 版本。

    注意

    安装最新的 MetalLB Operator 版本 4.16 时,您必须将 Operator 安装到之前安装的同一命名空间。

  4. 验证 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

32.3.5. 其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.