更新 OpenShift Container Storage

Red Hat OpenShift Container Storage 4.6

集群和存储管理员的说明

摘要

本文档介绍如何更新 Red Hat OpenShift Container Storage。

第 1 章 OpenShift Container Storage 更新过程概述

您可以在次版本(如 4.5 和 4.6)间升级 Red Hat OpenShift Container Storage 及其组件,也可以在 4.6.0 和 4.6.1 等批处理更新之间升级。

您需要以特定的顺序升级 OpenShift Container Storage 的不同部分。

  1. 根据 OpenShift Container Platform 更新集群文档更新 OpenShift Container Platform。
  2. 更新 OpenShift 容器平台存储.

    1. 使用适合您的设置的流程更新 OpenShift Container Storage operator

    2. 如果使用本地存储:

      1. 更新 Local Storage operator

        如果您不确定,请参阅检查 Local Storage Operator 部署

      2. 为由本地存储支持的集群执行更新后配置更改

        详情请参阅由本地存储支持的集群的 Post-update 配置

更新注意事项

开始之前,请先查阅以下重要注意事项:

  • 红帽建议在 Red Hat OpenShift Container Storage 中使用同一版本的 Red Hat OpenShift Container Platform。

    如需有关 OpenShift Container Platform 和 OpenShift Container Storage 组合的更多信息,请参阅Interoperability Matrix

  • 只有在 Local Storage Operator 版本与 Red Hat OpenShift Container Platform 版本匹配时,才会完全支持 Local Storage Operator。

第 2 章 OpenShift Container Storage 升级频道和发行版本

在 OpenShift Container Platform 4.1 中,红帽引进了升级频道的概念,用于为集群升级推荐适当的版本。通过控制升级的速度,这些升级频道允许您选择升级策略。当 OpenShift Container Storage 在 OpenShift Container Platform 中被部署为 Operator 时,它遵循相同的策略来控制升级的速度,方法是在多个频道中提供修复程序。升级频道与 OpenShift Container Storage 的次要版本关联。例如,OpenShift Container Storage 4.6 升级频道建议从 4.5 升级到 4.6,并在 4.6 中升级。它们不推荐升级到 4.7 或更高版本。此策略可确保管理员可以明确决定升级到下一个 OpenShift Container Storage 次要版本。

升级频道仅控制版本选择,不会影响安装的集群版本; ocs-operator 决定安装 OpenShift Container Storage 的版本。开箱即用,它会始终安装最新的 OpenShift Container Storage 发行版本,维护与 OpenShift Container Platform 的兼容性。因此,在 OpenShift Container Platform 4.6 中,OpenShift Container Storage 4.6 将是可安装的最新版本。

OpenShift Container Storage 升级与 OpenShift Container Platform 升级相关联,以确保与 OpenShift Container Platform 保持兼容性和互操作性。对于 OpenShift Container Storage 4.6,支持 OpenShift Container Platform 4.5、4.6 和 4.7。OpenShift Container Platform 4.5 和 4.7 支持保持与 OpenShift Container Platform 的向后和转发的兼容性。使 OpenShift Container Storage 版本与 OpenShift Container Platform 相同,以便获得该发行版本中的所有功能和增强功能。

