OpenShift Container Storage is now OpenShift Data Foundation starting with version 4.9.
替换节点
如何准备替换节点及实际替换失败的节点
摘要
让开源更具包容性 复制链接链接已复制到粘贴板!
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。如需了解更多详细信息,请参阅 CTO Chris Wright 信息。
对红帽文档提供反馈 复制链接链接已复制到粘贴板!
我们感谢您对文档提供反馈信息。请告诉我们如何让它更好。提供反馈:
关于特定内容的简单评论:
- 请确定您使用 Multi-page HTML 格式查看文档。另外,确定 Feedback 按钮出现在文档页的右上方。
- 用鼠标指针高亮显示您想评论的文本部分。
- 点在高亮文本上弹出的 Add Feedback。
- 按照显示的步骤操作。
要提交更复杂的反馈,请创建一个 Bugzilla ticket:
- 进入 Bugzilla 网站。
- 在 Component 部分中,选择 文档。
- 在 Description 中输入您要提供的信息。包括文档相关部分的链接。
- 点 Submit Bug。
前言 复制链接链接已复制到粘贴板!
对于 OpenShift Container Storage,可以主动对正常操作的节点执行节点替换,也可以被动地替换有问题的节点:
对于 Amazon Web Services(AWS)
- 用户置备的基础架构
- 安装程序置备的基础架构
对于 VMware
- 用户置备的基础架构
- 安装程序置备的基础架构
Red Hat Virtualization
- 安装程序置备的基础架构
对于 Microsoft Azure
- 安装程序置备的基础架构
用于本地存储设备
- 裸机
- VMware
- Red Hat Virtualization
- IBM Power 系统
- 有关以外部模式替换存储节点,请参阅 Red Hat Ceph Storage 文档。
第 1 章 使用动态设备部署的 OpenShift Container Storage 复制链接链接已复制到粘贴板!
1.1. 在 AWS 上部署的 OpenShift Container Storage 复制链接链接已复制到粘贴板!
要替换正常运行的节点,请参阅:
要替换失败的节点,请参阅:
1.1.1. 在用户置备的基础架构中替换可运行的 AWS 节点 复制链接链接已复制到粘贴板!
执行此流程替换 AWS 用户置备的基础架构上的操作节点。
先决条件
- 红帽建议为替换节点配置类似的基础架构和资源,以用于被替换的节点。
- 您必须登录 OpenShift Container Platform (RHOCP) 集群。
步骤
- 确定需要替换的节点。
使用以下命令将节点标记为不可调度:
oc adm cordon <node_name>
$ oc adm cordon <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令排空节点:
oc adm drain <node_name> --force --delete-local-data --ignore-daemonsets
$ oc adm drain <node_name> --force --delete-local-data --ignore-daemonsetsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要此活动可能需要至少 5 到 10 分钟或更长时间。这一期间内生成的 Ceph 错误是临时的,在新节点标上并正常运行时自动解决。
使用以下命令删除节点:
oc delete nodes <node_name>
$ oc delete nodes <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 使用所需基础架构创建新的 AWS 机器集。请参阅 平台要求。
- 使用新的 AWS 机器集创建新的 OpenShift Container Platform 节点。
检查与处于
Pending状态的 OpenShift Container Platform 相关的证书签名请求(CSR):oc get csr
$ oc get csrCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为新节点批准所有所需的 OpenShift Container Platform CSR:
oc adm certificate approve <Certificate_Name>
$ oc adm certificate approve <Certificate_Name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 点 Compute → Nodes,确认新节点是否处于 Ready 状态。
将 OpenShift Container Storage 标签应用到新节点。
- 使用 Web 用户界面
- 对于新节点,点击 Action Menu(⋮) → Edit Labels
-
添加
cluster.ocs.openshift.io/openshift-storage并点 Save。
- 使用命令行界面
执行以下命令,将 OpenShift Container Storage 标签应用到新节点:
oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
$ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
执行以下命令并验证输出中是否存在新节点:
oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
$ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点 Workloads → Pods,确认新节点上的以下 pod 处于 Running 状态 :
-
csi-cephfsplugin-* -
csi-rbdplugin-*
-
- 验证所有其他所需的 OpenShift Container Storage Pod 是否都处于 Running 状态。
验证新 OSD pod 是否在替换节点上运行。
oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osd
$ oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osdCopy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建调试 pod,并为所选主机打开 chroot 环境。
oc debug node/<node name> chroot /host
$ oc debug node/<node name> $ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 "lsblk" 并检查
ocs-deviceset名旁边的 "crypt" 关键字。lsblk
$ lsblkCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 如果验证步骤失败,请联系红帽支持。
1.1.2. 在安装程序置备的基础架构中替换可正常工作的 AWS 节点 复制链接链接已复制到粘贴板!
使用这个流程替换 AWS 安装程序置备的基础架构(IPI)上的操作节点。
步骤
- 登录 OpenShift Web 控制台并点击 Compute → Nodes。
- 确定需要替换的节点。记录其 Machine Name。
使用以下命令将节点标记为不可调度:
oc adm cordon <node_name>
$ oc adm cordon <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令排空节点:
oc adm drain <node_name> --force --delete-local-data --ignore-daemonsets
$ oc adm drain <node_name> --force --delete-local-data --ignore-daemonsetsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要此活动可能需要至少 5 到 10 分钟或更长时间。这一期间内生成的 Ceph 错误是临时的,在新节点标上并正常运行时自动解决。
- 点 Compute → Machines。搜索所需的机器。
- 除了所需的机器外,点击 Action 菜单(⋮) → Delete Machine。
- 单击 Delete 以确认删除机器。会自动创建新机器。
等待新计算机启动并过渡到 Running 状态。
重要此活动可能需要至少 5 到 10 分钟或更长时间。
- 点 Compute → Nodes,确认新节点是否处于 Ready 状态。
使用以下任一方法之一将 OpenShift Container Storage 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮) → Edit Labels
-
添加
cluster.ocs.openshift.io/openshift-storage并点 Save。
- 使用命令行界面
执行以下命令,将 OpenShift Container Storage 标签应用到新节点:
oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
$ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
执行以下命令并验证输出中是否存在新节点:
oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
$ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点 Workloads → Pods,确认新节点上的以下 pod 处于 Running 状态 :
-
csi-cephfsplugin-* -
csi-rbdplugin-*
-
- 验证所有其他所需的 OpenShift Container Storage Pod 是否都处于 Running 状态。
验证新 OSD pod 是否在替换节点上运行。
oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osd
$ oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osdCopy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建调试 pod,并为所选主机打开 chroot 环境。
oc debug node/<node name> chroot /host
$ oc debug node/<node name> $ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 "lsblk" 并检查
ocs-deviceset名旁边的 "crypt" 关键字。lsblk
$ lsblkCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 如果验证步骤失败,请联系红帽支持。
1.1.3. 在用户置备的基础架构中替换失败的 AWS 节点 复制链接链接已复制到粘贴板!
执行此流程替换在 OpenShift Container Storage 的 AWS 用户置备的基础架构(UPI)中无法正常操作的节点。
先决条件
- 红帽建议为替换节点配置类似的基础架构和资源,以用于被替换的节点。
- 您必须登录 OpenShift Container Platform (RHOCP) 集群。
步骤
- 识别需要替换节点的 AWS 机器集。
- 登录 AWS 并终止指定的 AWS 机器实例。
- 使用所需基础架构创建新的 AWS 机器集。查看平台要求.
- 使用新的 AWS 机器集创建新的 OpenShift Container Platform 节点。
检查与处于
Pending状态的 OpenShift Container Platform 相关的证书签名请求(CSR):oc get csr
$ oc get csrCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为新节点批准所有所需的 OpenShift Container Platform CSR:
oc adm certificate approve <Certificate_Name>
$ oc adm certificate approve <Certificate_Name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 点 Compute → Nodes,确认新节点是否处于 Ready 状态。
使用以下任一方法之一将 OpenShift Container Storage 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮) → Edit Labels
-
添加
cluster.ocs.openshift.io/openshift-storage并点 Save。
- 使用命令行界面
执行以下命令,将 OpenShift Container Storage 标签应用到新节点:
oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
$ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
执行以下命令并验证输出中是否存在新节点:
oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
$ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点 Workloads → Pods,确认新节点上的以下 pod 处于 Running 状态 :
-
csi-cephfsplugin-* -
csi-rbdplugin-*
-
- 验证所有其他所需的 OpenShift Container Storage Pod 是否都处于 Running 状态。
验证新 OSD pod 是否在替换节点上运行。
oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osd
$ oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osdCopy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建调试 pod,并为所选主机打开 chroot 环境。
oc debug node/<node name> chroot /host
$ oc debug node/<node name> $ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 "lsblk" 并检查
ocs-deviceset名旁边的 "crypt" 关键字。lsblk
$ lsblkCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 如果验证步骤失败,请联系红帽支持。
1.1.4. 在安装程序置备的基础架构中替换失败的 AWS 节点 复制链接链接已复制到粘贴板!
执行此流程替换在 OpenShift Container Storage 的 AWS 安装程序置备的基础架构(IPI)中无法正常工作的节点。
步骤
- 登录 OpenShift Web 控制台并点击 Compute → Nodes。
- 确定有故障的节点,再单击其 Machine Name。
- 点击 Actions → Edit Annotations,然后点 Add More。
-
添加
machine.openshift.io/exclude-node-draining并点 Save。 - 点 Actions → Delete Machine,然后点 Delete。
新机器会自动创建,等待新机器启动。
重要此活动可能需要至少 5 到 10 分钟或更长时间。这一期间内生成的 Ceph 错误是临时的,在新节点标上并正常运行时自动解决。
- 点 Compute → Nodes,确认新节点是否处于 Ready 状态。
使用以下任一方法之一将 OpenShift Container Storage 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮) → Edit Labels
-
添加
cluster.ocs.openshift.io/openshift-storage并点 Save。
- 使用命令行界面
执行以下命令,将 OpenShift Container Storage 标签应用到新节点:
oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
$ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- [可选]:如果没有自动删除失败的 AWS 实例,从 AWS 控制台终止实例。
验证步骤
执行以下命令并验证输出中是否存在新节点:
oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
$ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点 Workloads → Pods,确认新节点上的以下 pod 处于 Running 状态 :
-
csi-cephfsplugin-* -
csi-rbdplugin-*
-
- 验证所有其他所需的 OpenShift Container Storage Pod 是否都处于 Running 状态。
验证新 OSD pod 是否在替换节点上运行。
oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osd
$ oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osdCopy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建调试 pod,并为所选主机打开 chroot 环境。
oc debug node/<node name> chroot /host
$ oc debug node/<node name> $ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 "lsblk" 并检查
ocs-deviceset名旁边的 "crypt" 关键字。lsblk
$ lsblkCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 如果验证步骤失败,请联系红帽支持。
1.2. VMware 上部署的 OpenShift Container Storage 复制链接链接已复制到粘贴板!
要替换正常运行的节点,请参阅:
要替换失败的节点,请参阅:
1.2.1. 在用户置备的基础架构中替换可运行的 VMware 节点 复制链接链接已复制到粘贴板!
执行此流程替换 VMware 用户置备的基础架构(UPI)上的操作节点。
先决条件
- 红帽建议为替换节点配置与被替换节点的类似基础架构、资源和磁盘。
- 您必须登录 OpenShift Container Platform (RHOCP) 集群。
步骤
- 确定需要替换的节点及其虚拟机。
使用以下命令将节点标记为不可调度:
oc adm cordon <node_name>
$ oc adm cordon <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令排空节点:
oc adm drain <node_name> --force --delete-local-data --ignore-daemonsets
$ oc adm drain <node_name> --force --delete-local-data --ignore-daemonsetsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要此活动可能需要至少 5 到 10 分钟或更长时间。这一期间内生成的 Ceph 错误是临时的,在新节点标上并正常运行时自动解决。
使用以下命令删除节点:
oc delete nodes <node_name>
$ oc delete nodes <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 登录 vSphere 并终止标识的虚拟机。
重要应当仅从清单中删除虚拟机,而不应从磁盘中删除虚拟机。
- 使用所需基础架构在 vSphere 上创建新虚拟机。请参阅 平台要求。
- 使用新虚拟机创建新的 OpenShift Container Platform worker 节点。
检查与处于
Pending状态的 OpenShift Container Platform 相关的证书签名请求(CSR):oc get csr
$ oc get csrCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为新节点批准所有所需的 OpenShift Container Platform CSR:
oc adm certificate approve <Certificate_Name>
$ oc adm certificate approve <Certificate_Name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 点 Compute → Nodes,确认新节点是否处于 Ready 状态。
使用以下任一方法之一将 OpenShift Container Storage 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮) → Edit Labels
-
添加
cluster.ocs.openshift.io/openshift-storage并点 Save。
- 使用命令行界面
执行以下命令,将 OpenShift Container Storage 标签应用到新节点:
oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
$ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
执行以下命令并验证输出中是否存在新节点:
oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
$ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点 Workloads → Pods,确认新节点上的以下 pod 处于 Running 状态 :
-
csi-cephfsplugin-* -
csi-rbdplugin-*
-
- 验证所有其他所需的 OpenShift Container Storage Pod 是否都处于 Running 状态。
验证新 OSD pod 是否在替换节点上运行。
oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osd
$ oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osdCopy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建调试 pod,并为所选主机打开 chroot 环境。
oc debug node/<node name> chroot /host
$ oc debug node/<node name> $ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 "lsblk" 并检查
ocs-deviceset名旁边的 "crypt" 关键字。lsblk
$ lsblkCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 如果验证步骤失败,请联系红帽支持。
1.2.2. 在安装程序置备的基础架构中替换可运行的 VMware 节点 复制链接链接已复制到粘贴板!
使用这个流程替换 VMware 安装程序置备的基础架构(IPI)上的操作节点。
步骤
- 登录 OpenShift Web 控制台并点击 Compute → Nodes。
- 确定需要替换的节点。记录其 Machine Name。
使用以下命令将节点标记为不可调度:
oc adm cordon <node_name>
$ oc adm cordon <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令排空节点:
oc adm drain <node_name> --force --delete-local-data --ignore-daemonsets
$ oc adm drain <node_name> --force --delete-local-data --ignore-daemonsetsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要此活动可能需要至少 5 到 10 分钟或更长时间。这一期间内生成的 Ceph 错误是临时的,在新节点标上并正常运行时自动解决。
- 点 Compute → Machines。搜索所需的机器。
- 除了所需的机器外,点击 Action 菜单(⋮) → Delete Machine。
- 单击 Delete 以确认删除机器。会自动创建新机器。
等待新计算机启动并过渡到 Running 状态。
重要此活动可能需要至少 5 到 10 分钟或更长时间。
- 点 Compute → Nodes,确认新节点是否处于 Ready 状态。
使用以下任一方法之一将 OpenShift Container Storage 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮) → Edit Labels
-
添加
cluster.ocs.openshift.io/openshift-storage并点 Save。
- 使用命令行界面
执行以下命令,将 OpenShift Container Storage 标签应用到新节点:
oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
$ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
执行以下命令并验证输出中是否存在新节点:
oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
$ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点 Workloads → Pods,确认新节点上的以下 pod 处于 Running 状态 :
-
csi-cephfsplugin-* -
csi-rbdplugin-*
-
- 验证所有其他所需的 OpenShift Container Storage Pod 是否都处于 Running 状态。
验证新 OSD pod 是否在替换节点上运行。
oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osd
$ oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osdCopy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建调试 pod,并为所选主机打开 chroot 环境。
oc debug node/<node name> chroot /host
$ oc debug node/<node name> $ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 "lsblk" 并检查
ocs-deviceset名旁边的 "crypt" 关键字。lsblk
$ lsblkCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 如果验证步骤失败,请联系红帽支持。
1.2.3. 在用户置备的基础架构中替换失败的 VMware 节点 复制链接链接已复制到粘贴板!
执行此流程替换 VMware 用户置备的基础架构(UPI)中的故障节点。
先决条件
- 红帽建议为替换节点配置与被替换节点的类似基础架构、资源和磁盘。
- 您必须登录 OpenShift Container Platform (RHOCP) 集群。
步骤
- 确定需要替换的节点及其虚拟机。
使用以下命令删除节点:
oc delete nodes <node_name>
$ oc delete nodes <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 登录 vSphere 并终止标识的虚拟机。
重要应当仅从清单中删除虚拟机,而不应从磁盘中删除虚拟机。
- 使用所需基础架构在 vSphere 上创建新虚拟机。请参阅 平台要求。
- 使用新虚拟机创建新的 OpenShift Container Platform worker 节点。
检查与处于
Pending状态的 OpenShift Container Platform 相关的证书签名请求(CSR):oc get csr
$ oc get csrCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为新节点批准所有所需的 OpenShift Container Platform CSR:
oc adm certificate approve <Certificate_Name>
$ oc adm certificate approve <Certificate_Name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 点 Compute → Nodes,确认新节点是否处于 Ready 状态。
使用以下任一方法之一将 OpenShift Container Storage 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮) → Edit Labels
-
添加
cluster.ocs.openshift.io/openshift-storage并点 Save。
- 使用命令行界面
执行以下命令,将 OpenShift Container Storage 标签应用到新节点:
oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
$ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
执行以下命令并验证输出中是否存在新节点:
oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
$ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点 Workloads → Pods,确认新节点上的以下 pod 处于 Running 状态 :
-
csi-cephfsplugin-* -
csi-rbdplugin-*
-
- 验证所有其他所需的 OpenShift Container Storage Pod 是否都处于 Running 状态。
验证新 OSD pod 是否在替换节点上运行。
oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osd
$ oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osdCopy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建调试 pod,并为所选主机打开 chroot 环境。
oc debug node/<node name> chroot /host
$ oc debug node/<node name> $ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 "lsblk" 并检查
ocs-deviceset名旁边的 "crypt" 关键字。lsblk
$ lsblkCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 如果验证步骤失败,请联系红帽支持。
1.2.4. 在安装程序置备的基础架构中替换失败的 VMware 节点 复制链接链接已复制到粘贴板!
执行此流程替换在 OpenShift Container Storage 的 VMware 安装程序置备的基础架构(IPI)中无法正常工作的节点。
步骤
- 登录 OpenShift Web 控制台并点击 Compute → Nodes。
- 确定有故障的节点,再单击其 Machine Name。
- 点击 Actions → Edit Annotations,然后点 Add More。
-
添加
machine.openshift.io/exclude-node-draining并点 Save。 - 点 Actions → Delete Machine,然后点 Delete。
新机器会自动创建,等待新机器启动。
重要此活动可能需要至少 5 到 10 分钟或更长时间。这一期间内生成的 Ceph 错误是临时的,在新节点标上并正常运行时自动解决。
- 点 Compute → Nodes,确认新节点是否处于 Ready 状态。
使用以下任一方法之一将 OpenShift Container Storage 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮) → Edit Labels
-
添加
cluster.ocs.openshift.io/openshift-storage并点 Save。
- 使用命令行界面
执行以下命令,将 OpenShift Container Storage 标签应用到新节点:
oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
$ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- [可选]: 如果没有自动删除失败的虚拟机,请从 vSphere 终止虚拟机。
验证步骤
执行以下命令并验证输出中是否存在新节点:
oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
$ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点 Workloads → Pods,确认新节点上的以下 pod 处于 Running 状态 :
-
csi-cephfsplugin-* -
csi-rbdplugin-*
-
- 验证所有其他所需的 OpenShift Container Storage Pod 是否都处于 Running 状态。
验证新 OSD pod 是否在替换节点上运行。
oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osd
$ oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osdCopy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建调试 pod,并为所选主机打开 chroot 环境。
oc debug node/<node name> chroot /host
$ oc debug node/<node name> $ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 "lsblk" 并检查
ocs-deviceset名旁边的 "crypt" 关键字。lsblk
$ lsblkCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 如果验证步骤失败,请联系红帽支持。
1.3.1. 在安装程序置备的基础架构中替换可运行的 Red Hat Virtualization 节点 复制链接链接已复制到粘贴板!
使用这个流程替换 Red Hat Virtualization 安装程序置备的基础架构 (IPI) 上的操作节点。
步骤
- 登陆到 OpenShift Web 控制台,点 Compute → Nodes。
- 确定需要替换的节点。记录其 Machine Name。
使用以下命令将节点标记为不可调度:
oc adm cordon <node_name>
$ oc adm cordon <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令排空节点:
oc adm drain <node_name> --force --delete-local-data --ignore-daemonsets
$ oc adm drain <node_name> --force --delete-local-data --ignore-daemonsetsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要此活动可能需要至少 5 到 10 分钟或更长时间。这一期间内生成的 Ceph 错误是临时的,在新节点标上并正常运行时自动解决。
- 点 Compute → Machines。搜索所需的机器。
- 除了所需的机器外,点击 Action 菜单(⋮)→ Delete Machine。
单击 Delete 以确认删除机器。会自动创建新机器。等待新机器启动并过渡到
Running状态。重要此活动可能需要至少 5 到 10 分钟或更长时间。
- 点 Compute → Nodes,确认新节点是否处于 Ready 状态。
使用以下任一方法之一将 OpenShift Container Storage 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮)→ Edit Labels。
-
添加
cluster.ocs.openshift.io/openshift-storage并点 Save。
- 使用命令行界面
- 执行以下命令,将 OpenShift Container Storage 标签应用到新节点:
oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
$ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
执行以下命令并验证输出中是否存在新节点:
oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
$ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点 Workloads → Pods,确认新节点上的以下 pod 处于 Running 状态 :
-
csi-cephfsplugin-* -
csi-rbdplugin-*
-
- 验证所有其他所需的 OpenShift Container Storage Pod 是否都处于 Running 状态。
验证新 OSD pod 是否在替换节点上运行。
oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osd
$ oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osdCopy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建调试 pod,并为所选主机打开 chroot 环境。
oc debug node/<node name> chroot /host
$ oc debug node/<node name> $ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 "lsblk" 并检查
ocs-deviceset名旁边的 "crypt" 关键字。lsblk
$ lsblkCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 如果验证步骤失败,请联系红帽支持。
1.3.2. 在安装程序置备的基础架构中替换失败的 Red Hat Virtualization 节点 复制链接链接已复制到粘贴板!
执行此流程替换在 OpenShift Container Storage 的 Red Hat Virtualization 安装程序置备的基础架构(IPI)中无法正常工作的节点。
步骤
- 登陆到 OpenShift Web 控制台,点 Compute → Nodes。
- 确定出现故障的节点。记录其 Machine Name。
登录到 Red Hat Virtualization 管理门户,并从出现故障的虚拟机中删除与 mon 和 OSD 关联的虚拟磁盘。
此步骤是必需的,以便在虚拟机实例被删除时不会删除磁盘。
重要删除磁盘时,请勿永久选择删除选项。
- 在 OpenShift Web 控制台中,点 Compute → Machines。搜索所需的机器。
- 点 Actions → Edit Annotations,然后点 Add More。
-
添加
machine.openshift.io/exclude-node-draining并点 Save。 点 Actions → Delete Machine,然后点 Delete。
新机器会自动创建,等待新机器启动。
重要此活动可能需要至少 5 到 10 分钟或更长时间。这一期间内生成的 Ceph 错误是临时的,在新节点标上并正常运行时自动解决。
- 点 Compute → Nodes,确认新节点是否处于 Ready 状态。
使用以下任一方法之一将 OpenShift Container Storage 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮)→ Edit Labels。
-
添加
cluster.ocs.openshift.io/openshift-storage并点 Save。
- 使用命令行界面
执行以下命令,将 OpenShift Container Storage 标签应用到新节点:
oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
$ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- (可选)如果未自动删除失败的虚拟机,请从 Red Hat Virtualization 管理门户中删除虚拟机。
验证步骤
执行以下命令并验证输出中是否存在新节点:
oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
$ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点 Workloads → Pods,确认新节点上的以下 pod 处于 Running 状态 :
-
csi-cephfsplugin-* -
csi-rbdplugin-*
-
- 验证所有其他所需的 OpenShift Container Storage Pod 是否都处于 Running 状态。
验证新 OSD pod 是否在替换节点上运行。
oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osd
$ oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osdCopy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建调试 pod,并为所选主机打开 chroot 环境。
oc debug node/<node name> chroot /host
$ oc debug node/<node name> $ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 "lsblk" 并检查
ocs-deviceset名旁边的 "crypt" 关键字。lsblk
$ lsblkCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 如果验证步骤失败,请联系红帽支持。
1.4. Microsoft Azure 上部署的 OpenShift Container Storage 复制链接链接已复制到粘贴板!
要替换操作节点,请参阅 第 1.4.1 节 “替换 Azure 安装程序置备的基础架构上的操作节点” 替换出现故障的节点,请参阅 第 1.4.2 节 “在 Azure 安装程序置备的基础架构中替换失败的节点”
1.4.1. 替换 Azure 安装程序置备的基础架构上的操作节点 复制链接链接已复制到粘贴板!
使用这个流程替换 Azure 安装程序置备的基础架构(IPI)上的操作节点。
步骤
- 登录 OpenShift Web 控制台并点击 Compute → Nodes。
- 确定需要替换的节点。记录其 Machine Name。
使用以下命令将节点标记为不可调度:
oc adm cordon <node_name>
$ oc adm cordon <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令排空节点:
oc adm drain <node_name> --force --delete-local-data --ignore-daemonsets
$ oc adm drain <node_name> --force --delete-local-data --ignore-daemonsetsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要此活动可能需要至少 5 到 10 分钟或更长时间。这一期间内生成的 Ceph 错误是临时的,在新节点标上并正常运行时自动解决。
- 点 Compute → Machines。搜索所需的机器。
- 除了所需的机器外,点击 Action 菜单(⋮) → Delete Machine。
- 单击 Delete 以确认删除机器。会自动创建新机器。
等待新计算机启动并过渡到 Running 状态。
重要此活动可能需要至少 5 到 10 分钟或更长时间。
- 点 Compute → Nodes,确认新节点是否处于 Ready 状态。
使用以下任一方法之一将 OpenShift Container Storage 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮) → Edit Labels
-
添加
cluster.ocs.openshift.io/openshift-storage并点 Save。
- 使用命令行界面
执行以下命令,将 OpenShift Container Storage 标签应用到新节点:
oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
$ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
执行以下命令并验证输出中是否存在新节点:
oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
$ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点 Workloads → Pods,确认新节点上的以下 pod 处于 Running 状态 :
-
csi-cephfsplugin-* -
csi-rbdplugin-*
-
- 验证所有其他所需的 OpenShift Container Storage Pod 是否都处于 Running 状态。
验证新 OSD pod 是否在替换节点上运行。
oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osd
$ oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osdCopy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建调试 pod,并为所选主机打开 chroot 环境。
oc debug node/<node name> chroot /host
$ oc debug node/<node name> $ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 "lsblk" 并检查
ocs-deviceset名旁边的 "crypt" 关键字。lsblk
$ lsblkCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 如果验证步骤失败,请联系红帽支持。
1.4.2. 在 Azure 安装程序置备的基础架构中替换失败的节点 复制链接链接已复制到粘贴板!
执行此流程替换在 OpenShift Container Storage 的 Azure 安装程序置备的基础架构(IPI)中无法正常工作的节点。
步骤
- 登录 OpenShift Web 控制台并点击 Compute → Nodes。
- 确定有故障的节点,再单击其 Machine Name。
- 点击 Actions → Edit Annotations,然后点 Add More。
-
添加
machine.openshift.io/exclude-node-draining并点 Save。 - 点 Actions → Delete Machine,然后点 Delete。
新机器会自动创建,等待新机器启动。
重要此活动可能需要至少 5 到 10 分钟或更长时间。这一期间内生成的 Ceph 错误是临时的,在新节点标上并正常运行时自动解决。
- 点 Compute → Nodes,确认新节点是否处于 Ready 状态。
使用以下任一方法之一将 OpenShift Container Storage 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮) → Edit Labels
-
添加
cluster.ocs.openshift.io/openshift-storage并点 Save。
- 使用命令行界面
执行以下命令,将 OpenShift Container Storage 标签应用到新节点:
oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
$ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- [可选]:如果没有自动删除失败的 Azure 实例,从 Azure 控制台终止实例。
验证步骤
执行以下命令并验证输出中是否存在新节点:
oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
$ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点 Workloads → Pods,确认新节点上的以下 pod 处于 Running 状态 :
-
csi-cephfsplugin-* -
csi-rbdplugin-*
-
- 验证所有其他所需的 OpenShift Container Storage Pod 是否都处于 Running 状态。
验证新 OSD pod 是否在替换节点上运行。
oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osd
$ oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osdCopy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建调试 pod,并为所选主机打开 chroot 环境。
oc debug node/<node name> chroot /host
$ oc debug node/<node name> $ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 "lsblk" 并检查
ocs-deviceset名旁边的 "crypt" 关键字。lsblk
$ lsblkCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 如果验证步骤失败,请联系红帽支持。
第 2 章 使用本地存储设备部署的 OpenShift Container Storage 复制链接链接已复制到粘贴板!
2.1. 在裸机基础架构中替换存储节点 复制链接链接已复制到粘贴板!
- 要替换操作节点,请查看 第 2.1.1 节 “在裸机用户置备的基础架构中替换操作节点”
- 要替换出现故障的节点,请参阅 第 2.1.2 节 “在裸机用户置备的基础架构中替换失败的节点”
2.1.1. 在裸机用户置备的基础架构中替换操作节点 复制链接链接已复制到粘贴板!
先决条件
- 红帽建议为替换节点配置与被替换节点的类似基础架构、资源和磁盘。
- 您必须登录 OpenShift Container Platform (RHOCP) 集群。
-
如果您从以前的版本升级到 OpenShift Container Storage 版本 4.8,且还没有创建
LocalVolumeDiscovery和LocalVolumeSet对象,现在请按照 本地存储支持的集群的 Post-update 配置更改 中所述的步骤进行。
步骤
确定要替换的节点上的 NODE 并获取标签。
oc get nodes --show-labels | grep <node_name>
$ oc get nodes --show-labels | grep <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 识别要替换的节点中运行的
mon(如果有)和 OSD。oc get pods -n openshift-storage -o wide | grep -i <node_name>
$ oc get pods -n openshift-storage -o wide | grep -i <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 缩减上一步中确定的容器集部署。
例如:
oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage oc scale deployment rook-ceph-osd-0 --replicas=0 -n openshift-storage oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storage
$ oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage $ oc scale deployment rook-ceph-osd-0 --replicas=0 -n openshift-storage $ oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将节点标记为不可调度。
oc adm cordon <node_name>
$ oc adm cordon <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 排空节点。
oc adm drain <node_name> --force --delete-local-data --ignore-daemonsets
$ oc adm drain <node_name> --force --delete-local-data --ignore-daemonsetsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除节点。
oc delete node <node_name>
$ oc delete node <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取具有所需基础架构的新裸机计算机。请参阅在裸机上安装集群。
重要有关如何在三节点 OpenShift 紧凑的裸机集群中安装 OpenShift Container Storage 时如何替换 master 节点的详情,请参阅 OpenShift Container Platform 文档中的备份和恢复指南。
- 使用新的裸机机器创建新的 OpenShift Container Platform 节点。
检查与处于 Pending 状态的 OpenShift Container Platform 相关的证书签名请求(CSR):
oc get csr
$ oc get csrCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为新节点批准所有所需的 OpenShift Container Platform CSR:
oc adm certificate approve <Certificate_Name>
$ oc adm certificate approve <Certificate_Name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在 OpenShift Web 控制台中点 Compute → Nodes,确认新节点是否处于 Ready 状态。
使用以下任一方法之一将 OpenShift Container Storage 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮)→ Edit Labels。
-
添加
cluster.ocs.openshift.io/openshift-storage并点 Save。
- 使用命令行界面
执行以下命令,将 OpenShift Container Storage 标签应用到新节点:
oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
$ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""Copy to Clipboard Copied! Toggle word wrap Toggle overflow
识别安装 OpenShift 本地存储 Operator 的命名空间,并将其分配给
local_storage_project变量:local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local)$ local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local)$ local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local) echo $local_storage_project openshift-local-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将新的 worker 节点添加到
localVolumeDiscovery和localVolumeSet。更新
localVolumeDiscovery定义,使其包含新节点并删除失败的节点。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记住在退出编辑器之前进行保存。
在上例中,
server3.example.com已被删除,newnode.example.com是新节点。决定要编辑的
localVolumeSet。oc get -n $local_storage_project localvolumeset
# oc get -n $local_storage_project localvolumeset NAME AGE localblock 25hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新
localVolumeSet定义,使其包含新节点并删除失败的节点。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记住在退出编辑器之前进行保存。
在上例中,
server3.example.com已被删除,newnode.example.com是新节点。
验证新的
localblockPV 是否可用。$oc get pv | grep localblock | grep Available local-pv-551d950 512Gi RWO Delete Available localblock 26s
$oc get pv | grep localblock | grep Available local-pv-551d950 512Gi RWO Delete Available localblock 26sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更改到
openshift-storage项目。oc project openshift-storage
$ oc project openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 从集群移除出现故障的 OSD。如果需要,您可以指定多个故障 OSD。
oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=failed-osd-id1,failed-osd-id2 | oc create -f -
$ oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=failed-osd-id1,failed-osd-id2 | oc create -f -Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过检查
ocs-osd-removal-jobpod 的状态,验证 OSD 是否已成功移除。状态为
Completed,确认 OSD 移除作业已成功。oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage
# oc get pod -l job-name=ocs-osd-removal-job -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果
ocs-osd-removal-job失败,且 pod 没有处于预期的Completed状态,请检查 pod 日志以获得进一步的调试。例如:oc logs -l job-name=ocs-osd-removal-job -n openshift-storage
# oc logs -l job-name=ocs-osd-removal-job -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除
ocs-osd-removal-job。oc delete -n openshift-storage job ocs-osd-removal-job
# oc delete -n openshift-storage job ocs-osd-removal-jobCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
job.batch "ocs-osd-removal-job" deleted
job.batch "ocs-osd-removal-job" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
执行以下命令并验证输出中是否存在新节点:
oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
$ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点 Workloads → Pods,确认新节点上的以下 pod 处于
Running状态:-
csi-cephfsplugin-* -
csi-rbdplugin-*
-
验证所有其他所需的 OpenShift Container Storage Pod 是否都处于 Running 状态。
确保创建了新的增量
mon,并处于 Running 状态。oc get pod -n openshift-storage | grep mon
$ oc get pod -n openshift-storage | grep monCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD 和 Mon 可能需要几分钟才能进入
Running状态。验证新 OSD pod 是否在替换节点上运行。
oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osd
$ oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osdCopy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建调试 pod,并为所选主机打开 chroot 环境。
oc debug node/<node name> chroot /host
$ oc debug node/<node name> $ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 "lsblk" 并检查
ocs-deviceset名旁边的 "crypt" 关键字。lsblk
$ lsblkCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 如果验证步骤失败,请联系红帽支持。
2.1.2. 在裸机用户置备的基础架构中替换失败的节点 复制链接链接已复制到粘贴板!
先决条件
- 红帽建议为替换节点配置与被替换节点的类似基础架构、资源和磁盘。
- 您必须登录 OpenShift Container Platform (RHOCP) 集群。
-
如果您从以前的版本升级到 OpenShift Container Storage 版本 4.8,且还没有创建
LocalVolumeDiscovery和LocalVolumeSet对象,现在请按照 本地存储支持的集群的 Post-update 配置更改 中所述的步骤进行。
步骤
确定要替换的节点上的 NODE 并获取标签。
oc get nodes --show-labels | grep <node_name>
$ oc get nodes --show-labels | grep <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 识别要替换的节点中运行的
mon(如果有)和 OSD。oc get pods -n openshift-storage -o wide | grep -i <node_name>
$ oc get pods -n openshift-storage -o wide | grep -i <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 缩减上一步中确定的容器集部署。
例如:
oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage oc scale deployment rook-ceph-osd-0 --replicas=0 -n openshift-storage oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storage
$ oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage $ oc scale deployment rook-ceph-osd-0 --replicas=0 -n openshift-storage $ oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将节点标记为不可调度。
oc adm cordon <node_name>
$ oc adm cordon <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除处于 Terminating 状态的 pod。
oc get pods -A -o wide | grep -i <node_name> | awk '{if ($4 == "Terminating") system ("oc -n " $1 " delete pods " $2 " --grace-period=0 " " --force ")}'$ oc get pods -A -o wide | grep -i <node_name> | awk '{if ($4 == "Terminating") system ("oc -n " $1 " delete pods " $2 " --grace-period=0 " " --force ")}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 排空节点。
oc adm drain <node_name> --force --delete-local-data --ignore-daemonsets
$ oc adm drain <node_name> --force --delete-local-data --ignore-daemonsetsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除节点。
oc delete node <node_name>
$ oc delete node <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取具有所需基础架构的新裸机计算机。请参阅在裸机上安装集群。
重要有关如何在三节点 OpenShift 紧凑的裸机集群中安装 OpenShift Container Storage 时如何替换 master 节点的详情,请参阅 OpenShift Container Platform 文档中的备份和恢复指南。
- 使用新的裸机机器创建新的 OpenShift Container Platform 节点。
检查与处于 Pending 状态的 OpenShift Container Platform 相关的证书签名请求(CSR):
oc get csr
$ oc get csrCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为新节点批准所有所需的 OpenShift Container Platform CSR:
oc adm certificate approve <Certificate_Name>
$ oc adm certificate approve <Certificate_Name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在 OpenShift Web 控制台中点 Compute → Nodes,确认新节点是否处于 Ready 状态。
使用以下任一方法之一将 OpenShift Container Storage 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮)→ Edit Labels。
-
添加
cluster.ocs.openshift.io/openshift-storage并点 Save。
- 使用命令行界面
执行以下命令,将 OpenShift Container Storage 标签应用到新节点:
oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
$ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""Copy to Clipboard Copied! Toggle word wrap Toggle overflow
识别安装 OpenShift 本地存储 Operator 的命名空间,并将其分配给
local_storage_project变量:local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local)$ local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local)$ local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local) echo $local_storage_project openshift-local-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将新的 worker 节点添加到
localVolumeDiscovery和localVolumeSet。更新
localVolumeDiscovery定义,使其包含新节点并删除失败的节点。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记住在退出编辑器之前进行保存。
在上例中,
server3.example.com已被删除,newnode.example.com是新节点。决定要编辑的
localVolumeSet。oc get -n $local_storage_project localvolumeset
# oc get -n $local_storage_project localvolumeset NAME AGE localblock 25hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新
localVolumeSet定义,使其包含新节点并删除失败的节点。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记住在退出编辑器之前进行保存。
在上例中,
server3.example.com已被删除,newnode.example.com是新节点。
验证新的
localblockPV 是否可用。$oc get pv | grep localblock | grep Available local-pv-551d950 512Gi RWO Delete Available localblock 26s
$oc get pv | grep localblock | grep Available local-pv-551d950 512Gi RWO Delete Available localblock 26sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更改到
openshift-storage项目。oc project openshift-storage
$ oc project openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 从集群移除出现故障的 OSD。如果需要,您可以指定多个故障 OSD。
oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=failed-osd-id1,failed-osd-id2 | oc create -f -
$ oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=failed-osd-id1,failed-osd-id2 | oc create -f -Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过检查
ocs-osd-removal-jobpod 的状态,验证 OSD 是否已成功移除。状态为
Completed,确认 OSD 移除作业已成功。oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage
# oc get pod -l job-name=ocs-osd-removal-job -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果
ocs-osd-removal-job失败,且 pod 没有处于预期的Completed状态,请检查 pod 日志以获得进一步的调试。例如:oc logs -l job-name=ocs-osd-removal-job -n openshift-storage
# oc logs -l job-name=ocs-osd-removal-job -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除
ocs-osd-removal-job。oc delete -n openshift-storage job ocs-osd-removal-job
# oc delete -n openshift-storage job ocs-osd-removal-jobCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
job.batch "ocs-osd-removal-job" deleted
job.batch "ocs-osd-removal-job" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
执行以下命令并验证输出中是否存在新节点:
oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
$ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点 Workloads → Pods,确认新节点上的以下 pod 处于
Running状态:-
csi-cephfsplugin-* -
csi-rbdplugin-*
-
验证所有其他所需的 OpenShift Container Storage Pod 是否都处于 Running 状态。
确保创建了新的增量
mon,并处于 Running 状态。oc get pod -n openshift-storage | grep mon
$ oc get pod -n openshift-storage | grep monCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD 和 Mon 可能需要几分钟才能进入
Running状态。验证新 OSD pod 是否在替换节点上运行。
oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osd
$ oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osdCopy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建调试 pod,并为所选主机打开 chroot 环境。
oc debug node/<node name> chroot /host
$ oc debug node/<node name> $ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 "lsblk" 并检查
ocs-deviceset名旁边的 "crypt" 关键字。lsblk
$ lsblkCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 如果验证步骤失败,请联系红帽支持。
2.2. 替换 IBM Z 或 LinuxONE 基础架构中的存储节点 复制链接链接已复制到粘贴板!
您可以选择以下步骤之一来替换存储节点:
2.2.1. 替换 IBM Z 或 LinuxONE 基础架构上的操作节点 复制链接链接已复制到粘贴板!
使用这个流程替换 IBM Z 或 LinuxONE 基础架构上的操作节点。
步骤
- 登录 OpenShift Web 控制台。
- 点 Compute → Nodes。
- 确定需要替换的节点。记录其 Machine Name。
使用以下命令将节点标记为不可调度:
oc adm cordon <node_name>
$ oc adm cordon <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令排空节点:
oc adm drain <node_name> --force --delete-local-data --ignore-daemonsets
$ oc adm drain <node_name> --force --delete-local-data --ignore-daemonsetsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要此活动可能至少需要 5 到 10 分钟。这一期间内生成的 Ceph 错误是临时的,在新节点标上并正常运行时自动解决。
- 点 Compute → Machines。搜索所需的机器。
- 除了所需的机器外,点击 Action 菜单(⋮) → Delete Machine。
- 单击 Delete 以确认删除机器。会自动创建新机器。
等待新计算机启动并过渡到 Running 状态。
重要此活动可能至少需要 5 到 10 分钟。
- 点 Compute → Nodes,确认新节点是否处于 Ready 状态。
使用以下任一方法之一将 OpenShift Container Storage 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮) → Edit Labels
-
添加
cluster.ocs.openshift.io/openshift-storage并点 Save。
- 使用命令行界面
执行以下命令,将 OpenShift Container Storage 标签应用到新节点:
oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
$ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
执行以下命令并验证输出中是否存在新节点:
oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
$ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点 Workloads → Pods,确认新节点上的以下 pod 处于 Running 状态 :
-
csi-cephfsplugin-* -
csi-rbdplugin-*
-
- 验证所有其他所需的 OpenShift Container Storage Pod 是否都处于 Running 状态。
验证新 OSD pod 是否在替换节点上运行。
oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osd
$ oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osdCopy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)如果在集群中启用了数据加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建调试 pod,并为所选主机打开 chroot 环境。
oc debug node/<node name> chroot /host
$ oc debug node/<node name> $ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 "lsblk" 并检查
ocs-deviceset名旁边的 "crypt" 关键字。lsblk
$ lsblkCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 如果验证步骤失败,请联系红帽支持。
2.2.2. 在 IBM Z 或 LinuxONE 基础架构中替换失败的节点 复制链接链接已复制到粘贴板!
执行此流程替换在 OpenShift Container Storage 的 IBM Z 或 LinuxONE 基础架构上操作故障的节点。
步骤
- 登录 OpenShift Web 控制台并点击 Compute → Nodes。
- 确定有故障的节点,再单击其 Machine Name。
- 点击 Actions → Edit Annotations,然后点 Add More。
-
添加
machine.openshift.io/exclude-node-draining并点 Save。 - 点 Actions → Delete Machine,然后点 Delete。
新机器会自动创建,等待新机器启动。
重要此活动可能至少需要 5 到 10 分钟。这一期间内生成的 Ceph 错误是临时的,在新节点标上并正常运行时自动解决。
- 点 Compute → Nodes,确认新节点是否处于 Ready 状态。
使用以下任一方法之一将 OpenShift Container Storage 标签应用到新节点:
- 使用 Web 用户界面
- 对于新节点,点击 Action Menu(⋮) → Edit Labels
-
添加
cluster.ocs.openshift.io/openshift-storage并点 Save。
- 使用命令行界面
执行以下命令,将 OpenShift Container Storage 标签应用到新节点:
oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
$ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""Copy to Clipboard Copied! Toggle word wrap Toggle overflow
执行以下命令并验证输出中是否存在新节点:
oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= | cut -d' ' -f1
$ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= | cut -d' ' -f1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点 Workloads → Pods,确认新节点上的以下 pod 处于 Running 状态 :
-
csi-cephfsplugin-* -
csi-rbdplugin-*
-
- 验证所有其他所需的 OpenShift Container Storage Pod 是否都处于 Running 状态。
验证新 OSD pod 是否在替换节点上运行。
oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osd
$ oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osdCopy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)如果在集群中启用了数据加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建调试 pod,并为所选主机打开 chroot 环境。
oc debug node/<node name> chroot /host
$ oc debug node/<node name> $ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 "lsblk" 并检查
ocs-deviceset名旁边的 "crypt" 关键字。lsblk
$ lsblkCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 如果验证步骤失败,请联系红帽支持。
2.3. 替换 VMware 基础架构上的存储节点 复制链接链接已复制到粘贴板!
要替换正常运行的节点,请参阅:
要替换失败的节点,请参阅:
2.3.1. 在 VMware 用户置备的基础架构上替换操作节点 复制链接链接已复制到粘贴板!
先决条件
- 红帽建议为替换节点配置与被替换节点的类似基础架构、资源和磁盘。
- 您必须登录 OpenShift Container Platform (RHOCP) 集群。
-
如果您从以前的版本升级到 OpenShift Container Storage 版本 4.8,且还没有创建
LocalVolumeDiscovery和LocalVolumeSet对象,现在请按照 本地存储支持的集群的 Post-update 配置更改 中所述的步骤进行。
步骤
确定要替换的节点上的 NODE 并获取标签。
oc get nodes --show-labels | grep <node_name>
$ oc get nodes --show-labels | grep <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 识别要替换的节点中运行的
mon(如果有)和 OSD。oc get pods -n openshift-storage -o wide | grep -i <node_name>
$ oc get pods -n openshift-storage -o wide | grep -i <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 缩减上一步中确定的容器集部署。
例如:
oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage oc scale deployment rook-ceph-osd-0 --replicas=0 -n openshift-storage oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storage
$ oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage $ oc scale deployment rook-ceph-osd-0 --replicas=0 -n openshift-storage $ oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将节点标记为不可调度。
oc adm cordon <node_name>
$ oc adm cordon <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 排空节点。
oc adm drain <node_name> --force --delete-local-data --ignore-daemonsets
$ oc adm drain <node_name> --force --delete-local-data --ignore-daemonsetsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除节点。
oc delete node <node_name>
$ oc delete node <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 登录 vSphere 并终止标识的虚拟机。
- 使用所需基础架构在 VMware 上创建一个新虚拟机。请参阅支持的基础架构和平台。
- 使用新虚拟机创建新的 OpenShift Container Platform worker 节点。
检查与处于 Pending 状态的 OpenShift Container Platform 相关的证书签名请求(CSR):
oc get csr
$ oc get csrCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为新节点批准所有所需的 OpenShift Container Platform CSR:
oc adm certificate approve <Certificate_Name>
$ oc adm certificate approve <Certificate_Name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在 OpenShift Web 控制台中点 Compute → Nodes,确认新节点是否处于 Ready 状态。
使用以下任一方法之一将 OpenShift Container Storage 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮)→ Edit Labels。
-
添加
cluster.ocs.openshift.io/openshift-storage并点 Save。
- 使用命令行界面
执行以下命令,将 OpenShift Container Storage 标签应用到新节点:
oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
$ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""Copy to Clipboard Copied! Toggle word wrap Toggle overflow
识别安装 OpenShift 本地存储 Operator 的命名空间,并将其分配给
local_storage_project变量:local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local)$ local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local)$ local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local) echo $local_storage_project openshift-local-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将新的 worker 节点添加到
localVolumeDiscovery和localVolumeSet。更新
localVolumeDiscovery定义,使其包含新节点并删除失败的节点。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记住在退出编辑器之前进行保存。
在上例中,
server3.example.com已被删除,newnode.example.com是新节点。决定要编辑的
localVolumeSet。oc get -n $local_storage_project localvolumeset
# oc get -n $local_storage_project localvolumeset NAME AGE localblock 25hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新
localVolumeSet定义,使其包含新节点并删除失败的节点。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记住在退出编辑器之前进行保存。
在上例中,
server3.example.com已被删除,newnode.example.com是新节点。
验证新的
localblockPV 是否可用。$oc get pv | grep localblock | grep Available local-pv-551d950 512Gi RWO Delete Available localblock 26s
$oc get pv | grep localblock | grep Available local-pv-551d950 512Gi RWO Delete Available localblock 26sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更改到
openshift-storage项目。oc project openshift-storage
$ oc project openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 从集群移除出现故障的 OSD。如果需要,您可以指定多个故障 OSD。
oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=failed-osd-id1,failed-osd-id2 | oc create -f -
$ oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=failed-osd-id1,failed-osd-id2 | oc create -f -Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过检查
ocs-osd-removal-jobpod 的状态,验证 OSD 是否已成功移除。状态为
Completed,确认 OSD 移除作业已成功。oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage
# oc get pod -l job-name=ocs-osd-removal-job -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果
ocs-osd-removal-job失败,且 pod 没有处于预期的Completed状态,请检查 pod 日志以获得进一步的调试。例如:oc logs -l job-name=ocs-osd-removal-job -n openshift-storage
# oc logs -l job-name=ocs-osd-removal-job -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除
ocs-osd-removal-job。oc delete -n openshift-storage job ocs-osd-removal-job
# oc delete -n openshift-storage job ocs-osd-removal-jobCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
job.batch "ocs-osd-removal-job" deleted
job.batch "ocs-osd-removal-job" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
执行以下命令并验证输出中是否存在新节点:
oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
$ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点 Workloads → Pods,确认新节点上的以下 pod 处于
Running状态:-
csi-cephfsplugin-* -
csi-rbdplugin-*
-
验证所有其他所需的 OpenShift Container Storage Pod 是否都处于 Running 状态。
确保创建了新的增量
mon,并处于 Running 状态。oc get pod -n openshift-storage | grep mon
$ oc get pod -n openshift-storage | grep monCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD 和 Mon 可能需要几分钟才能进入
Running状态。验证新 OSD pod 是否在替换节点上运行。
oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osd
$ oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osdCopy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建调试 pod,并为所选主机打开 chroot 环境。
oc debug node/<node name> chroot /host
$ oc debug node/<node name> $ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 "lsblk" 并检查
ocs-deviceset名旁边的 "crypt" 关键字。lsblk
$ lsblkCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 如果验证步骤失败,请联系红帽支持。
2.3.2. 在 VMware 安装程序置备的基础架构中替换操作节点 复制链接链接已复制到粘贴板!
先决条件
- 红帽建议为替换节点配置与被替换节点的类似基础架构、资源和磁盘。
- 您必须登录 OpenShift Container Platform (RHOCP) 集群。
-
如果您从以前的版本升级到 OpenShift Container Storage 版本 4.8,且还没有创建
LocalVolumeDiscovery和LocalVolumeSet对象,现在请按照 本地存储支持的集群的 Post-update 配置更改 中所述的步骤进行。
步骤
- 登录 OpenShift Web 控制台并点击 Compute → Nodes。
- 确定需要替换的节点。记录其 Machine Name。
在要替换的节点上获取标签。
oc get nodes --show-labels | grep <node_name>
$ oc get nodes --show-labels | grep <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 识别要替换的节点中运行的
mon(如果有)和 OSD。oc get pods -n openshift-storage -o wide | grep -i <node_name>
$ oc get pods -n openshift-storage -o wide | grep -i <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 缩减上一步中确定的容器集部署。
例如:
oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage oc scale deployment rook-ceph-osd-0 --replicas=0 -n openshift-storage oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storage
$ oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage $ oc scale deployment rook-ceph-osd-0 --replicas=0 -n openshift-storage $ oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将节点标记为不可调度。
oc adm cordon <node_name>
$ oc adm cordon <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 排空节点。
oc adm drain <node_name> --force --delete-local-data --ignore-daemonsets
$ oc adm drain <node_name> --force --delete-local-data --ignore-daemonsetsCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 点 Compute → Machines。搜索所需的机器。
- 除了所需的机器外,点击 Action 菜单(⋮)→ Delete Machine。
- 单击 Delete 以确认删除机器。会自动创建新机器。
等待新计算机启动并过渡到 Running 状态。
重要此活动可能需要至少 5 到 10 分钟或更长时间。
- 在 OpenShift Web 控制台中点 Compute → Nodes,确认新节点是否处于 Ready 状态。
- 向节点物理地添加新设备。
使用以下任一方法之一将 OpenShift Container Storage 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮)→ Edit Labels。
-
添加
cluster.ocs.openshift.io/openshift-storage并点 Save。
- 使用命令行界面
执行以下命令,将 OpenShift Container Storage 标签应用到新节点:
oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
$ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""Copy to Clipboard Copied! Toggle word wrap Toggle overflow
识别安装 OpenShift 本地存储 Operator 的命名空间,并将其分配给
local_storage_project变量:local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local)$ local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local)$ local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local) echo $local_storage_project openshift-local-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将新的 worker 节点添加到
localVolumeDiscovery和localVolumeSet。更新
localVolumeDiscovery定义,使其包含新节点并删除失败的节点。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记住在退出编辑器之前进行保存。
在上例中,
server3.example.com已被删除,newnode.example.com是新节点。决定要编辑的
localVolumeSet。oc get -n $local_storage_project localvolumeset
# oc get -n $local_storage_project localvolumeset NAME AGE localblock 25hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新
localVolumeSet定义,使其包含新节点并删除失败的节点。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记住在退出编辑器之前进行保存。
在上例中,
server3.example.com已被删除,newnode.example.com是新节点。
验证新的
localblockPV 是否可用。$oc get pv | grep localblock | grep Available local-pv-551d950 512Gi RWO Delete Available localblock 26s
$oc get pv | grep localblock | grep Available local-pv-551d950 512Gi RWO Delete Available localblock 26sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更改到
openshift-storage项目。oc project openshift-storage
$ oc project openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 从集群移除出现故障的 OSD。如果需要,您可以指定多个故障 OSD。
oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=failed-osd-id1,failed-osd-id2 | oc create -f -
$ oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=failed-osd-id1,failed-osd-id2 | oc create -f -Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过检查
ocs-osd-removal-jobpod 的状态,验证 OSD 是否已成功移除。状态为
Completed,确认 OSD 移除作业已成功。oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage
# oc get pod -l job-name=ocs-osd-removal-job -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果
ocs-osd-removal-job失败,且 pod 没有处于预期的Completed状态,请检查 pod 日志以获得进一步的调试。例如:oc logs -l job-name=ocs-osd-removal-job -n openshift-storage
# oc logs -l job-name=ocs-osd-removal-job -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 标识与 PVC 关联的 PV。
#oc get pv -L kubernetes.io/hostname | grep localblock | grep Released local-pv-d6bf175b 1490Gi RWO Delete Released openshift-storage/ocs-deviceset-0-data-0-6c5pw localblock 2d22h compute-1
#oc get pv -L kubernetes.io/hostname | grep localblock | grep Released local-pv-d6bf175b 1490Gi RWO Delete Released openshift-storage/ocs-deviceset-0-data-0-6c5pw localblock 2d22h compute-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果有一个 PV 处于
Released状态,请将其删除。oc delete pv <persistent-volume>
# oc delete pv <persistent-volume>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
#oc delete pv local-pv-d6bf175b persistentvolume "local-pv-d9c5cbd6" deleted
#oc delete pv local-pv-d6bf175b persistentvolume "local-pv-d9c5cbd6" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 确定
crashcollectorpod 部署。oc get deployment --selector=app=rook-ceph-crashcollector,node_name=failed-node-name -n openshift-storage
$ oc get deployment --selector=app=rook-ceph-crashcollector,node_name=failed-node-name -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果已存在
crashcollectorpod 部署,请将其删除。oc delete deployment --selector=app=rook-ceph-crashcollector,node_name=failed-node-name -n openshift-storage
$ oc delete deployment --selector=app=rook-ceph-crashcollector,node_name=failed-node-name -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除
ocs-osd-removal-job。oc delete -n openshift-storage job ocs-osd-removal-job
# oc delete -n openshift-storage job ocs-osd-removal-jobCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
job.batch "ocs-osd-removal-job" deleted
job.batch "ocs-osd-removal-job" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
执行以下命令并验证输出中是否存在新节点:
oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
$ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点 Workloads → Pods,确认新节点上的以下 pod 处于
Running状态:-
csi-cephfsplugin-* -
csi-rbdplugin-*
-
验证所有其他所需的 OpenShift Container Storage Pod 是否都处于 Running 状态。
确保创建了新的增量
mon,并处于 Running 状态。oc get pod -n openshift-storage | grep mon
$ oc get pod -n openshift-storage | grep monCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD 和 Mon 可能需要几分钟才能进入
Running状态。验证新 OSD pod 是否在替换节点上运行。
oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osd
$ oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osdCopy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建调试 pod,并为所选主机打开 chroot 环境。
oc debug node/<node name> chroot /host
$ oc debug node/<node name> $ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 "lsblk" 并检查
ocs-deviceset名旁边的 "crypt" 关键字。lsblk
$ lsblkCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 如果验证步骤失败,请联系红帽支持。
2.3.3. 在 VMware 用户置备的基础架构中替换失败的节点 复制链接链接已复制到粘贴板!
先决条件
- 红帽建议为替换节点配置与被替换节点的类似基础架构、资源和磁盘。
- 您必须登录 OpenShift Container Platform (RHOCP) 集群。
-
如果您从以前的版本升级到 OpenShift Container Storage 版本 4.8,且还没有创建
LocalVolumeDiscovery和LocalVolumeSet对象,现在请按照 本地存储支持的集群的 Post-update 配置更改 中所述的步骤进行。
步骤
确定要替换的节点上的 NODE 并获取标签。
oc get nodes --show-labels | grep <node_name>
$ oc get nodes --show-labels | grep <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 识别要替换的节点中运行的
mon(如果有)和 OSD。oc get pods -n openshift-storage -o wide | grep -i <node_name>
$ oc get pods -n openshift-storage -o wide | grep -i <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 缩减上一步中确定的容器集部署。
例如:
oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage oc scale deployment rook-ceph-osd-0 --replicas=0 -n openshift-storage oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storage
$ oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage $ oc scale deployment rook-ceph-osd-0 --replicas=0 -n openshift-storage $ oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将节点标记为不可调度。
oc adm cordon <node_name>
$ oc adm cordon <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除处于 Terminating 状态的 pod。
oc get pods -A -o wide | grep -i <node_name> | awk '{if ($4 == "Terminating") system ("oc -n " $1 " delete pods " $2 " --grace-period=0 " " --force ")}'$ oc get pods -A -o wide | grep -i <node_name> | awk '{if ($4 == "Terminating") system ("oc -n " $1 " delete pods " $2 " --grace-period=0 " " --force ")}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 排空节点。
oc adm drain <node_name> --force --delete-local-data --ignore-daemonsets
$ oc adm drain <node_name> --force --delete-local-data --ignore-daemonsetsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除节点。
oc delete node <node_name>
$ oc delete node <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 登录 vSphere 并终止标识的虚拟机。
- 使用所需基础架构在 VMware 上创建一个新虚拟机。请参阅支持的基础架构和平台。
- 使用新虚拟机创建新的 OpenShift Container Platform worker 节点。
检查与处于 Pending 状态的 OpenShift Container Platform 相关的证书签名请求(CSR):
oc get csr
$ oc get csrCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为新节点批准所有所需的 OpenShift Container Platform CSR:
oc adm certificate approve <Certificate_Name>
$ oc adm certificate approve <Certificate_Name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在 OpenShift Web 控制台中点 Compute → Nodes,确认新节点是否处于 Ready 状态。
使用以下任一方法之一将 OpenShift Container Storage 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮)→ Edit Labels。
-
添加
cluster.ocs.openshift.io/openshift-storage并点 Save。
- 使用命令行界面
执行以下命令,将 OpenShift Container Storage 标签应用到新节点:
oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
$ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""Copy to Clipboard Copied! Toggle word wrap Toggle overflow
识别安装 OpenShift 本地存储 Operator 的命名空间,并将其分配给
local_storage_project变量:local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local)$ local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local)$ local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local) echo $local_storage_project openshift-local-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将新的 worker 节点添加到
localVolumeDiscovery和localVolumeSet。更新
localVolumeDiscovery定义,使其包含新节点并删除失败的节点。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记住在退出编辑器之前进行保存。
在上例中,
server3.example.com已被删除,newnode.example.com是新节点。决定要编辑的
localVolumeSet。oc get -n $local_storage_project localvolumeset
# oc get -n $local_storage_project localvolumeset NAME AGE localblock 25hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新
localVolumeSet定义,使其包含新节点并删除失败的节点。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记住在退出编辑器之前进行保存。
在上例中,
server3.example.com已被删除,newnode.example.com是新节点。
验证新的
localblockPV 是否可用。$oc get pv | grep localblock | grep Available local-pv-551d950 512Gi RWO Delete Available localblock 26s
$oc get pv | grep localblock | grep Available local-pv-551d950 512Gi RWO Delete Available localblock 26sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更改到
openshift-storage项目。oc project openshift-storage
$ oc project openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 从集群移除出现故障的 OSD。如果需要,您可以指定多个故障 OSD。
oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=failed-osd-id1,failed-osd-id2 | oc create -f -
$ oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=failed-osd-id1,failed-osd-id2 | oc create -f -Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过检查
ocs-osd-removal-jobpod 的状态,验证 OSD 是否已成功移除。状态为
Completed,确认 OSD 移除作业已成功。oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage
# oc get pod -l job-name=ocs-osd-removal-job -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果
ocs-osd-removal-job失败,且 pod 没有处于预期的Completed状态,请检查 pod 日志以获得进一步的调试。例如:oc logs -l job-name=ocs-osd-removal-job -n openshift-storage
# oc logs -l job-name=ocs-osd-removal-job -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除
ocs-osd-removal-job。oc delete -n openshift-storage job ocs-osd-removal-job
# oc delete -n openshift-storage job ocs-osd-removal-jobCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
job.batch "ocs-osd-removal-job" deleted
job.batch "ocs-osd-removal-job" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
执行以下命令并验证输出中是否存在新节点:
oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
$ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点 Workloads → Pods,确认新节点上的以下 pod 处于
Running状态:-
csi-cephfsplugin-* -
csi-rbdplugin-*
-
验证所有其他所需的 OpenShift Container Storage Pod 是否都处于 Running 状态。
确保创建了新的增量
mon,并处于 Running 状态。oc get pod -n openshift-storage | grep mon
$ oc get pod -n openshift-storage | grep monCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD 和 Mon 可能需要几分钟才能进入
Running状态。验证新 OSD pod 是否在替换节点上运行。
oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osd
$ oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osdCopy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建调试 pod,并为所选主机打开 chroot 环境。
oc debug node/<node name> chroot /host
$ oc debug node/<node name> $ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 "lsblk" 并检查
ocs-deviceset名旁边的 "crypt" 关键字。lsblk
$ lsblkCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 如果验证步骤失败,请联系红帽支持。
2.3.4. 在 VMware 安装程序置备的基础架构中替换失败的节点 复制链接链接已复制到粘贴板!
先决条件
- 红帽建议为替换节点配置与被替换节点的类似基础架构、资源和磁盘。
- 您必须登录 OpenShift Container Platform (RHOCP) 集群。
-
如果您从以前的版本升级到 OpenShift Container Storage 版本 4.8,且还没有创建
LocalVolumeDiscovery和LocalVolumeSet对象,现在请按照 本地存储支持的集群的 Post-update 配置更改 中所述的步骤进行。
步骤
- 登录 OpenShift Web 控制台并点击 Compute → Nodes。
- 确定需要替换的节点。记录其 Machine Name。
在要替换的节点上获取标签。
oc get nodes --show-labels | grep <node_name>
$ oc get nodes --show-labels | grep <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 识别要替换的节点中运行的
mon(如果有)和 OSD。oc get pods -n openshift-storage -o wide | grep -i <node_name>
$ oc get pods -n openshift-storage -o wide | grep -i <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 缩减上一步中确定的容器集部署。
例如:
oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage oc scale deployment rook-ceph-osd-0 --replicas=0 -n openshift-storage oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storage
$ oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage $ oc scale deployment rook-ceph-osd-0 --replicas=0 -n openshift-storage $ oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将节点标记为不可调度。
oc adm cordon <node_name>
$ oc adm cordon <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除处于 Terminating 状态的 pod。
oc get pods -A -o wide | grep -i <node_name> | awk '{if ($4 == "Terminating") system ("oc -n " $1 " delete pods " $2 " --grace-period=0 " " --force ")}'$ oc get pods -A -o wide | grep -i <node_name> | awk '{if ($4 == "Terminating") system ("oc -n " $1 " delete pods " $2 " --grace-period=0 " " --force ")}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 排空节点。
oc adm drain <node_name> --force --delete-local-data --ignore-daemonsets
$ oc adm drain <node_name> --force --delete-local-data --ignore-daemonsetsCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 点 Compute → Machines。搜索所需的机器。
- 除了所需的机器外,点击 Action 菜单(⋮)→ Delete Machine。
- 单击 Delete 以确认删除机器。会自动创建新机器。
等待新计算机启动并过渡到 Running 状态。
重要此活动可能需要至少 5 到 10 分钟或更长时间。
- 在 OpenShift Web 控制台中点 Compute → Nodes,确认新节点是否处于 Ready 状态。
- 向节点物理地添加新设备。
使用以下任一方法之一将 OpenShift Container Storage 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮)→ Edit Labels。
-
添加
cluster.ocs.openshift.io/openshift-storage并点 Save。
- 使用命令行界面
执行以下命令,将 OpenShift Container Storage 标签应用到新节点:
oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
$ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""Copy to Clipboard Copied! Toggle word wrap Toggle overflow
识别安装 OpenShift 本地存储 Operator 的命名空间,并将其分配给
local_storage_project变量:local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local)$ local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local)$ local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local) echo $local_storage_project openshift-local-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将新的 worker 节点添加到
localVolumeDiscovery和localVolumeSet。更新
localVolumeDiscovery定义,使其包含新节点并删除失败的节点。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记住在退出编辑器之前进行保存。
在上例中,
server3.example.com已被删除,newnode.example.com是新节点。决定要编辑的
localVolumeSet。oc get -n $local_storage_project localvolumeset
# oc get -n $local_storage_project localvolumeset NAME AGE localblock 25hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新
localVolumeSet定义,使其包含新节点并删除失败的节点。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记住在退出编辑器之前进行保存。
在上例中,
server3.example.com已被删除,newnode.example.com是新节点。
验证新的
localblockPV 是否可用。$oc get pv | grep localblock | grep Available local-pv-551d950 512Gi RWO Delete Available localblock 26s
$oc get pv | grep localblock | grep Available local-pv-551d950 512Gi RWO Delete Available localblock 26sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更改到
openshift-storage项目。oc project openshift-storage
$ oc project openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 从集群移除出现故障的 OSD。如果需要,您可以指定多个故障 OSD。
oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=failed-osd-id1,failed-osd-id2 | oc create -f -
$ oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=failed-osd-id1,failed-osd-id2 | oc create -f -Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过检查
ocs-osd-removal-jobpod 的状态,验证 OSD 是否已成功移除。状态为
Completed,确认 OSD 移除作业已成功。oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage
# oc get pod -l job-name=ocs-osd-removal-job -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果
ocs-osd-removal-job失败,且 pod 没有处于预期的Completed状态,请检查 pod 日志以获得进一步的调试。例如:oc logs -l job-name=ocs-osd-removal-job -n openshift-storage
# oc logs -l job-name=ocs-osd-removal-job -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 标识与 PVC 关联的 PV。
#oc get pv -L kubernetes.io/hostname | grep localblock | grep Released local-pv-d6bf175b 1490Gi RWO Delete Released openshift-storage/ocs-deviceset-0-data-0-6c5pw localblock 2d22h compute-1
#oc get pv -L kubernetes.io/hostname | grep localblock | grep Released local-pv-d6bf175b 1490Gi RWO Delete Released openshift-storage/ocs-deviceset-0-data-0-6c5pw localblock 2d22h compute-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果有一个 PV 处于
Released状态,请将其删除。oc delete pv <persistent-volume>
# oc delete pv <persistent-volume>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
#oc delete pv local-pv-d6bf175b persistentvolume "local-pv-d9c5cbd6" deleted
#oc delete pv local-pv-d6bf175b persistentvolume "local-pv-d9c5cbd6" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 确定
crashcollectorpod 部署。oc get deployment --selector=app=rook-ceph-crashcollector,node_name=failed-node-name -n openshift-storage
$ oc get deployment --selector=app=rook-ceph-crashcollector,node_name=failed-node-name -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果已存在
crashcollectorpod 部署,请将其删除。oc delete deployment --selector=app=rook-ceph-crashcollector,node_name=failed-node-name -n openshift-storage
$ oc delete deployment --selector=app=rook-ceph-crashcollector,node_name=failed-node-name -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除
ocs-osd-removal-job。oc delete -n openshift-storage job ocs-osd-removal-job
# oc delete -n openshift-storage job ocs-osd-removal-jobCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
job.batch "ocs-osd-removal-job" deleted
job.batch "ocs-osd-removal-job" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
执行以下命令并验证输出中是否存在新节点:
oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
$ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点 Workloads → Pods,确认新节点上的以下 pod 处于
Running状态:-
csi-cephfsplugin-* -
csi-rbdplugin-*
-
验证所有其他所需的 OpenShift Container Storage Pod 是否都处于 Running 状态。
确保创建了新的增量
mon,并处于 Running 状态。oc get pod -n openshift-storage | grep mon
$ oc get pod -n openshift-storage | grep monCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD 和 Mon 可能需要几分钟才能进入
Running状态。验证新 OSD pod 是否在替换节点上运行。
oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osd
$ oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osdCopy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建调试 pod,并为所选主机打开 chroot 环境。
oc debug node/<node name> chroot /host
$ oc debug node/<node name> $ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 "lsblk" 并检查
ocs-deviceset名旁边的 "crypt" 关键字。lsblk
$ lsblkCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 如果验证步骤失败,请联系红帽支持。
2.4. 在 Red Hat Virtualization 基础架构中替换存储节点 复制链接链接已复制到粘贴板!
- 要替换一个正常操作的节点,请查看 第 2.4.1 节 “在 Red Hat Virtualization 安装程序置备的基础架构中替换操作节点”
- 要替换出现故障的节点,请参阅 第 2.4.2 节 “在 Red Hat Virtualization 安装程序置备的基础架构中替换失败的节点”
2.4.1. 在 Red Hat Virtualization 安装程序置备的基础架构中替换操作节点 复制链接链接已复制到粘贴板!
使用这个流程替换 Red Hat Virtualization 安装程序置备的基础架构 (IPI) 上的操作节点。
先决条件
- 红帽建议为替换节点配置类似的基础架构、资源和磁盘,以用于被替换的节点。
- 您必须登录 OpenShift Container Platform (RHOCP) 集群。
-
如果您从以前的版本升级到 OpenShift Container Storage 版本 4.8,且还没有创建
LocalVolumeDiscovery和LocalVolumeSet对象,现在请按照 本地存储支持的集群的 Post-update 配置更改 中所述的步骤进行。
步骤
- 登录 OpenShift Web 控制台并点击 Compute → Nodes。
- 确定需要替换的节点。记录其 Machine Name。
在要替换的节点上获取标签。
oc get nodes --show-labels | grep <node_name>
$ oc get nodes --show-labels | grep <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 识别要替换的节点中运行的 mon(若有)和 OSD。
oc get pods -n openshift-storage -o wide | grep -i <node_name>
$ oc get pods -n openshift-storage -o wide | grep -i <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 缩减上一步中确定的容器集部署。
例如:
oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage oc scale deployment rook-ceph-osd-0 --replicas=0 -n openshift-storage oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storage
$ oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage $ oc scale deployment rook-ceph-osd-0 --replicas=0 -n openshift-storage $ oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将节点标记为不可调度。
oc adm cordon <node_name>
$ oc adm cordon <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 排空节点。
oc adm drain <node_name> --force --delete-local-data --ignore-daemonsets
$ oc adm drain <node_name> --force --delete-local-data --ignore-daemonsetsCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 点 Compute → Machines。搜索所需的机器。
- 除了所需的机器外,点击 Action 菜单(⋮)→ Delete Machine。
单击 Delete 以确认删除机器。会自动创建新机器。等待新计算机启动并过渡到 Running 状态。
重要此活动可能需要至少 5 到 10 分钟或更长时间。
- 在 OpenShift Web 控制台中点 Compute → Nodes。确认新节点是否处于 Ready 状态。
- 物理向节点添加新设备。
使用以下任一方法之一将 OpenShift Container Storage 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮)→ Edit Labels。
-
添加
cluster.ocs.openshift.io/openshift-storage并点 Save。
- 使用命令行界面
- 执行以下命令,将 OpenShift Container Storage 标签应用到新节点:
oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
$ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""Copy to Clipboard Copied! Toggle word wrap Toggle overflow
识别安装 OpenShift 本地存储 Operator 的命名空间,并将其分配给
local_storage_project变量:local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local)$ local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local)$ local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local) echo $local_storage_project openshift-local-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将新的 worker 节点添加到
localVolumeDiscovery和localVolumeSet。更新
localVolumeDiscovery定义,使其包含新节点并删除失败的节点。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记住在退出编辑器之前进行保存。
在上例中,
server3.example.com已被删除,newnode.example.com是新节点。决定要编辑的
localVolumeSet。oc get -n $local_storage_project localvolumeset
# oc get -n $local_storage_project localvolumeset NAME AGE localblock 25hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新
localVolumeSet定义,使其包含新节点并删除失败的节点。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记住在退出编辑器之前进行保存。
在上例中,
server3.example.com已被删除,newnode.example.com是新节点。
验证新的
localblockPV 是否可用。$oc get pv | grep localblock | grep Available local-pv-551d950 512Gi RWO Delete Available localblock 26s
$oc get pv | grep localblock | grep Available local-pv-551d950 512Gi RWO Delete Available localblock 26sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更改到
openshift-storage项目。oc project openshift-storage
$ oc project openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 从集群移除出现故障的 OSD。如果需要,您可以指定多个故障 OSD。
oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=failed-osd-id1,failed-osd-id2 | oc create -f -
$ oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=failed-osd-id1,failed-osd-id2 | oc create -f -Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过检查
ocs-osd-removal-jobpod 的状态,验证 OSD 是否已成功移除。状态为
Completed,确认 OSD 移除作业已成功。oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage
# oc get pod -l job-name=ocs-osd-removal-job -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果
ocs-osd-removal-job失败,且 pod 没有处于预期的 Completed 状态,请检查 pod 日志以获得进一步的调试。例如:oc logs -l job-name=ocs-osd-removal-job -n openshift-storage
# oc logs -l job-name=ocs-osd-removal-job -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 标识与 PVC 关联的 PV。
oc get pv -L kubernetes.io/hostname | grep localblock | grep Released
# oc get pv -L kubernetes.io/hostname | grep localblock | grep Released local-pv-d6bf175b 512Gi RWO Delete Released openshift-storage/ocs-deviceset-0-data-0-6c5pw localblock 2d22h server3.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果有一个 PV 处于
Released状态,请将其删除。oc delete pv <persistent-volume>
# oc delete pv <persistent-volume>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
oc delete pv local-pv-d6bf175b
# oc delete pv local-pv-d6bf175b persistentvolume "local-pv-d6bf175b" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 确定
crashcollectorpod 部署。oc get deployment --selector=app=rook-ceph-crashcollector,node_name=failed-node-name -n openshift-storage
$ oc get deployment --selector=app=rook-ceph-crashcollector,node_name=failed-node-name -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果有现有的
crashcollectorpod,请将其删除。oc delete deployment --selector=app=rook-ceph-crashcollector,node_name=failed-node-name -n openshift-storage
$ oc delete deployment --selector=app=rook-ceph-crashcollector,node_name=failed-node-name -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除
ocs-osd-removal任务。oc delete -n openshift-storage job ocs-osd-removal-job
# oc delete -n openshift-storage job ocs-osd-removal-jobCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
job.batch "ocs-osd-removal-job" deleted
job.batch "ocs-osd-removal-job" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
执行以下命令并验证输出中是否存在新节点:
oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
$ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点 Workloads → Pods,确认新节点上的以下 pod 处于
Running状态:-
csi-cephfsplugin-* -
csi-rbdplugin-*
-
验证所有其他所需的 OpenShift Container Storage Pod 是否都处于 Running 状态。
确保创建了新的增量
mon,并处于 Running 状态。oc get pod -n openshift-storage | grep mon
$ oc get pod -n openshift-storage | grep monCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
rook-ceph-mon-a-cd575c89b-b6k66 2/2 Running 0 38m rook-ceph-mon-b-6776bc469b-tzzt8 2/2 Running 0 38m rook-ceph-mon-d-5ff5d488b5-7v8xh 2/2 Running 0 4m8s
rook-ceph-mon-a-cd575c89b-b6k66 2/2 Running 0 38m rook-ceph-mon-b-6776bc469b-tzzt8 2/2 Running 0 38m rook-ceph-mon-d-5ff5d488b5-7v8xh 2/2 Running 0 4m8sCopy to Clipboard Copied! Toggle word wrap Toggle overflow OSD 和 Mon 可能需要几分钟才能进入
Running状态。验证新 OSD pod 是否在替换节点上运行。
oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osd
$ oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osdCopy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建调试 pod,并为所选主机打开 chroot 环境。
oc debug node/<node name> chroot /host
$ oc debug node/<node name> $ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 "lsblk" 并检查
ocs-deviceset名旁边的 "crypt" 关键字。lsblk
$ lsblkCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 如果验证步骤失败,请联系红帽支持。
2.4.2. 在 Red Hat Virtualization 安装程序置备的基础架构中替换失败的节点 复制链接链接已复制到粘贴板!
执行此流程替换在 OpenShift Container Storage 的 Red Hat Virtualization 安装程序置备的基础架构(IPI)中无法正常工作的节点。
先决条件
- 红帽建议为替换节点配置类似的基础架构、资源和磁盘,以用于被替换的节点。
- 您必须登录 OpenShift Container Platform (RHOCP) 集群。
-
如果您从以前的版本升级到 OpenShift Container Storage 版本 4.8,且还没有创建
LocalVolumeDiscovery和LocalVolumeSet对象,现在请按照 本地存储支持的集群的 Post-update 配置更改 中所述的步骤进行。
步骤
- 登录 OpenShift Web 控制台并点击 Compute → Nodes。
- 确定需要替换的节点。记录其 Machine Name。
获取要替换节点上的标签。
oc get nodes --show-labels | grep <node_name>
$ oc get nodes --show-labels | grep <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 识别要替换的节点中运行的 mon(若有)和 OSD。
oc get pods -n openshift-storage -o wide | grep -i <node_name>
$ oc get pods -n openshift-storage -o wide | grep -i <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 缩减上一步中确定的容器集部署。
例如:
oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage oc scale deployment rook-ceph-osd-0 --replicas=0 -n openshift-storage oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storage
$ oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage $ oc scale deployment rook-ceph-osd-0 --replicas=0 -n openshift-storage $ oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将节点标记为不可调度。
oc adm cordon <node_name>
$ oc adm cordon <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除处于
Terminating状态的 pod。oc get pods -A -o wide | grep -i <node_name> | awk '{if ($4 == "Terminating") system ("oc -n " $1 " delete pods " $2 " --grace-period=0 " " --force ")}'$ oc get pods -A -o wide | grep -i <node_name> | awk '{if ($4 == "Terminating") system ("oc -n " $1 " delete pods " $2 " --grace-period=0 " " --force ")}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 排空节点。
oc adm drain <node_name> --force --delete-local-data --ignore-daemonsets
$ oc adm drain <node_name> --force --delete-local-data --ignore-daemonsetsCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 点 Compute → Machines。搜索所需的机器。
- 除了所需的机器外,点击 Action 菜单(⋮) → Delete Machine。
单击 Delete 以确认删除机器。会自动创建新机器。等待新计算机启动并过渡到 Running 状态。
重要此活动可能需要至少 5 到 10 分钟或更长时间。
- 在 OpenShift Web 控制台中点 Compute → Nodes。确认新节点是否处于 Ready 状态。
- 物理向节点添加新设备。
使用以下任一方法之一将 OpenShift Container Storage 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮) → Edit Labels。
- 添加 cluster.ocs.openshift.io/openshift-storage 并点 Save。
- 使用命令行界面
- 执行以下命令,将 OpenShift Container Storage 标签应用到新节点:
oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
$ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""Copy to Clipboard Copied! Toggle word wrap Toggle overflow
识别安装 OpenShift 本地存储 Operator 的命名空间,并将其分配给
local_storage_project变量:local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local)$ local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local)$ local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local) echo $local_storage_project openshift-local-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将新的 worker 节点添加到
localVolumeDiscovery和localVolumeSet。更新
localVolumeDiscovery定义,使其包含新节点并删除失败的节点。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记住在退出编辑器之前进行保存。
在上例中,
server3.example.com已被删除,newnode.example.com是新节点。决定要编辑的
localVolumeSet。oc get -n $local_storage_project localvolumeset
# oc get -n $local_storage_project localvolumeset NAME AGE localblock 25hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新
localVolumeSet定义,使其包含新节点并删除失败的节点。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记住在退出编辑器之前进行保存。
在上例中,
server3.example.com已被删除,newnode.example.com是新节点。
验证新的
localblockPV 是否可用。$oc get pv | grep localblock | grep Available local-pv-551d950 512Gi RWO Delete Available localblock 26s
$oc get pv | grep localblock | grep Available local-pv-551d950 512Gi RWO Delete Available localblock 26sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更改到
openshift-storage项目。oc project openshift-storage
$ oc project openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 从集群移除出现故障的 OSD。如果需要,您可以指定多个故障 OSD。
oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=failed-osd-id1,failed-osd-id2 | oc create -f -
$ oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=failed-osd-id1,failed-osd-id2 | oc create -f -Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过检查
ocs-osd-removal-jobpod 的状态,验证 OSD 是否已成功移除。状态为
Completed,确认 OSD 移除作业已成功。oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage
# oc get pod -l job-name=ocs-osd-removal-job -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果
ocs-osd-removal-job失败,且 pod 没有处于预期的 Completed 状态,请检查 pod 日志以获得进一步的调试。例如:oc logs -l job-name=ocs-osd-removal-job -n openshift-storage
# oc logs -l job-name=ocs-osd-removal-job -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 标识与 PVC 关联的 PV。
oc get pv -L kubernetes.io/hostname | grep localblock | grep Released
# oc get pv -L kubernetes.io/hostname | grep localblock | grep Released local-pv-d6bf175b 512Gi RWO Delete Released openshift-storage/ocs-deviceset-0-data-0-6c5pw localblock 2d22h server3.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果有一个 PV 处于 Released 状态,请将其删除。
oc delete pv <persistent-volume>
# oc delete pv <persistent-volume>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
oc delete pv local-pv-d6bf175b
# oc delete pv local-pv-d6bf175b persistentvolume "local-pv-d6bf175b" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 确定
crashcollectorpod 部署。oc get deployment --selector=app=rook-ceph-crashcollector,node_name=failed-node-name -n openshift-storage
$ oc get deployment --selector=app=rook-ceph-crashcollector,node_name=failed-node-name -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果已存在 crashcollector pod 部署,请将其删除。
oc delete deployment --selector=app=rook-ceph-crashcollector,node_name=failed-node-name -n openshift-storage
$ oc delete deployment --selector=app=rook-ceph-crashcollector,node_name=failed-node-name -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除
ocs-osd-removal任务。oc delete -n openshift-storage job ocs-osd-removal-job
# oc delete -n openshift-storage job ocs-osd-removal-jobCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
job.batch "ocs-osd-removal-job" deleted
job.batch "ocs-osd-removal-job" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
执行以下命令并验证输出中是否存在新节点:
oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
$ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点 Workloads → Pods,确认新节点上的以下 pod 处于
Running状态:-
csi-cephfsplugin-* -
csi-rbdplugin-*
-
验证所有其他所需的 OpenShift Container Storage Pod 是否都处于 Running 状态。
确保创建了新的增量
mon,并处于 Running 状态。oc get pod -n openshift-storage | grep mon
$ oc get pod -n openshift-storage | grep monCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
rook-ceph-mon-a-cd575c89b-b6k66 2/2 Running 0 38m rook-ceph-mon-b-6776bc469b-tzzt8 2/2 Running 0 38m rook-ceph-mon-d-5ff5d488b5-7v8xh 2/2 Running 0 4m8s
rook-ceph-mon-a-cd575c89b-b6k66 2/2 Running 0 38m rook-ceph-mon-b-6776bc469b-tzzt8 2/2 Running 0 38m rook-ceph-mon-d-5ff5d488b5-7v8xh 2/2 Running 0 4m8sCopy to Clipboard Copied! Toggle word wrap Toggle overflow OSD 和 Mon 可能需要几分钟才能进入
Running状态。验证新 OSD pod 是否在替换节点上运行。
oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osd
$ oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osdCopy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建调试 pod,并为所选主机打开 chroot 环境。
oc debug node/<node name> chroot /host
$ oc debug node/<node name> $ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 "lsblk" 并检查
ocs-deviceset名旁边的 "crypt" 关键字。lsblk
$ lsblkCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 如果验证步骤失败,请联系红帽支持。
2.5. 替换 IBM Power Systems 基础架构中的存储节点 复制链接链接已复制到粘贴板!
对于 OpenShift Container Storage,可以主动对正常操作的节点进行替换,并主动为 IBM Power Systems 相关部署重启一个节点。
2.5.1. 替换 IBM Power 系统上的操作或失败存储节点 复制链接链接已复制到粘贴板!
先决条件
- 红帽建议为替换节点配置类似的基础架构和资源,以用于被替换的节点。
- 您必须登录 OpenShift Container Platform (RHOCP) 集群。
-
如果您从以前的版本升级到 OpenShift Container Storage 4.8,且还没有创建
LocalVolumeDiscovery对象,现在请按照 由本地存储支持的集群的 Post-update 配置更改 中所述的步骤进行。
步骤
识别节点,并在要替换的节点上获取标签。
oc get nodes --show-labels | grep <node_name>
$ oc get nodes --show-labels | grep <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 识别要替换的节点中运行的
mon(如果有)和对象存储设备(OSD)pod。oc get pods -n openshift-storage -o wide | grep -i <node_name>
$ oc get pods -n openshift-storage -o wide | grep -i <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 缩减上一步中确定的容器集部署。
例如:
oc scale deployment rook-ceph-mon-a --replicas=0 -n openshift-storage oc scale deployment rook-ceph-osd-1 --replicas=0 -n openshift-storage oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storage
$ oc scale deployment rook-ceph-mon-a --replicas=0 -n openshift-storage $ oc scale deployment rook-ceph-osd-1 --replicas=0 -n openshift-storage $ oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将节点标记为不可调度。
oc adm cordon <node_name>
$ oc adm cordon <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除处于 Terminating 状态的 pod
oc get pods -A -o wide | grep -i <node_name> | awk '{if ($4 == "Terminating") system ("oc -n " $1 " delete pods " $2 " --grace-period=0 " " --force ")}'$ oc get pods -A -o wide | grep -i <node_name> | awk '{if ($4 == "Terminating") system ("oc -n " $1 " delete pods " $2 " --grace-period=0 " " --force ")}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 排空节点。
oc adm drain <node_name> --force --delete-local-data --ignore-daemonsets
$ oc adm drain <node_name> --force --delete-local-data --ignore-daemonsetsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除节点。
oc delete node <node_name>
$ oc delete node <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 获取具有所需基础架构的新 IBM Power 机器。请参阅在 IBM Power 系统上安装集群。
- 使用新的 IBM Power Systems 机器创建一个新的 OpenShift Container Platform 节点。
检查与处于
Pending状态的 OpenShift Container Storage 相关的证书签名请求 (CSR):oc get csr
$ oc get csrCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为新节点批准所有所需的 OpenShift Container Storage CSR:
oc adm certificate approve <Certificate_Name>
$ oc adm certificate approve <Certificate_Name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在 OpenShift Web 控制台中点 Compute → Nodes,确认新节点是否处于 Ready 状态。
使用您首选的接口将 OpenShift Container Storage 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮) → Edit Labels。
-
添加
cluster.ocs.openshift.io/openshift-storage并点 Save。
- 使用命令行界面
- 执行以下命令,将 OpenShift Container Storage 标签应用到新节点:
oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=''
$ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=''Copy to Clipboard Copied! Toggle word wrap Toggle overflow
识别安装 OpenShift 本地存储 Operator 的命名空间,并将其分配给
local_storage_project变量:local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local)$ local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local)$ local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local) echo $local_storage_project openshift-local-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将新的 worker 节点添加到
localVolumeDiscovery。更新
localVolumeDiscovery定义,使其包含新节点并删除失败的节点。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记住在退出编辑器之前进行保存。
在上例中,
worker-0已被删除,worker-3是新节点。
将新添加的 worker 节点添加到 localVolume。
决定要编辑哪些
本地卷。oc get -n $local_storage_project localvolume
# oc get -n $local_storage_project localvolume NAME AGE localblock 25hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新
localVolume定义,使其包含新节点并删除失败的节点。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记住在退出编辑器之前进行保存。
在上例中,
worker-0已被删除,worker-3是新节点。
验证新的
localblockPV 是否可用。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更改到
openshift-storage项目。oc project openshift-storage
$ oc project openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 从集群移除出现故障的 OSD。如果需要,您可以指定多个故障 OSD。
根据需要识别 PVC,我们需要删除与该特定 PVC 关联的 PV。
osd_id_to_remove=1 oc get -n openshift-storage -o yaml deployment rook-ceph-osd-${osd_id_to_remove} | grep ceph.rook.io/pvc$ osd_id_to_remove=1 $ oc get -n openshift-storage -o yaml deployment rook-ceph-osd-${osd_id_to_remove} | grep ceph.rook.io/pvcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 其中,
osd_id_to_remove是 pod 名称中紧接在rook-ceph-osd-prefix后面的整数。在本例中,部署名称为rook-ceph-osd-1。输出示例:
ceph.rook.io/pvc: ocs-deviceset-localblock-0-data-0-g2mmc ceph.rook.io/pvc: ocs-deviceset-localblock-0-data-0-g2mmcceph.rook.io/pvc: ocs-deviceset-localblock-0-data-0-g2mmc ceph.rook.io/pvc: ocs-deviceset-localblock-0-data-0-g2mmcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,PVC 名称为
ocs-deviceset-localblock-0-data-0-g2mmc。从集群移除出现故障的 OSD。
oc process -n openshift-storage ocs-osd-removal -p FAILED_OSD_IDS=${osd_id_to_remove} |oc create -f -$ oc process -n openshift-storage ocs-osd-removal -p FAILED_OSD_IDS=${osd_id_to_remove} |oc create -f -Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以通过在 命令中添加逗号分隔的 OSD ID 来移除多个 OSD。(例如:FAILED_OSD_IDS=0,1,2)
警告这一步会导致 OSD 完全从集群中移除。确保提供了
osd_id_to_remove的正确值。
通过检查
ocs-osd-removal-jobpod 的状态,验证 OSD 是否已成功移除。状态为
Completed,确认 OSD 移除作业已成功。oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage
# oc get pod -l job-name=ocs-osd-removal-job -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果
ocs-osd-removal-job失败,且 pod 没有处于预期的Completed状态,请检查 pod 日志以获得进一步的调试。例如:oc logs -l job-name=ocs-osd-removal-job -n openshift-storage
# oc logs -l job-name=ocs-osd-removal-job -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除与故障节点关联的 PV。
标识与 PVC 关联的 PV。PVC 名称应当与我们在第 16(a)步中获得的内容相同。
oc get pv -L kubernetes.io/hostname | grep localblock | grep Released
# oc get pv -L kubernetes.io/hostname | grep localblock | grep Released local-pv-5c9b8982 500Gi RWO Delete Released openshift-storage/ocs-deviceset-localblock-0-data-0-g2mmc localblock 24h worker-0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除 PV:
oc delete pv <persistent-volume>
# oc delete pv <persistent-volume>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
oc delete pv local-pv-5c9b8982
# oc delete pv local-pv-5c9b8982 persistentvolume "local-pv-5c9b8982" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
删除
crashcollectorpod 部署。oc delete deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> -n openshift-storage
$ oc delete deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除
ocs-osd-removal-job。oc delete -n openshift-storage job ocs-osd-removal-job
# oc delete -n openshift-storage job ocs-osd-removal-jobCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
job.batch "ocs-osd-removal-job" deleted
job.batch "ocs-osd-removal-job" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
执行以下命令并验证输出中是否存在新节点:
oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
$ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点 Workloads → Pods,确认新节点上的以下 pod 处于 Running 状态 :
-
csi-cephfsplugin-* -
csi-rbdplugin-*
-
验证所有其他所需的 OpenShift Container Storage Pod 是否都处于 Running 状态。
确保创建了新的增量
mon,并处于 Running 状态。oc get pod -n openshift-storage | grep mon
$ oc get pod -n openshift-storage | grep monCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
rook-ceph-mon-b-74f6dc9dd6-4llzq 1/1 Running 0 6h14m rook-ceph-mon-c-74948755c-h7wtx 1/1 Running 0 4h24m rook-ceph-mon-d-598f69869b-4bv49 1/1 Running 0 162m
rook-ceph-mon-b-74f6dc9dd6-4llzq 1/1 Running 0 6h14m rook-ceph-mon-c-74948755c-h7wtx 1/1 Running 0 4h24m rook-ceph-mon-d-598f69869b-4bv49 1/1 Running 0 162mCopy to Clipboard Copied! Toggle word wrap Toggle overflow OSD 和 Mon 可能需要几分钟才能进入
Running状态。验证新 OSD pod 是否在替换节点上运行。
oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osd
$ oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osdCopy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建调试 pod,并为所选主机打开 chroot 环境。
oc debug node/<node name> chroot /host
$ oc debug node/<node name> $ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 "lsblk" 并检查
ocs-deviceset名旁边的 "crypt" 关键字。lsblk
$ lsblkCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 如果验证步骤失败,请联系红帽支持。