在 VMware vSphere 上部署 OpenShift Container Storage
如何在 Red Hat OpenShift Container Platform VMware vSphere 集群上安装 OpenShift Container Storage
摘要
前言
Red Hat OpenShift Container Storage 4.6 支持在连接或断开连接的环境中的现有 Red Hat OpenShift Container Platform (RHOCP) vSphere 集群上部署,以及代理环境的开箱即用支持。
VMware vSphere 支持内部和外部 Openshift Container Storage 集群。如需有关部署要求的更多信息,请参阅规划部署。
要部署 OpenShift Container Storage,请遵循适合您的环境的部署过程:
内部模式
- 外部模式
第 1 章 使用动态存储设备进行部署
使用 VMware vSphere 提供的动态存储设备(磁盘格式:精简)在 OpenShift Container Platform 上部署 OpenShift Container Storage 为您提供了创建内部集群资源的选项。这将会在内部置备基础服务,这有助于为应用提供额外的存储类。
VMware vSphere 支持内部和外部 Openshift Container Storage 集群。如需有关部署要求的更多信息,请参阅规划部署。
按照以下步骤进行部署:
对于用户置备的基础架构 (UPI) 中的基于 Red Hat Enterprise Linux 的主机,启用容器对底层文件系统的访问。按照在基于 Red Hat Enterprise Linux 的节点上为容器启用文件系统访问的说明进行操作。
注意对于 Red Hat Enterprise Linux CoreOS (RHCOS) 可以跳过此步骤。
- 安装 Red Hat OpenShift Container Storage Operator。
- 创建 OpenShift Container Storage Cluster Service。
1.1. 为基于 Red Hat Enterprise Linux 的节点上的容器启用文件系统访问
在用户置备的基础架构 (UPI) 的 Red Hat Enterprise Linux 基础上使用 worker 节点部署 OpenShift Container Storage 不会自动提供对底层 Ceph 文件系统的容器访问。
对于基于 Red Hat Enterprise Linux CoreOS 的主机,不需要这个过程。
流程
在集群的每个节点中执行以下步骤。
- 登录基于 Red Hat Enterprise Linux 的节点并打开一个终端。
验证节点有权访问 rhel-7-server-extras-rpms 存储库。
# subscription-manager repos --list-enabled | grep rhel-7-server
如果您没有在输出中看到
rhel-7-server-rpms
和rhel-7-server-extras-rpms
,或者没有输出,请运行以下命令来启用相关的存储库:# subscription-manager repos --enable=rhel-7-server-rpms # subscription-manager repos --enable=rhel-7-server-extras-rpms
安装所需的软件包。
# yum install -y policycoreutils container-selinux
在 SELinux 中永久启用 Ceph 文件系统的容器使用。
# setsebool -P container_use_cephfs on
1.2. 安装 Red Hat OpenShift Container Storage Operator
您可以使用 Red Hat OpenShift Container Platform Operator Hub 安装 Red Hat OpenShift Container Storage Operator。有关硬件和软件要求的详情,请参阅规划您的部署。
先决条件
- 您必须登录 OpenShift Container Platform (RHOCP) 集群。
- RHOCP 集群中必须至少有三个工作程序节点。
当您需要覆盖 OpenShift Container Storage 的集群范围默认节点选择器时,您可以在命令行界面中使用以下命令为
openshift-storage
命名空间指定空白节点选择器:$ oc annotate namespace openshift-storage openshift.io/node-selector=
-
将节点作为
infra
污点,以确保只在该节点上调度 Red Hat OpenShift Container Storage 资源。这有助于您节省订阅成本。如需更多信息,请参阅管理和分配存储资源指南中的如何将专用 worker 节点用于 Red Hat OpenShift Container Storage 一章。
流程
- 在 OpenShift Web 控制台左侧窗格中,点 Operators → OperatorHub。
- 使用 Filter by keyword 文本框或过滤器列表从 operator 列表中搜索 OpenShift Container Storage。
- 点 OpenShift Container Storage。
- 在 OpenShift Container Storage operator 页面中,点 Install。
在 Install Operator 页面中,确保默认选择以下选项:
- 将频道更新为 stable-4.6
- 安装模式为 A specific namespace on the cluster
-
Installed Namespace 为 Operator recommended namespace openshift-storage。如果 Namespace
openshift-storage
不存在,它会在 Operator 安装过程中创建。 - 选择 Enable operator recommended cluster monitoring on this namespace 复选框,因为集群监控需要它。
将 Approval Strategy 选为 Automatic 或 Manual。默认情况下,批准策略设置为 Automatic。
Approval Strategy 为 Automatic.
注意当您将 Approval Strategy 选为 Automatic 时,在全新安装过程或升级到最新版本的 OpenShift Container Storage 时不需要批准。
- 点 Install
- 等待安装启动。这可能需要长达 20 分钟。
- 点 Operators → Installed Operators
-
确保 Project 是
openshift-storage
。默认情况下,Project 为openshift-storage
。 - 等待 OpenShift Container Storage 的 Status 变为 Succeeded。
Approval Strategy 为 Manual.
注意当您将 Approval Strategy 选为 Manual 时,在全新安装或升级到最新版本的 OpenShift Container Storage 过程中需要批准。
- 点 Install
在 Manual approval required 页面中,您可以点 Approve 或 View Installed Operators in namespace openshift-storage 来安装 Operator。
重要在单击任一选项前,请在 Manual approval required 页面中等待几分钟,直到安装计划加载到窗口中。
重要如果您选择单击 Approve,您必须先检查安装计划,然后再继续。
如果您单击 Approve。
- 等待几分钟,以便安装 OpenShift Container Storage Operator。
- 在 Installed operator - ready for use 页面上,点 View Operator。
-
确保 Project 是
openshift-storage
。默认情况下,Project 为openshift-storage
。 - 点 Operators → Installed Operators
- 等待 OpenShift Container Storage 的 Status 变为 Succeeded。
如果您点 View Installed Operators in namespace openshift-storage。
- 在 Installed Operators 页面中,点 ocs-operator。
- 在 Subscription Details 页面中,点 Install Plan 链接。
- 在 InstallPlan Details 页面中点 Preview Install Plan。
- 检查安装计划并点 Approve。
- 等待 Components 的 Status 从 Unknown 变为 Created 或 Present。
- 点 Operators → Installed Operators
-
确保 Project 是
openshift-storage
。默认情况下,Project 为openshift-storage
。 - 等待 OpenShift Container Storage 的 Status 变为 Succeeded。
验证步骤
- 验证 OpenShift Container Storage Operator 是否显示绿色勾号,指示安装成功。
-
点 View Installed Operators in namespace openshift-storage 链接,验证 OpenShift Container Storage Operator 是否在 Installed Operators 仪表板上显示的 Status 为
Succeeded
。
1.3. 以内部模式创建 OpenShift Container Storage Cluster Service
安装 OpenShift Container Storage operator 后,请使用此流程创建 OpenShift Container Storage Cluster Service。
先决条件
- OpenShift Container Storage Operator 必须从 Operator Hub 安装。如需更多信息,请参阅使用 Operator Hub 安装 OpenShift Container Storage Operator。
-
对于 VMware 上的虚拟机,请确保将
disk.EnableUUID
选项设置为TRUE
。您需要具有 vCenter 帐户特权才能配置虚拟机。如需更多信息,请参阅所需的 vCenter 帐户权限。要设置disk.EnableUUID
选项,请使用 Customize hardware 选项卡中的 VM Options 的 Advanced 选项。如需更多信息,请参阅在 vSphere 中创建 Red Hat Enterprise Linux CoreOS (RHCOS) 机器。
流程
点 Operators → Installed Operators 查看所有已安装的 Operator。
确保所选的 Project 为 openshift-storage。
图 1.1. OpenShift Container Storage Operator 页
点 OpenShift Container Storage。
图 1.2. OpenShift Container Storage 的详情标签页
单击 Storage Cluster 的 Create Instance 链接。
图 1.3. 创建存储集群页面
在 Create Storage Cluster 页面中,确保选择了以下选项:
-
在 Select Mode 部分中,默认选择
Internal
模式。 -
VMware 的存储类 默认设置为
thin
。 从下拉列表中选择 OpenShift Container Storage Service Capacity。
注意选择初始存储容量后,集群扩展将使用所选的可用容量(原始存储的 3 次)执行。
-
(可选) 在 Encryption 部分中,将切换设置为
Enabled
以在集群中启用数据加密。 在 Nodes 部分中,从可用列表中选择至少三个 worker 节点,以使用 OpenShift Container Storage 服务。
建议 worker 节点分散到三个不同的物理节点、机架或故障域中以实现高可用性。
注意要查找集群中的特定 worker 节点,您可以根据 Name 或 Label 过滤节点。
- name 允许您按节点名称搜索
- 通过选择预定义的标签,可以通过标签进行搜索
- 使用 vCenter 反关联性将 OpenShift Container Storage 机架标签与数据中心中的物理节点和机架保持对齐,以避免在同一物理机箱上调度两个 worker 节点。
如果选择的节点与一个聚合的 30 个 CPU 和 72 GiB RAM 的要求不匹配,则会部署一个最小的集群。如需最低起始节点要求,请参阅规划指南中的资源要求部分。
-
在 Select Mode 部分中,默认选择
点击 Create。
Create 按钮只有在您选择三个节点后才会启用。将创建一个具有三个存储设备的新存储群集,每个选择的节点一个。默认配置使用 3 的复制因子。
验证步骤
验证已安装存储集群的最后一个 Status 显示为
Phase: Ready
,并带有绿色勾号标记。- 点 Operators → Installed Operators → Storage Cluster 链接来查看存储集群安装状态。
- 另外,当使用 Operator Details 选项卡时,您可以点击 Storage Cluster 选项卡查看状态。
- 要验证 OpenShift Container Storage 的所有组件是否已成功安装,请参阅验证 OpenShift Container Storage 安装。
第 2 章 使用本地存储设备部署
使用本地存储设备在 OpenShift Container Platform 上部署 OpenShift Container Storage 可让您选择创建内部集群资源。这将会在内部置备基础服务,这有助于为应用提供额外的存储类。
使用本节在已安装 OpenShift Container Platform 的 VMware 上部署 OpenShift Container Storage。
2.1. 使用内部本地存储部署概述
要使用本地存储部署 Red Hat OpenShift Container Storage,请按照以下步骤执行:
- 了解 使用本地存储设备安装 OpenShift Container Storage 的要求。
对于基于红帽企业 Linux 的主机,为基于 Red Hat Enterprise Linux 的节点上的容器启用文件系统访问。
注意对于 Red Hat Enterprise Linux CoreOS (RHCOS) 可以跳过此步骤。
- 安装 Red Hat OpenShift Container Storage Operator。
- 安装 Local Storage Operator。
- 在 VMware 上创建 OpenShift Container Storage 集群。
2.2. 使用本地存储设备安装 OpenShift Container Storage 的要求
- 在部署 OpenShift Container Storage 4.6 之前,您必须升级到 OpenShift Container Platform 4.6 的最新版本。如需更多信息,请参阅更新 OpenShift Container Platform 集群指南。
- Local Storage Operator 版本必须与 Red Hat OpenShift Container Platform 版本匹配,以便 Red Hat OpenShift Container Storage 完全支持 Local Storage Operator。当 Red Hat OpenShift Container Platform 升级时,Local Storage Operator 不会被升级。
集群中必须至少有三个 OpenShift Container Platform worker 节点,每个节点都有本地附加的存储设备。
- 三个所选节点的每个节点必须至少有一个原始块设备可供 OpenShift Container Storage 使用。
- 您使用的设备必须为空;磁盘不得包含物理卷 (PV),卷组 (VG) 或逻辑卷 (LV) 不能保留在磁盘上。
- 如需最低起始节点要求,请参阅规划指南中的资源要求部分。
2.3. 为基于 Red Hat Enterprise Linux 的节点上的容器启用文件系统访问
在用户置备的基础架构 (UPI) 的 Red Hat Enterprise Linux 基础上使用 worker 节点部署 OpenShift Container Storage 不会自动提供对底层 Ceph 文件系统的容器访问。
对于基于 Red Hat Enterprise Linux CoreOS 的主机,不需要这个过程。
流程
在集群的每个节点中执行以下步骤。
- 登录基于 Red Hat Enterprise Linux 的节点并打开一个终端。
验证节点有权访问 rhel-7-server-extras-rpms 存储库。
# subscription-manager repos --list-enabled | grep rhel-7-server
如果您没有在输出中看到
rhel-7-server-rpms
和rhel-7-server-extras-rpms
,或者没有输出,请运行以下命令来启用相关的存储库:# subscription-manager repos --enable=rhel-7-server-rpms # subscription-manager repos --enable=rhel-7-server-extras-rpms
安装所需的软件包。
# yum install -y policycoreutils container-selinux
在 SELinux 中永久启用 Ceph 文件系统的容器使用。
# setsebool -P container_use_cephfs on
2.4. 安装 Red Hat OpenShift Container Storage Operator
您可以使用 Red Hat OpenShift Container Platform Operator Hub 安装 Red Hat OpenShift Container Storage Operator。有关硬件和软件要求的详情,请参阅规划您的部署。
先决条件
- 您必须登录 OpenShift Container Platform (RHOCP) 集群。
- RHOCP 集群中必须至少有三个工作程序节点。
当您需要覆盖 OpenShift Container Storage 的集群范围默认节点选择器时,您可以在命令行界面中使用以下命令为
openshift-storage
命名空间指定空白节点选择器:$ oc annotate namespace openshift-storage openshift.io/node-selector=
-
将节点作为
infra
污点,以确保只在该节点上调度 Red Hat OpenShift Container Storage 资源。这有助于您节省订阅成本。如需更多信息,请参阅管理和分配存储资源指南中的如何将专用 worker 节点用于 Red Hat OpenShift Container Storage 一章。
流程
- 在 OpenShift Web 控制台左侧窗格中,点 Operators → OperatorHub。
- 使用 Filter by keyword 文本框或过滤器列表从 operator 列表中搜索 OpenShift Container Storage。
- 点 OpenShift Container Storage。
- 在 OpenShift Container Storage operator 页面中,点 Install。
在 Install Operator 页面中,确保默认选择以下选项:
- 将频道更新为 stable-4.6
- 安装模式为 A specific namespace on the cluster
-
Installed Namespace 为 Operator recommended namespace openshift-storage。如果 Namespace
openshift-storage
不存在,它会在 Operator 安装过程中创建。 - 选择 Enable operator recommended cluster monitoring on this namespace 复选框,因为集群监控需要它。
将 Approval Strategy 选为 Automatic 或 Manual。默认情况下,批准策略设置为 Automatic。
Approval Strategy 为 Automatic.
注意当您将 Approval Strategy 选为 Automatic 时,在全新安装过程或升级到最新版本的 OpenShift Container Storage 时不需要批准。
- 点 Install
- 等待安装启动。这可能需要长达 20 分钟。
- 点 Operators → Installed Operators
-
确保 Project 是
openshift-storage
。默认情况下,Project 为openshift-storage
。 - 等待 OpenShift Container Storage 的 Status 变为 Succeeded。
Approval Strategy 为 Manual.
注意当您将 Approval Strategy 选为 Manual 时,在全新安装或升级到最新版本的 OpenShift Container Storage 过程中需要批准。
- 点 Install
在 Manual approval required 页面中,您可以点 Approve 或 View Installed Operators in namespace openshift-storage 来安装 Operator。
重要在单击任一选项前,请在 Manual approval required 页面中等待几分钟,直到安装计划加载到窗口中。
重要如果您选择单击 Approve,您必须先检查安装计划,然后再继续。
如果您单击 Approve。
- 等待几分钟,以便安装 OpenShift Container Storage Operator。
- 在 Installed operator - ready for use 页面上,点 View Operator。
-
确保 Project 是
openshift-storage
。默认情况下,Project 为openshift-storage
。 - 点 Operators → Installed Operators
- 等待 OpenShift Container Storage 的 Status 变为 Succeeded。
如果您点 View Installed Operators in namespace openshift-storage。
- 在 Installed Operators 页面中,点 ocs-operator。
- 在 Subscription Details 页面中,点 Install Plan 链接。
- 在 InstallPlan Details 页面中点 Preview Install Plan。
- 检查安装计划并点 Approve。
- 等待 Components 的 Status 从 Unknown 变为 Created 或 Present。
- 点 Operators → Installed Operators
-
确保 Project 是
openshift-storage
。默认情况下,Project 为openshift-storage
。 - 等待 OpenShift Container Storage 的 Status 变为 Succeeded。
验证步骤
- 验证 OpenShift Container Storage Operator 是否显示绿色勾号,指示安装成功。
-
点 View Installed Operators in namespace openshift-storage 链接,验证 OpenShift Container Storage Operator 是否在 Installed Operators 仪表板上显示的 Status 为
Succeeded
。
2.5. 安装 Local Storage Operator
在本地存储设备上创建 OpenShift Container Storage 集群前,使用此流程从 Operator Hub 安装 Local Storage Operator。
流程
- 登录 OpenShift Web 控制台。
- 点 Operators → OperatorHub。
- 从 operator 列表中搜索 Local Storage Operator,再单击它。
点击 Install。
图 2.1. 安装 Operator 页面
在 Install Operator 页面中设置以下选项:
- 把频道更新为 4.6
- 安装模式为 A specific namespace on the cluster
- Installed Namespace 为 Operator recommended namespace openshift-local-storage。
- 批准策略作为 Automatic
- 点击 Install。
-
验证 Local Storage Operator 是否显示 Status 为
Succeeded
。
2.6. 在 VMware 上创建 OpenShift Container Storage 集群
当存储类不存在时,使用此流程在 VMware 基础架构上创建存储集群。
如果您已经创建了存储类,可以直接创建存储集群,如在 VMware 上创建存储集群所述。
VMware 支持以下三种类型的本地存储:
- 虚拟机磁盘 (VMDK)
- 原始设备映射 (RDM)
- VMDirectPath I/O
先决条件
- 确保满足使用本地存储设备安装 OpenShift Container Storage 的要求部分中的所有要求。
- 您必须至少有三个 worker 节点,其存储类型和大小与每个节点相同,才能在 VMware 上使用本地存储设备。
-
对于 VMware 上的虚拟机,请确保将
disk.EnableUUID
选项设置为TRUE
。您需要具有 vCenter 帐户特权才能配置虚拟机。如需更多信息,请参阅所需的 vCenter 帐户权限。要设置disk.EnableUUID
选项,请使用 Customize hardware 选项卡中的 VM Options 的 Advanced 选项。如需更多信息,请参阅在 vSphere 中创建 Red Hat Enterprise Linux CoreOS (RHCOS) 机器。
流程
- 登录 OpenShift Web 控制台。
点 Operators → Installed Operators 查看所有已安装的 Operator。
确保所选的 Project 为 openshift-storage。
图 2.2. OpenShift Container Storage Operator 页
点 OpenShift Container Storage。
图 2.3. OpenShift Container Storage 的详情标签页
单击 Storage Cluster 的 Create Instance 链接。
图 2.4. 创建存储集群页面
- 为 Select Mode 选择 Internal-Attached 设备。默认选择 Internal。
使用向导创建存储集群,其中包括磁盘发现、存储类创建和存储集群创建。
如果还没有安装,系统会提示您安装 Local Storage Operator。点 Install 并安装 Operator,如安装 Local Storage Operator 所述。
- 发现磁盘
您可以在所选节点上发现一个潜在的可用磁盘列表。发现不使用且可用于置备持久性卷 (PV) 的磁盘和分区。
图 2.5. Discovery Disks 向导页面
选择以下任意一项:
- 可发现所有节点中磁盘的所有节点。
选择节点以从列出节点的子集发现磁盘。
要查找集群中的特定 worker 节点,您可以根据 Name 或 Label 过滤节点。Name 允许您按节点名称搜索,而 Label 则允许您选择预定义的标签进行搜索。
如果选择的节点与一个聚合的 30 个 CPU 和 72 GiB RAM 的要求不匹配,则会部署一个最小的集群。如需最低起始节点要求,请参阅规划指南中的资源要求部分。
注意如果要选择的节点有污点且没有在向导中发现,请按照红帽知识库解决方案中提供的步骤作为临时解决方案。
- 点 Next。
- 创建存储类
您可以通过过滤一组存储卷来创建专用的存储类来消耗存储。
图 2.6. 创建 Storage Class 向导页面
- 输入 Volume Set Name。
- 输入 Storage Class Name。默认情况下,存储类名称会出现卷集名称。
在上一步中为磁盘发现选择的节点会在 Filter Disks 部分显示。选择以下任意一项:
- All nodes 选择您发现可用磁盘的所有节点。
Select nodes 可以选择可以在其中发现可用磁盘的一组节点。
要查找集群中的特定 worker 节点,您可以根据 Name 或 Label 过滤节点。Name 允许您按节点名称搜索,而 Label 则允许您选择预定义的标签进行搜索。
建议 worker 节点分散到三个不同的物理节点、机架或故障域中以实现高可用性。
注意确保 OpenShift Container Storage 机架标签与数据中心中的物理机架一致,以防止在故障域级别出现双节点故障。
选择所需的 Disk Type。可用的选项如下:
All
选择节点上存在的所有磁盘类型。默认情况下会选择这个选项。
SSD/NVME
仅选择 SSD 或 NVME 类型磁盘。
HDD
仅选择 HDD 类型磁盘。
注意如果因为底层存储抽象而检测到 SSD/NVME 磁盘为 HDD,请选择磁盘类型为
All
或HDD
。例如,本地存储设备作为 VMDK。在 Advanced 部分,您可以设置以下内容:
磁盘模式
默认会选择块。
磁盘大小
需要被包含的设备的最小和最大可用大小。
注意您必须为该设备设置最小 100GB。
最大磁盘限制
这表示节点上可以创建的 PV 数量上限。如果此字段留空,则为匹配节点上的所有可用磁盘创建 PV。
(可选)您可以使用 Select Capacity Chart 查看所选节点上的磁盘所选容量。
此图表可能需要几分钟时间来反映上一步中发现的磁盘。
您可以单击图表中的 Nodes 和 Disks 链接,以调出节点和磁盘列表以查看更多详细信息。
图 2.7. 选定节点列表
图 2.8. 所选磁盘列表
- 点 Next。
在消息警报中单击 Yes 以确认创建存储类。
本地卷集和存储类被创建后,无法返回该步骤。
- 创建存储集群
图 2.9. 创建 Storage Cluster 向导页面
选择所需的存储类。
您可能需要等待一两分钟,以便与所选存储类对应的存储节点被填充。
- (可选)在 Encryption 部分中,将切换设置为 Enabled 以在集群中启用数据加密。
- 与存储类对应的节点会根据从下拉列表中选择的存储类显示。
点击 Create。
只有在最少选择了三个节点时,才会启用 Create 按钮。将创建一个包含三个卷的新存储集群,每个 worker 节点都有一个卷。默认配置使用 3 的复制因子。
若要扩展初始集群的容量,请参阅扩展存储指南。
验证步骤
2.7. 当存储类存在时在 VMware 上创建存储集群
您可以使用通过 Local Storage Operator 页面创建的现有存储类来创建 Openshift Container Storage Cluster。
先决条件
- 确保满足使用本地存储设备安装 OpenShift Container Storage 的要求部分中的所有要求。
- 您必须至少有三个 worker 节点,其存储类型和大小相同(例如,2TB NVMe 硬盘驱动器)才能在裸机上使用本地存储设备。
- 您必须已创建了由至少三个节点和附加的卷组成的存储类。
流程
- 登录 OpenShift Web 控制台。
点 Operators → Installed Operators 查看所有已安装的 Operator。
确保所选的 Project 为 openshift-storage。
图 2.10. OpenShift Container Storage Operator 页
点 OpenShift Container Storage。
图 2.11. OpenShift Container Storage 的详情标签页
单击 Storage Cluster 的 Create Instance 链接。
图 2.12. 创建存储集群页面
为 Select Mode 选择 Internal-Attached 设备。默认选择 Internal。
图 2.13. 创建存储集群页面
- (可选)在 Encryption 部分中,将切换设置为 Enabled 以在集群中启用数据加密。
此时会显示与所选存储类对应的节点。
如果还没有标记,所选节点标记为
cluster.ocs.openshift.io/openshift-storage=''
。选定的三个节点用于初始部署,其余节点用作 OpenShift Container Storage 扩展的调度目标。点击 Create。
只有在最少选择了三个节点时,才会启用 Create 按钮。
将创建一个包含三个卷的新存储集群,每个 worker 节点都有一个卷。默认配置使用 3 的复制因子。
若要扩展初始集群的容量,请参阅扩展存储指南。
验证步骤
第 3 章 为内部模式验证 OpenShift Container Storage 部署
使用本节验证 OpenShift Container Storage 是否已正确部署。
3.1. 验证 pod 的状态
要确定 OpenShift Container 存储是否已成功部署,您可以验证 pod 是否处于 Running
状态。
流程
- 从 OpenShift Web 控制台左侧窗格中,点击 Workloads → Pods。
从 Project 下拉列表中,选择 openshift-storage。
有关每个组件预期的 pod 数量及其变化取决于节点数量的更多信息,请参阅 表 3.1 “对应 OpenShift Container 存储集群的 Pod”。
点 Running 和 Completed 标签页验证以下 pod 是否处于运行状态并完成状态:
表 3.1. 对应 OpenShift Container 存储集群的 Pod
组件 对应的 pod OpenShift Container Storage Operator
-
OCS-operator-*
(在任何 worker 节点上有 1 个 pod) -
ocs-metrics-exporter-*
Rook-ceph Operator
rook-ceph-operator-*
(任何 worker 节点上有 1 个 pod)
多云对象网关
-
noobaa-operator-*
(任何 worker 节点上 1 个 pod) -
noobaa-core-*
(任何存储节点上 1 个 pod) -
NooBaa-db-*
(任意存储节点上的 1 个 pod) -
noobaa-endpoint-*
(任何存储节点上 1 个 pod)
MON
rook-ceph-mon-*
(在存储节点间分布 3 个 pod)
MGR
rook-ceph-mgr-*
(任何存储节点上的 1 个 pod)
MDS
rook-ceph-mds-ocs-storagecluster-cephfilesystem-*
(2 个 pod 在存储节点间分布)
RGW
rook-ceph-rgw-ocs-storagecluster-cephobjectstore-*
(2 个 pod 在存储节点上分布)CSI
cephfs
-
csi-cephfsplugin-*
(每个 worker 节点上 1 个 pod) -
csi-cephfsplugin-provisioner-*
(2 个 pod 在不同的 worker 节点上分布)
-
rbd
-
csi-rbdplugin-*
(每个 worker 节点上 1 个 pod) -
csi-rbdplugin-provisioner-*
(2 个 pod 在不同的 worker 节点上分步)
-
rook-ceph-crashcollector
rook-ceph-crashcollector-*
(每个存储节点上 1 个 pod)
OSD
-
rook-ceph-osd-*
(每个设备 1 个 pod) -
rook-ceph-osd-prepare-ocs-deviceset-*
(每个设备 1 个 pod)
-
3.2. 验证 OpenShift Container Storage 集群是否正常运行
- 点击 OpenShift Web 控制台左侧窗格中的 Home → Overview,然后点击 Persistent Storage 选项卡。
在 Status 卡 中,验证 OCS Cluster 和 Data Resiliency 带有绿色勾号标记,如下图所示:
图 3.1. Persistent Storage Overview Dashboard 中的健康状态卡
在详情卡中,验证集群信息是否显示如下:
- 服务名称
- OpenShift Container Storage
- 集群名称
- ocs-storagecluster
- 提供者
- vSphere
- 模式
- 内部
- Version
- ocs-operator-4.6.0
如需有关使用持久性存储仪表板的 OpenShift Container Storage 集群健康状况的更多信息,请参阅监控 OpenShift Container Storage。
3.3. 验证 Multicloud 对象网关是否健康
- 点击 OpenShift Web 控制台左侧窗格中的 Home → Overview,然后点击 Object Service 选项卡。
在 Status 卡 中,验证 Object Service 和 Data Resiliency 都处于
Ready
状态(绿色钩号)。图 3.2. Object Service Overview Dashboard 中的健康状态卡
在 Details 卡 中,验证 MCG 信息是否显示如下:
- 服务名称
- OpenShift Container Storage
- 系统名称
多云对象网关
RADOS 对象网关
- 提供者
- vSphere
- Version
- ocs-operator-4.6.0
如需有关使用对象服务仪表板的 OpenShift Container Storage 集群健康状况的更多信息,请参阅监控 OpenShift Container Storage。
3.4. 验证 OpenShift Container Storage 特定的存储类是否存在
验证集群中是否存在存储类:
- 从 OpenShift Web 控制台左侧窗格中,点击 Storage → Storage Classes。
验证是否在创建 OpenShift Container Storage 集群时创建了以下存储类:
-
ocs-storagecluster-ceph-rbd
-
ocs-storagecluster-cephfs
-
openshift-storage.noobaa.io
-
ocs-storagecluster-ceph-rgw
-
第 4 章 卸载 OpenShift Container Storage
4.1. 在内部模式中卸载 OpenShift Container Storage
使用本节中的步骤卸载 OpenShift Container Storage。
卸载注解
Storage Cluster 上的注解用于更改卸载过程的行为。要定义卸载行为,在存储集群中引入了以下两个注解:
-
uninstall.ocs.openshift.io/cleanup-policy: delete
-
uninstall.ocs.openshift.io/mode: graceful
下表提供了有关可用于这些注解的不同值的信息:
表 4.1. uninstall.ocs.openshift.io
卸载注解描述
注解 | 值 | 默认 | 行为 |
---|---|---|---|
cleanup-policy | delete | 是 |
Rook 清理物理驱动器和 |
cleanup-policy | retain | 否 |
Rook 不会清理物理驱动器和 |
mode | graceful | 是 | Rook 和 NooBaa 暂停卸载过程,直到管理员/用户移除 PVC 和 OBC |
mode | forced | 否 | Rook 和 NooBaa 即使使用 Rook 和 NooBaa 置备的 PVC/OBC 分别存在,也会继续卸载。 |
您可以通过使用以下命令编辑注解值来更改清理策略或卸载模式:
$ oc annotate storagecluster -n openshift-storage ocs-storagecluster uninstall.ocs.openshift.io/cleanup-policy="retain" --overwrite storagecluster.ocs.openshift.io/ocs-storagecluster annotated
$ oc annotate storagecluster -n openshift-storage ocs-storagecluster uninstall.ocs.openshift.io/mode="forced" --overwrite storagecluster.ocs.openshift.io/ocs-storagecluster annotated
先决条件
- 确保 OpenShift Container Storage 集群处于健康状态。当因为资源或节点不足而导致部分 pod 无法成功终止时,卸载过程可能会失败。如果集群处于不健康状态,请在卸载 OpenShift Container Storage 前联络红帽客户支持。
- 使用 OpenShift Container Storage 提供的存储类,确保应用程序不使用持久性卷声明 (PVC) 或对象存储桶声明 (OBC)。
- 如果管理员创建了任何自定义资源(如自定义存储类、cephblockpools),则管理员必须在移除消耗这些资源后将它们删除。
流程
删除使用 OpenShift Container Storage 的卷快照。
列出来自所有命名空间的卷快照。
$ oc get volumesnapshot --all-namespaces
在上一命令的输出中,识别和删除使用 OpenShift Container Storage 的卷快照。
$ oc delete volumesnapshot <VOLUME-SNAPSHOT-NAME> -n <NAMESPACE>
删除使用 OpenShift Container Storage 的 PVC 和 OBC。
在默认的卸载模式 (graceful) 中,卸载程序会等待所有使用 OpenShift Container Storage 的 PVC 和 OBC 被删除。
如果要事先删除 PVC 来删除存储集群,您可以将卸载模式注解设置为"强制"并跳过此步骤。这样做会导致系统中出现孤立 PVC 和 OBC。
使用 OpenShift Container Storage 删除 OpenShift Container Platform 监控堆栈 PVC。
使用 OpenShift Container Storage 删除 OpenShift Container Platform Registry PVC。
请查看 第 4.3 节 “从 OpenShift Container Storage 中删除 OpenShift Container Platform registry”
使用 OpenShift Container Storage 删除 OpenShift Container Platform 日志 PVC。
请查看 第 4.4 节 “从 OpenShift Container Storage 中删除集群日志记录 Operator”
删除使用 OpenShift Container Storage 置备的其他 PVC 和 OBC。
下面是一个示例脚本,用于标识使用 OpenShift Container Storage 置备的 PVC 和 OBC。该脚本忽略 Openshift Container Storage 内部使用的 PVC。
#!/bin/bash RBD_PROVISIONER="openshift-storage.rbd.csi.ceph.com" CEPHFS_PROVISIONER="openshift-storage.cephfs.csi.ceph.com" NOOBAA_PROVISIONER="openshift-storage.noobaa.io/obc" RGW_PROVISIONER="openshift-storage.ceph.rook.io/bucket" NOOBAA_DB_PVC="noobaa-db" NOOBAA_BACKINGSTORE_PVC="noobaa-default-backing-store-noobaa-pvc" # Find all the OCS StorageClasses OCS_STORAGECLASSES=$(oc get storageclasses | grep -e "$RBD_PROVISIONER" -e "$CEPHFS_PROVISIONER" -e "$NOOBAA_PROVISIONER" -e "$RGW_PROVISIONER" | awk '{print $1}') # List PVCs in each of the StorageClasses for SC in $OCS_STORAGECLASSES do echo "======================================================================" echo "$SC StorageClass PVCs and OBCs" echo "======================================================================" oc get pvc --all-namespaces --no-headers 2>/dev/null | grep $SC | grep -v -e "$NOOBAA_DB_PVC" -e "$NOOBAA_BACKINGSTORE_PVC" oc get obc --all-namespaces --no-headers 2>/dev/null | grep $SC echo done
注意云平台省略
RGW_PROVISIONER
。删除 OBC。
$ oc delete obc <obc name> -n <project name>
删除 PVC。
$ oc delete pvc <pvc name> -n <project-name>
注意确保您已删除了集群中创建的任何自定义后备存储、存储桶类等。
删除 Storage Cluster 对象并等待相关资源被删除。
$ oc delete -n openshift-storage storagecluster --all --wait=true
检查
uninstall.ocs.openshift.io/cleanup-policy
是否已设置为delete
(默认),并确保其状态为Completed
。$ oc get pods -n openshift-storage | grep -i cleanup NAME READY STATUS RESTARTS AGE cluster-cleanup-job-<xx> 0/1 Completed 0 8m35s cluster-cleanup-job-<yy> 0/1 Completed 0 8m35s cluster-cleanup-job-<zz> 0/1 Completed 0 8m35s
确认目录
/var/lib/rook
现在为空。只有uninstall.ocs.openshift.io/cleanup-policy
注解设置为delete
(默认)时,此目录才为空。$ for i in $(oc get node -l cluster.ocs.openshift.io/openshift-storage= -o jsonpath='{ .items[*].metadata.name }'); do oc debug node/${i} -- chroot /host ls -l /var/lib/rook; done
如果在安装时启用了加密,在所有 OpenShift Container Storage 节点上的 OSD 设备中删除
dm-crypt
管理的device-mapper
映射。创建
debug
pod 和chroot
到存储节点上的主机。$ oc debug node/<node name> $ chroot /host
获取设备名称并记录 OpenShift Container Storage 设备。
$ dmsetup ls ocs-deviceset-0-data-0-57snx-block-dmcrypt (253:1)
删除映射的设备。
$ cryptsetup luksClose --debug --verbose ocs-deviceset-0-data-0-57snx-block-dmcrypt
如果上述命令因为权限不足而卡住,请运行以下命令:
-
按
CTRL+Z
退出上述命令。 查找
cryptsetup
进程的 PID,该进程一直卡住。$ ps
输出示例:
PID TTY TIME CMD 778825 ? 00:00:00 cryptsetup
记录要终止的
PID
编号。在本例中,PID
为778825
。使用
kill
命令终止进程。$ kill -9 <PID>
验证设备名称是否已移除。
$ dmsetup ls
-
按
删除命名空间并等待删除完成。如果
openshift-storage
是活跃的项目,则需要切换到另一个项目。例如:
$ oc project default $ oc delete project openshift-storage --wait=true --timeout=5m
如果以下命令返回
NotFound
错误,则项目被删除。$ oc get project openshift-storage
注意卸载 OpenShift Container Storage 时,如果没有完全删除命名空间并处于
Terminating
状态,请执行 故障排除和删除 Uninstall 过程中剩余的资源 的步骤,以识别阻塞命名空间的对象。- 如果您使用本地存储设备部署了 OpenShift Container Storage,请删除本地存储 Operator 配置。请参阅删除本地存储 Operator 配置。
取消标记存储节点。
$ oc label nodes --all cluster.ocs.openshift.io/openshift-storage- $ oc label nodes --all topology.rook.io/rack-
如果节点有污点,则删除 OpenShift Container Storage 污点。
$ oc adm taint nodes --all node.ocs.openshift.io/storage-
确认已删除使用 OpenShift Container Storage 置备的所有 PV。如果有任何 PV 处于
Released
状态,请将其删除。$ oc get pv $ oc delete pv <pv name>
删除 Multicloud 对象网关存储类。
$ oc delete storageclass openshift-storage.noobaa.io --wait=true --timeout=5m
删除
CustomResourceDefinitions
。$ oc delete crd backingstores.noobaa.io bucketclasses.noobaa.io cephblockpools.ceph.rook.io cephclusters.ceph.rook.io cephfilesystems.ceph.rook.io cephnfses.ceph.rook.io cephobjectstores.ceph.rook.io cephobjectstoreusers.ceph.rook.io noobaas.noobaa.io ocsinitializations.ocs.openshift.io storageclusters.ocs.openshift.io cephclients.ceph.rook.io cephobjectrealms.ceph.rook.io cephobjectzonegroups.ceph.rook.io cephobjectzones.ceph.rook.io cephrbdmirrors.ceph.rook.io --wait=true --timeout=5m
在 OpenShift Container Platform Web 控制台中,确保完全卸载 OpenShift Container Storage,
- 点 Home → Overview 访问仪表板。
- 验证 Cluster 选项卡旁边是否不再显示持久性存储和对象存储选项卡。
4.1.1. 删除本地存储 Operator 配置
只有在使用本地存储设备部署了 OpenShift Container Storage 时,才使用本节中的说明。
对于仅使用 localvolume
资源的 OpenShift Container Storage 部署,请直接转至第 8 步。
流程
-
标识
LocalVolumeSet
以及 OpenShift Container Storage 使用的对应StorageClassName
。 将变量 SC 设置为提供
LocalVolumeSet
的StorageClass
。$ export SC="<StorageClassName>"
删除
LocalVolumeSet
。$ oc delete localvolumesets.local.storage.openshift.io <name-of-volumeset> -n openshift-local-storage
删除给定
StorageClassName
的本地存储 PV。$ oc get pv | grep $SC | awk '{print $1}'| xargs oc delete pv
删除
StorageClassName
。$ oc delete sc $SC
删除
LocalVolumeSet
创建的符号链接。[[ ! -z $SC ]] && for i in $(oc get node -l cluster.ocs.openshift.io/openshift-storage= -o jsonpath='{ .items[*].metadata.name }'); do oc debug node/${i} -- chroot /host rm -rfv /mnt/local-storage/${SC}/; done
删除
LocalVolumeDiscovery
。$ oc delete localvolumediscovery.local.storage.openshift.io/auto-discover-devices -n openshift-local-storage
删除
LocalVolume
资源(如果有)。使用以下步骤删除在当前或以前的 OpenShift Container Storage 版本中置备 PV 的
LocalVolume
资源。此外,确保这些资源不提供给集群上的其他租户使用。对于每个本地卷,请执行以下操作:
-
标识
LocalVolume
以及 OpenShift Container Storage 使用的对应StorageClassName
。 将变量 LV 设置为 LocalVolume 的名称,变量 SC 设置为 StorageClass 的名称
例如:
$ LV=local-block $ SC=localblock
删除本地卷资源。
$ oc delete localvolume -n local-storage --wait=true $LV
删除剩余的 PV 和 StorageClasses(如果存在)。
$ oc delete pv -l storage.openshift.com/local-volume-owner-name=${LV} --wait --timeout=5m $ oc delete storageclass $SC --wait --timeout=5m
从该资源的存储节点中清理工件。
$ [[ ! -z $SC ]] && for i in $(oc get node -l cluster.ocs.openshift.io/openshift-storage= -o jsonpath='{ .items[*].metadata.name }'); do oc debug node/${i} -- chroot /host rm -rfv /mnt/local-storage/${SC}/; done
输出示例:
Starting pod/node-xxx-debug ... To use host binaries, run `chroot /host` removed '/mnt/local-storage/localblock/nvme2n1' removed directory '/mnt/local-storage/localblock' Removing debug pod ... Starting pod/node-yyy-debug ... To use host binaries, run `chroot /host` removed '/mnt/local-storage/localblock/nvme2n1' removed directory '/mnt/local-storage/localblock' Removing debug pod ... Starting pod/node-zzz-debug ... To use host binaries, run `chroot /host` removed '/mnt/local-storage/localblock/nvme2n1' removed directory '/mnt/local-storage/localblock' Removing debug pod ...
-
标识
4.2. 从 OpenShift Container Storage 中删除监控堆栈
使用本节清理 OpenShift Container Storage 中的监控堆栈。
在配置监控堆栈时创建的 PVC 位于 openshift-monitoring
命名空间中。
先决条件
PVC 被配置为使用 OpenShift Container Platform 监控堆栈。
如需更多信息,请参阅配置监控堆栈。
流程
列出当前在
openshift-monitoring
命名空间中运行的 pod 和 PVC。$ oc get pod,pvc -n openshift-monitoring NAME READY STATUS RESTARTS AGE pod/alertmanager-main-0 3/3 Running 0 8d pod/alertmanager-main-1 3/3 Running 0 8d pod/alertmanager-main-2 3/3 Running 0 8d pod/cluster-monitoring- operator-84457656d-pkrxm 1/1 Running 0 8d pod/grafana-79ccf6689f-2ll28 2/2 Running 0 8d pod/kube-state-metrics- 7d86fb966-rvd9w 3/3 Running 0 8d pod/node-exporter-25894 2/2 Running 0 8d pod/node-exporter-4dsd7 2/2 Running 0 8d pod/node-exporter-6p4zc 2/2 Running 0 8d pod/node-exporter-jbjvg 2/2 Running 0 8d pod/node-exporter-jj4t5 2/2 Running 0 6d18h pod/node-exporter-k856s 2/2 Running 0 6d18h pod/node-exporter-rf8gn 2/2 Running 0 8d pod/node-exporter-rmb5m 2/2 Running 0 6d18h pod/node-exporter-zj7kx 2/2 Running 0 8d pod/openshift-state-metrics- 59dbd4f654-4clng 3/3 Running 0 8d pod/prometheus-adapter- 5df5865596-k8dzn 1/1 Running 0 7d23h pod/prometheus-adapter- 5df5865596-n2gj9 1/1 Running 0 7d23h pod/prometheus-k8s-0 6/6 Running 1 8d pod/prometheus-k8s-1 6/6 Running 1 8d pod/prometheus-operator- 55cfb858c9-c4zd9 1/1 Running 0 6d21h pod/telemeter-client- 78fc8fc97d-2rgfp 3/3 Running 0 8d NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE persistentvolumeclaim/my-alertmanager-claim-alertmanager-main-0 Bound pvc-0d519c4f-15a5-11ea-baa0-026d231574aa 40Gi RWO ocs-storagecluster-ceph-rbd 8d persistentvolumeclaim/my-alertmanager-claim-alertmanager-main-1 Bound pvc-0d5a9825-15a5-11ea-baa0-026d231574aa 40Gi RWO ocs-storagecluster-ceph-rbd 8d persistentvolumeclaim/my-alertmanager-claim-alertmanager-main-2 Bound pvc-0d6413dc-15a5-11ea-baa0-026d231574aa 40Gi RWO ocs-storagecluster-ceph-rbd 8d persistentvolumeclaim/my-prometheus-claim-prometheus-k8s-0 Bound pvc-0b7c19b0-15a5-11ea-baa0-026d231574aa 40Gi RWO ocs-storagecluster-ceph-rbd 8d persistentvolumeclaim/my-prometheus-claim-prometheus-k8s-1 Bound pvc-0b8aed3f-15a5-11ea-baa0-026d231574aa 40Gi RWO ocs-storagecluster-ceph-rbd 8d
编辑监控
configmap
。$ oc -n openshift-monitoring edit configmap cluster-monitoring-config
删除引用 OpenShift Container Storage 存储类的所有
config
部分,如下例所示并保存。编辑前
. . . apiVersion: v1 data: config.yaml: | alertmanagerMain: volumeClaimTemplate: metadata: name: my-alertmanager-claim spec: resources: requests: storage: 40Gi storageClassName: ocs-storagecluster-ceph-rbd prometheusK8s: volumeClaimTemplate: metadata: name: my-prometheus-claim spec: resources: requests: storage: 40Gi storageClassName: ocs-storagecluster-ceph-rbd kind: ConfigMap metadata: creationTimestamp: "2019-12-02T07:47:29Z" name: cluster-monitoring-config namespace: openshift-monitoring resourceVersion: "22110" selfLink: /api/v1/namespaces/openshift-monitoring/configmaps/cluster-monitoring-config uid: fd6d988b-14d7-11ea-84ff-066035b9efa8 . . .
编辑后
. . . apiVersion: v1 data: config.yaml: | kind: ConfigMap metadata: creationTimestamp: "2019-11-21T13:07:05Z" name: cluster-monitoring-config namespace: openshift-monitoring resourceVersion: "404352" selfLink: /api/v1/namespaces/openshift-monitoring/configmaps/cluster-monitoring-config uid: d12c796a-0c5f-11ea-9832-063cd735b81c . . .
在本例中,
alertmanagerMain
和prometheusK8s
监控组件使用 OpenShift Container Storage PVC。删除相关的 PVC。请确定删除所有消耗存储类的 PVC。
$ oc delete -n openshift-monitoring pvc <pvc-name> --wait=true --timeout=5m
4.3. 从 OpenShift Container Storage 中删除 OpenShift Container Platform registry
使用这个部分从 OpenShift Container Storage 清理 OpenShift Container Platform registry。如果要配置其他存储,请参阅镜像 registry
作为配置 OpenShift Container Platform registry 的一部分创建的 PVC 位于 openshift-image-registry
命名空间中。
先决条件
- 镜像 registry 应配置为使用 OpenShift Container Storage PVC。
流程
编辑
configs.imageregistry.operator.openshift.io
对象,并删除 storage 部分中的内容。$ oc edit configs.imageregistry.operator.openshift.io
编辑前
. . . storage: pvc: claim: registry-cephfs-rwx-pvc . . .
编辑后
. . . storage: emptyDir: {} . . .
在本例中,PVC 称为
registry-cephfs-rwx-pvc
,现在可以安全地删除。删除 PVC。
$ oc delete pvc <pvc-name> -n openshift-image-registry --wait=true --timeout=5m
4.4. 从 OpenShift Container Storage 中删除集群日志记录 Operator
使用本节从 OpenShift Container Storage 清理集群日志记录 Operator。
作为配置集群日志记录 Operator 的一部分创建的 PVC 位于 openshift-logging
命名空间中。
先决条件
- 集群日志记录实例应该已配置为使用 OpenShift Container Storage PVC。
流程
删除命名空间中的
ClusterLogging
实例。$ oc delete clusterlogging instance -n openshift-logging --wait=true --timeout=5m
openshift-logging
命名空间中的 PVC 现在可以安全地删除。删除 PVC。
$ oc delete pvc <pvc-name> -n openshift-logging --wait=true --timeout=5m