OpenShift Container Platform 4.6 提供了以下升级频道:

  • stable-4.6
  • eus-4.6 (仅在运行 4.6 时可用)

    stable-4.6 频道
    新版本正式发布后,与次版本对应的 stable 频道将使用可用于升级的新镜像进行更新。您可以使用 stable-4.6 频道从 OpenShift Container 存储 4.5 和 4.6 中进行升级。
    eus-4.6 频道

    除了稳定频道外,某些 OpenShift Container Platform 次版本还提供延长更新支持(EUS)。具有 Premium 订阅的用户,可以使用 EUS 版本将维护阶段扩展到 14 个月。OpenShift Container Storage 4.6 目前是唯一带有 EUS 的次版本。

    虽然 stable-4.6 和 eus-4.6 频道在 OpenShift Container Platform 4.6 转换为 EUS 之前没有区别,但您可以在 EUS 频道可用后立即切换到 EUS 频道。当 OpenShift Container Platform 4.6 过渡到其生命周期的 EUS 阶段时,stable-4.6 频道不再接收后续的 z-stream 更新。当您升级到只包括在 EUS 频道的版本后,那个集群将不再有次版本升级的能力,直到升级到下一个可用的 EUS 版本为止。下一个计划的 EUS 版本为 4.10,升级到那个版本需要一系列的版本升级,如从 4.6 升级到 4.7,再升级到 4.8,再升级到 4.9,最终升级到 4.10。

    另外,只有在集群运行受支持的 OpenShift Container Platform 4.6 版本时,您才可以切换到 EUS 频道。

    最后,如果您安装了一个专用于 EUS 的 4.6 版本,在升级到 4.10 前,您通常无法升级到最新的次版本。

第 3 章 以内部模式更新 OpenShift Container Storage

使用以下步骤更新以内部模式部署的 OpenShift Container Storage 集群。

3.1. 以内部模式启用 OpenShift Container Storage Operator 的自动更新

使用这个流程在 OpenShift Container Platform 中启用自动更新批准来更新 OpenShift Container Storage Operator。

先决条件

  • Status 卡中的 Persistent Storage 下,确认 OpenShift Container Storage 集群处于健康状态,数据具有弹性。
  • 将 OpenShift Container Platform 集群更新至版本 4.5.X 或 4.6.Y 的最新稳定版本,请参阅更新集群
  • 将 Red Hat OpenShift Container Storage 频道从 stable-4.5 切换到 stable-4.6。有关频道的详情,请参阅 OpenShift Container Storage 升级频道和发行版本

    注意

    只有在您更新次版本(例如从 4.5 更新至 4.6)且不需要在 4.6 的批处理更新之间更新时(例如从 4.6.0 更新至 4.6.1)时,才需要切换频道。

  • 确定包括 Operator Pod 在内的所有 OpenShift Container Storage Pod 都处于 Running 状态,处于 openshift-storage namespace 状态。

    要查看 pod 的状态,请点击 OpenShift Web 控制台左侧窗格中的 WorkloadsPods。从 Project 下拉列表中,选择 openshift-storage

  • 确保您有足够的时间完成 Openshift Container Storage 更新过程,因为更新时间因集群中运行的 OSD 数量而异。

流程

  1. 登录 OpenShift Web 控制台。
  2. OperatorsInstalled Operators
  3. 选择 openshift-storage 项目。
  4. 点 OpenShift Container Storage operator 名称。
  5. 单击 Subscription 选项卡,再单击 Approval 下的 链接。
  6. 选择 Automatic(default) 并点 Save
  7. 根据 Upgrade Status 执行以下操作之一:

    • 升级状态 显示 需要批准

      注意

      如果频道中已检测到新的 OpenShift Container Storage 版本,且更新时已将批准策略从 Manual 改为 Automatic ,则升级状态会显示为需要批准

      1. 单击 Install Plan 链接。
      2. InstallPlan Details 页面中点 Preview Install Plan
      3. 检查安装计划并单击 Approve
      4. 等待 StatusUnknown 更改为 Created
      5. OperatorsInstalled Operators
      6. 选择 openshift-storage 项目。
      7. 等待 Status 更改为 Up to date
    • 升级状态 不需要 批准

      1. 等待更新启动。这可能需要长达 20 分钟。
      2. OperatorsInstalled Operators
      3. 选择 openshift-storage 项目。
      4. 等待 Status 更改为 Up to date

验证步骤

  1. Overview → Persistent Storage 选项卡,在 Status 卡中确认 OpenShift Container Storage 集群有一个绿色勾号标记,表示它处于健康状态。
  2. OperatorsInstalled OperatorsOpenShift Container Storage Operator。在 Storage Cluster 下,验证集群服务状态是否为 Ready

    注意

    从 OpenShift Container Storage 版本 4.5 更新至 4.6 后,Version 字段仍会显示 4.5。这是因为 ocs-operator 不会更新此字段中代表的字符串。

  3. 确定包括 Operator Pod 在内的所有 OpenShift Container Storage Pod 都处于 Running 状态,处于 openshift-storage namespace 状态。

    要查看 pod 的状态,请点击 WorkloadsPods。从 Project 下拉列表中,选择 openshift-storage

  4. 如果验证步骤失败,请联系红帽支持

其它资源

如果您在更新 OpenShift Container Storage 时遇到任何问题,请参阅故障排除指南中的常见所需日志 进行故障排除部分

3.2. 以内部模式手动更新 OpenShift Container Storage Operator

通过向安装计划提供手动批准来更新 OpenShift Container Storage Operator。

先决条件

  • Status 卡中的 Persistent Storage 下,确认 OpenShift Container Storage 集群处于健康状态,数据具有弹性。
  • 将 OpenShift Container Platform 集群更新至版本 4.5.X 或 4.6.Y 的最新稳定版本,请参阅更新集群
  • 将 Red Hat OpenShift Container Storage 频道从 stable-4.5 切换到 stable-4.6。有关频道的详情,请参阅 OpenShift Container Storage 升级频道和发行版本

    注意

    只有在您更新次版本(例如从 4.5 更新至 4.6)且不需要在 4.6 的批处理更新之间更新时(例如从 4.6.0 更新至 4.6.1)时,才需要切换频道。

  • 确定包括 Operator Pod 在内的所有 OpenShift Container Storage Pod 都处于 Running 状态,处于 openshift-storage namespace 状态。

    要查看 pod 的状态,请点击 OpenShift Web 控制台左侧窗格中的 WorkloadsPods。从 Project 下拉列表中,选择 openshift-storage

  • 确保您有足够的时间完成 Openshift Container Storage 更新过程,因为更新时间因集群中运行的 OSD 数量而异。

流程

  1. 登录 OpenShift Web 控制台。
  2. OperatorsInstalled Operators
  3. 选择 openshift-storage 项目。
  4. OpenShift Container Storage operator 名称。
  5. 单击 Subscription 选项卡,再单击 Approval 下的 链接。
  6. 选择 Manual,然后单击 Save
  7. 等待 Upgrade Status 更改为 Upgrading
  8. 如果 Upgrade Status 显示需要批准,请单击 require approval
  9. InstallPlan Details 页面中点 Preview Install Plan
  10. 检查安装计划并单击 Approve
  11. 等待 StatusUnknown 更改为 Created
  12. OperatorsInstalled Operators
  13. 选择 openshift-storage 项目。
  14. 等待 Status 更改为 Up to date

验证步骤

  1. 点击 Overview → Persistent Storage 选项卡,并在 Status 卡中确认 OpenShift Container Storage 集群有一个绿色勾号标记,表示它处于健康状态。
  2. OperatorsInstalled OperatorsOpenShift Container Storage Operator。在 Storage Cluster 下,验证集群服务状态是否为 Ready

    注意

    从 OpenShift Container Storage 版本 4.5 更新至 4.6 后,Version 字段仍会显示 4.5。这是因为 ocs-operator 不会更新此字段中代表的字符串。

  3. 确定包括 Operator Pod 在内的所有 OpenShift Container Storage Pod 都处于 Running 状态,处于 openshift-storage namespace 状态。

    要查看 pod 的状态,请点击 OpenShift Web 控制台左侧窗格中的 WorkloadsPods。从 Project 下拉列表中,选择 openshift-storage

  4. 如果验证步骤失败,请联系红帽支持

其它资源

如果您在更新 OpenShift Container Storage 时遇到任何问题,请参阅故障排除指南中的常见所需日志 进行故障排除部分

第 4 章 以外部模式更新 OpenShift Container Storage

使用以下步骤更新以外部模式部署的 OpenShift Container Storage 集群。

重要

升级 Red Hat OpenShift Container Storage Operator 不会升级外部 Red Hat Ceph Storage 集群。它只升级在 OpenShift Container Platform 上运行的 Red Hat OpenShift Container Storage Services。

若要升级外部红帽 Ceph 存储集群,请联络您的红帽 Ceph 存储管理员。

4.1. 以外部模式为 OpenShift Container Storage Operator 启用自动更新

使用这个流程在 OpenShift Container Platform 中启用自动更新批准来更新 OpenShift Container Storage Operator。

注意

更新 OpenShift Container Storage 不会更新外部 Red Hat Ceph Storage 集群。

先决条件

  • 外部集群需要 Red Hat Ceph Storage 版本 4.2z1 或更高版本。如需更多信息,请参阅有关红帽 Ceph 存储发行版和相应 Ceph 软件包版本的知识库文章
  • 将 OpenShift Container Platform 集群更新至版本 4.5.X 或 4.6.Y 的最新稳定版本,请参阅更新集群
  • 将 Red Hat OpenShift Container Storage 频道从 stable-4.5 切换到 stable-4.6。有关频道的详情,请参阅 OpenShift Container Storage 升级频道和发行版本

    注意

    只有在您更新次版本(例如从 4.5 更新至 4.6)且不需要在 4.6 的批处理更新之间更新时(例如从 4.6.0 更新至 4.6.1)时,才需要切换频道。

  • 确定包括 Operator Pod 在内的所有 OpenShift Container Storage Pod 都处于 Running 状态,处于 openshift-storage namespace 状态。

    要查看 pod 的状态,请点击 OpenShift Web 控制台左侧窗格中的 Workloads → Pods。从 Project 下拉列表中,选择 openshift-storage

  • Status 卡中的 Persistent Storage 下,确认 OpenShift Container Storage 集群处于健康状态
  • 确保有足够的时间完成 Openshift Container Storage 更新过程。

流程

  1. 登录 OpenShift Web 控制台。
  2. OperatorsInstalled Operators
  3. 选择 openshift-storage 项目。
  4. 点 OpenShift Container Storage operator 名称。
  5. 单击 Subscription 选项卡,再单击 Approval 下的 链接。
  6. 选择 Automatic(default) 并点 Save
  7. 根据 Upgrade Status 执行以下操作之一:

    • 升级状态显示 需要批准

      注意

      如果频道中已检测到新的 OpenShift Container Storage 版本,且更新时已将批准策略从 Manual 改为 Automatic ,则升级状态会显示为需要批准

      1. 单击 Install Plan 链接。
      2. InstallPlan Details 页面中点 Preview Install Plan
      3. 检查安装计划并单击 Approve
      4. 等待 StatusUnknown 更改为 Created
      5. OperatorsInstalled Operators
      6. 选择 openshift-storage 项目。
      7. 等待 Status 更改为 Up to date
    • 升级状态不需要 批准

      1. 等待更新启动。这可能需要长达 20 分钟。
      2. OperatorsInstalled Operators
      3. 选择 openshift-storage 项目。
      4. 等待 Status 更改为 Up to date

验证步骤

  1. 点击 Overview → Persistent Storage 选项卡,并在 Status 卡中确认 OpenShift Container Storage 集群有一个绿色勾号标记,表示它处于健康状态。
  2. OperatorsInstalled OperatorsOpenShift Container Storage Operator。在 Storage Cluster 下,验证 Ready 中的集群服务状态。

    注意

    从 OpenShift Container Storage 版本 4.5 更新至 4.6 后,Version 字段仍会显示 4.5。这是因为 ocs-operator 不会更新此字段中代表的字符串。

  3. 确保所有 OpenShift Container Storage Pod(包括 Operator pod)在 openshift-storage 命名空间中处于 Running 状态。

    要查看 pod 的状态,请点击 OpenShift Web 控制台左侧窗格中的 Workloads → Pods。从 Project 下拉列表中,选择 openshift-storage

  4. 如果验证步骤失败,请联系红帽支持

后续步骤

  1. 启用监控来查看对象网关(RGW)指标。请参阅为对象存储仪表板启用监控

4.2. 以外部模式手动更新 OpenShift Container Storage Operator

通过向安装计划提供手动批准来更新 OpenShift Container Storage Operator。

注意

更新 OpenShift Container Storage 不会更新外部 Red Hat Ceph Storage 集群。

先决条件

  • 外部集群需要 Red Hat Ceph Storage 版本 4.2z1 或更高版本。如需更多信息,请参阅有关红帽 Ceph 存储发行版和相应 Ceph 软件包版本的知识库文章
  • 将 OpenShift Container Platform 集群更新至版本 4.5.X 或 4.6.Y 的最新稳定版本,请参阅更新集群
  • 将 Red Hat OpenShift Container Storage 频道从 stable-4.5 切换到 stable-4.6。有关频道的详情,请参阅 OpenShift Container Storage 升级频道和发行版本

    注意

    只有在您更新次版本(例如从 4.5 更新至 4.6)且不需要在 4.6 的批处理更新之间更新时(例如从 4.6.0 更新至 4.6.1)时,才需要切换频道。

  • 确保所有 OpenShift Container Storage Pod(包括 Operator pod)在 openshift-storage 命名空间中处于 Running 状态。

    要查看 pod 的状态,请点击 OpenShift Web 控制台左侧窗格中的 WorkloadsPods。从 Project 下拉列表中,选择 openshift-storage

  • Status 卡中的 Persistent Storage 下,确认 OpenShift Container Storage 集群处于健康状态。
  • 确保有足够的时间完成 Openshift Container Storage 更新过程。

流程

  1. 登录 OpenShift Web 控制台。
  2. OperatorsInstalled Operators
  3. 选择 openshift-storage 项目。
  4. OpenShift Container Storage operator 名称。
  5. 单击 Subscription 选项卡,再单击 Approval 下的 链接。
  6. 选择 Manual,然后单击 Save
  7. 等待 Upgrade Status 更改为 Upgrading
  8. 如果 Upgrade Status 显示需要批准,请单击 require approval
  9. InstallPlan Details 页面中点 Preview Install Plan
  10. 检查安装计划并单击 Approve
  11. 等待 StatusUnknown 更改为 Created
  12. OperatorsInstalled Operators
  13. 选择 openshift-storage 项目。
  14. 等待 Status 更改为 Up to date

验证步骤

  1. 点击 Overview → Persistent Storage 选项卡,并在 Status 卡中确认 OpenShift Container Storage 集群有一个绿色勾号标记,表示它处于健康状态。
  2. OperatorsInstalled OperatorsOpenShift Container Storage Operator。在 Storage Cluster 下,验证 Ready 中的集群服务状态。
  3. 确保所有 OpenShift Container Storage Pod(包括 Operator pod)在 openshift-storage 命名空间中处于 Running 状态。

    要查看 pod 的状态,请点击 OpenShift Web 控制台左侧窗格中的 WorkloadsPods。从 Project 下拉列表中,选择 openshift-storage

    注意

    从 OpenShift Container Storage 版本 4.5 更新至 4.6 后,Version 字段仍会显示 4.5。这是因为 ocs-operator 不会更新此字段中代表的字符串。

  4. 如果验证步骤失败,请联系红帽支持

后续步骤

  1. 启用监控来查看对象网关(RGW)指标。请参阅为对象存储仪表板启用监控

4.3. 为 Object Service 仪表板启用监控

要在 OpenShift Container Storage 4.6 中的 Object Service 仪表板中查看对象网关(RGW)指标,您必须启用监控。如需有关对象服务仪表板的更多信息,请参阅 Object Service 仪表板中的对象服务仪表板和指标

先决条件

流程

  1. 下载用于更新和提取 Ceph 集群详细信息的 python 脚本。

    1. 点 OpenShift Web 控制台上的 Operators Installed Operators 查看安装的 Operator。
    2. Installed Operators 页面中,点击已安装的 OpenShift Container Storage Operator 的 Provided APIs 列中的 Storage Cluster 链接。
    3. Create Storage Cluster
    4. 选择 Mode 作为 External
    5. Connect to external cluster 部分中,单击 Download Script 链接,以下载用于提取 Ceph 集群详细信息的 python 脚本。
    6. 单击 Cancel,因为存储集群已创建好。
  2. 更新 Red Hat Ceph Storage 集群中 OpenShift Container Storage 客户端的权限上限。

    1. 联系您的红帽 Ceph 存储管理员,在红帽 Ceph 存储客户端节点上运行下载的 python 脚本。
    2. 运行脚本:

      # python3 ceph-external-cluster-details-exporter.py --upgrade --run-as-user=<client_name_used_for_OCS_4.5_install>

      --run-as-user 提供 OpenShift Container Storage 4.5 部署期间使用的客户端名称。如果在 OpenShift Container Storage 4.5 部署过程中没有使用这个选项,则会设置默认客户端名称 client.healthchecker

      用户的更新权限被设置为:

      caps: [mgr] allow command config
      caps: [mon] allow r, allow command quorum_status, allow command version
      caps: [osd] allow rwx pool=default.rgw.meta, allow r pool=.rgw.root, allow rw pool=default.rgw.control, allow rx pool=default.rgw.log, allow x pool=default.rgw.buckets.index
  3. 要启用对 Object Service Dashboard 的监控,监控信息必须添加到 openshift-storage 命名空间中的外部 secret rook-ceph-external-cluster-details 中。可以通过两种方式更新 secret:

    • 要使用 CLI 更新机密,请参阅本红帽知识库文章
    • 要从 OpenShift Web 控制台更新机密,请按照以下步骤操作:

      1. 运行在第 1v 步中下载的脚本:

        # python3 ceph-external-cluster-details-exporter.py --rbd-data-pool-name <rbd block pool name> --monitoring-endpoint <ceph mgr prometheus exporter endpoint> --monitoring-endpoint-port <ceph mgr prometheus exporter port> --run-as-user <client_name_used_for_OCS_4.5_install>  [optional arguments]

        monitoring-endpoint 是可从 OpenShift Container Platform 集群访问的有效 ceph-mgr 的 IP 地址。

        monitoring-endpoint-port 是与 --monitoring-endpoint 指定 ceph-mgr Prometheus 导出器关联的端口。OpenShift Container Storage 4.6 仅支持端口 9283。

        注意

        确定除 monitoring-endpointmonitoring-endpoint-port 外的所有参数,包括可选参数,都是在以外部模式部署 OpenShift Container Storage 4.5 期间所用的相同参数。

      2. 保存上一步中运行 脚本后生成的 JSON 输出。输出示例:

        [{"name": "rook-ceph-mon-endpoints", "kind": "ConfigMap", "data": {"data": "xxx.xxx.xxx.xxx:xxxx", "maxMonId": "0", "mapping": "{}"}}, {"name": "rook-ceph-mon", "kind": "Secret", "data": {"admin-secret": "admin-secret", "fsid": "<fs-id>", "mon-secret": "mon-secret"}}, {"name": "rook-ceph-operator-creds", "kind": "Secret", "data": {"userID": "client.healthchecker", "userKey": "<user-key>"}}, {"name": "rook-csi-rbd-node", "kind": "Secret", "data": {"userID": "csi-rbd-node", "userKey": "<user-key>"}}, {"name": "ceph-rbd", "kind": "StorageClass", "data": {"pool": "ceph-rbd"}}, {"name": "monitoring-endpoint", "kind": "CephCluster", "data": {"MonitoringEndpoint": "xxx.xxx.xxx.xxx", "MonitoringPort": "xxxx"}}, {"name": "rook-csi-rbd-provisioner", "kind": "Secret", "data": {"userID": "csi-rbd-provisioner", "userKey": "<user-key>"}}, {"name": "rook-csi-cephfs-provisioner", "kind": "Secret", "data": {"adminID": "csi-cephfs-provisioner", "adminKey": "<admin-key>"}}, {"name": "rook-csi-cephfs-node", "kind": "Secret", "data": {"adminID": "csi-cephfs-node", "adminKey": "<admin-key>"}}, {"name": "cephfs", "kind": "StorageClass", "data": {"fsName": "cephfs", "pool": "cephfs_data"}}, {"name": "ceph-rgw", "kind": "StorageClass", "data": {"endpoint": "xxx.xxx.xxx.xxx:xxxx", "poolPrefix": "default"}}]
      3. 在 OpenShift Container Platform Web 控制台中,在 openshift-storage 命名空间下进入 WorkloadsSecrets 并点击 rook-ceph-external-cluster-details

        Example rook-ceph-external-cluster-details page
      4. 从操作下拉菜单中 ,单击编辑机密
      5. Edit Key/Value Secret 页面上,单击 Value 文本框旁边的 Browse,再上传之前保存的 JSON 文件。

        Example Edit Key/Value Secret page
      6. Save

验证步骤

  1. 点击 OpenShift Web 控制台左侧窗格中的 HomeOverview,然后点击 Object Service 选项卡。
  2. Status 卡中,验证对象服务是否显示绿色勾号图标,如下图所示:

    Example of Object Service status verified
  3. Performance 卡中,从下拉菜单中选择 Object Gateway(RGW) 来查看指标:

    Example Object Gateway (RGW) metrics
  4. 点击 OverviewPersistent Storage 选项卡,并在 Status 卡中确认 OpenShift Container Storage 集群有一个绿色勾号标记,表示它处于健康状态。

第 5 章 更新后配置更改

在某些情况下,更新后还需要额外的配置步骤,以确保所有功能都能按预期工作。

5.1. 由本地存储支持的集群更新后配置

在 Red Hat OpenShift Container Platform 4.6 及之后,Local Storage operator 提供了新的自定义资源类型来管理本地存储:

  • LocalVolumeDiscovery
  • LocalVolumeSet

这些资源类型不会作为之前版本更新的一部分自动处理,必须手动创建。

5.1.1. 使用命令行创建 LocalVolumeDiscovery 自定义资源

创建 LocalVolumeDiscovery 自定义资源,以确保设备管理用户界面可以发现本地设备的状态,并提供有关集群节点中可用设备的信息。

先决条件

  • 对 OpenShift Container Platform 集群的管理访问权限。

流程

  1. 更改到安装有 Local Storage operator 的项目。

    $ oc project local-storage-project

    local-storage-project 替换为 Local Storage 项目的名称。

    在版本 4.5 及更早版本中,默认本地存储项目的名称为 local-storage。在版本 4.6 及更新的版本中,默认本地存储项目的名称为 openshift-local-storage

  2. 定义 LocalVolumeDiscovery 自定义资源。

    例如,在 local-volume-discovery.yaml 文件中定义以下内容。

    apiVersion: local.storage.openshift.io/v1alpha1
    kind: LocalVolumeDiscovery
    metadata:
      name: auto-discover-devices
    spec:
      nodeSelector:
        nodeSelectorTerms:
          - matchExpressions:
              - key: kubernetes.io/hostname
                operator: In
                values:
                  - worker1.example.com
                  - worker2.example.com
                  - worker3.example.com
  3. 创建 LocalVolumeDiscovery 自定义资源。

    $ oc create -f local-volume-discovery.yaml

验证步骤

  1. 登录 OpenShift Web 控制台。
  2. ComputeNode,然后点击节点的名称。
  3. 点击 Disks 选项卡,检查您是否可以看到该节点上可用的设备。

5.1.2. 使用命令行创建 LocalVolumeSet 自定义资源

创建 LocalVolumeSet 自定义资源,根据您指定的条件自动将某些存储设备置备为持久性卷。在任何符合 nodeSelector 条件的节点中,会为符合 deviceInclusionSpec 条件的任何设备创建持久性卷。

先决条件

  • 对 OpenShift Container Platform 集群的管理访问权限。

流程

  1. local-volume-set.yaml 文件中定义 LocalVolumeSet 自定义资源。

    apiVersion: local.storage.openshift.io/v1alpha1
    kind: LocalVolumeSet
    metadata:
      name: localblock
    spec:
      nodeSelector:
        nodeSelectorTerms:
          - matchExpressions:
              - key: kubernetes.io/hostname
                operator: In
                values:
                  - worker1.example.com
                  - worker2.example.com
                  - worker3.example.com
      storageClassName: localblock
      volumeMode: Block
      maxDeviceCount: 10 # optional, limit devices provisioned per node
      deviceInclusionSpec:
        deviceTypes: # list of types to allow
          - disk
          - part # omit this to use only whole devices
        deviceMechanicalProperty:
          - NonRotational
        minSize: 100Gi # optional, minimum size of device to allow
        maxSize: 100Ti # optional, maximum size of device to allow
        models: # (optional) list of models to allow
          - SAMSUNG
          - Crucial_CT525MX3
        vendors: # (optional) list of device vendors to allow
          - ATA
          - ST2000LM

    以上定义从 worker1worker2worker3 节点选择特定类型的非轮转设备中的整个磁盘或分区,这些设备的大小为 100 GB 到 100 TB。localblock 存储类被创建,持久性卷是从发现的设备中置备的。

    重要

    minSize 选择一个适当的值,以确保没有选择系统分区。

  2. 创建 LocalVolumeSet

    $ oc create -f local-volume-set.yaml

验证步骤

  1. 使用以下命令跟踪与 deviceInclusionSpec 匹配设备的持久性卷置备。调配持久卷可能需要几分钟时间。

    $ oc describe localvolumeset localblock
    [...]
    Status:
      Conditions:
        Last Transition Time:          2020-11-17T05:03:32Z
        Message:                       DiskMaker: Available, LocalProvisioner: Available
        Status:                        True
        Type:                          DaemonSetsAvailable
        Last Transition Time:          2020-11-17T05:03:34Z
        Message:                       Operator reconciled successfully.
        Status:                        True
        Type:                          Available
      Observed Generation:             1
      Total Provisioned Device Count: 4
    Events:
    Type    Reason      Age          From                Message
    ----    ------      ----         ----                -------
    Normal  Discovered  2m30s (x4    localvolumeset-     ip-10-0-147-124.us-east-
            NewDevice   over 2m30s)  symlink-controller  2.compute.internal -
                                                         found possible matching
                                                         disk, waiting 1m to claim
    Normal  FoundMatch  89s (x4      localvolumeset-     ip-10-0-147-124.us-east-
            ingDisk     over 89s)    symlink-controller  2.compute.internal -
                                                         symlinking matching disk
  2. 验证调配的持久卷的状态。

    $ oc get pv
                         ACCESS   RECLAIM             STORAGE
    NAME       CAPACITY  MODES    POLICY   STATUS     CLASS       AGE
    local-pv-  500Gi     RWO      Delete   Available  localblock  7m48s
    3584969f
    local-pv-  500Gi     RWO      Delete   Available  localblock  7m48s
    3aee84fa
    local-pv-  500Gi     RWO      Delete   Available  localblock  7m48s
    644d09ac
    local-pv-  500Gi     RWO      Delete   Available  localblock  7m48s
    c73cee1

5.1.3. 添加注解

从以前的版本升级到 OpenShift Container Storage 4.6 时,使用此流程为存储集群添加注解,以通过用户界面启用替换失败存储设备。

流程

  1. 登录 OpenShift Container Platform Web 控制台。
  2. HomeSearch
  3. Resources 中搜索 StorageCluster 并点击它。
  4. ocs-storagecluster 旁边,点 Action 菜单 (⋮)Edit annotations
  5. 分别为 KEY 和VALUE 添加 cluster.ocs.openshift.io/local-devices=truetrue
  6. Save