替换节点
有关如何安全替换 OpenShift Data Foundation 集群中的节点的说明。
摘要
使开源包含更多 复制链接链接已复制到粘贴板!
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息。
对红帽文档提供反馈 复制链接链接已复制到粘贴板!
我们感谢您对文档提供反馈信息。请告诉我们如何让它更好。
要提供反馈,请创建一个 Bugzilla ticket:
- 进入 Bugzilla 网站。
- 在 Component 部分中,选择 文档。
- 在 Description 中输入您要提供的信息。包括文档相关部分的链接。
- 点 Submit Bug。
前言 复制链接链接已复制到粘贴板!
对于 OpenShift Data Foundation,可以为操作节点主动执行节点替换,并为以下部署针对故障节点主动执行节点:
对于 Amazon Web Services(AWS)
- 用户置备的基础架构
- 安装程序置备的基础架构
对于 VMware
- 用户置备的基础架构
- 安装程序置备的基础架构
Red Hat Virtualization
- 安装程序置备的基础架构
对于 Microsoft Azure
- 安装程序置备的基础架构
用于本地存储设备
- 裸机
- VMware
- Red Hat Virtualization
- IBM Power
- 有关以外部模式替换存储节点,请参阅 Red Hat Ceph Storage 文档。
第 1 章 OpenShift Data Foundation 使用动态设备部署 复制链接链接已复制到粘贴板!
1.1. 在 AWS 上部署的 OpenShift Data Foundation 复制链接链接已复制到粘贴板!
要替换正常运行的节点,请参阅:
要替换失败的节点,请参阅:
1.1.1. 在用户置备的基础架构中替换可运行的 AWS 节点 复制链接链接已复制到粘贴板!
先决条件
- 确保替换节点配置类似的基础架构和资源,以用于被替换的节点。
- 您必须登录到 OpenShift Container Platform 集群。
流程
- 确定需要替换的节点。
将节点标记为不可调度:
oc adm cordon <node_name>
$ oc adm cordon <node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <node_name>
- 指定替换的节点的名称。
排空节点:
oc adm drain <node_name> --force --delete-emptydir-data=true --ignore-daemonsets
$ oc adm drain <node_name> --force --delete-emptydir-data=true --ignore-daemonsets
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要此活动可能至少需要 5 到 10 分钟或更多。Ceph 周期内生成的 Ceph 错误是临时的,当您标记新节点并且可以正常工作时,会自动解决。
删除节点:
oc delete nodes <node_name>
$ oc delete nodes <node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 使用所需的基础架构创建一个新的 Amazon Web Service(AWS)机器实例。请参阅 平台要求。
- 使用新的 AWS 机器集创建新的 OpenShift Container Platform 节点。
检查与处于
Pending
状态的 OpenShift Container Platform 相关的证书签名请求(CSR):oc get csr
$ oc get csr
Copy 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 <certificate_name>
- 指定 CSR 的名称。
- 点 Compute → Nodes。确认新节点处于 Ready 状态。
使用以下之一将 OpenShift Data Foundation 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮) → Edit Labels。
-
添加
cluster.ocs.openshift.io/openshift-storage
,然后点 Save。
- 使用命令行界面
- 将 OpenShift Data Foundation 标签应用到新节点:
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 <new_node_name>
- 指定新节点的名称。
验证步骤
验证输出中是否存在新节点:
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' ' -f1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点击 Workloads → Pods。确认新节点上至少以下 pod 处于 Running 状态:
-
csi-cephfsplugin-*
-
csi-rbdplugin-*
-
- 验证所有其他所需的 OpenShift Data Foundation 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 osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建 debug pod 并为一个或多个所选主机打开 chroot 环境:
oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chroot /host
$ chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示可用块设备列表:
lsblk
$ lsblk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查一个或多个
ocs-deviceset
名称旁的crypt
关键字。
- 如果验证步骤失败,请联系红帽支持团队。
1.1.2. 在安装程序置备的基础架构中替换可正常工作的 AWS 节点 复制链接链接已复制到粘贴板!
流程
- 登录 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 <node_name>
- 指定替换的节点的名称。
排空节点:
oc adm drain <node_name> --force --delete-emptydir-data=true --ignore-daemonsets
$ oc adm drain <node_name> --force --delete-emptydir-data=true --ignore-daemonsets
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要此活动可能至少需要 5 到 10 分钟或更多。Ceph 周期内生成的 Ceph 错误是临时的,当您标记新节点并且可以正常工作时,会自动解决。
- 点 Compute → Machines。搜索所需的机器。
- 除了所需机器外,点击 Action 菜单(⋮) → Delete Machine。
- 点 Delete 以确认机器已被删除。会自动创建新机器。
等待新计算机启动并过渡到 Running 状态。
重要此活动可能至少需要 5 到 10 分钟或更多。
- 点 Compute → Nodes。确认新节点处于 Ready 状态。
将 OpenShift Data Foundation 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮) → Edit Labels。
-
添加
cluster.ocs.openshift.io/openshift-storage
,然后点 Save。
- 使用命令行界面
- 将 OpenShift Data Foundation 标签应用到新节点:
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 <new_node_name>
- 指定新节点的名称。
验证步骤
验证输出中是否存在新节点:
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' ' -f1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点击 Workloads → Pods。确认新节点上至少以下 pod 处于 Running 状态:
-
csi-cephfsplugin-*
-
csi-rbdplugin-*
-
- 验证所有其他所需的 OpenShift Data Foundation 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 osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建 debug pod 并为一个或多个所选主机打开 chroot 环境:
oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chroot /host
$ chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示可用块设备列表:
lsblk
$ lsblk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查一个或多个
ocs-deviceset
名称旁的crypt
关键字。
- 如果验证步骤失败,请联系红帽支持团队。
1.1.3. 在用户置备的基础架构中替换失败的 AWS 节点 复制链接链接已复制到粘贴板!
先决条件
- 确保替换节点配置类似的基础架构和资源,以用于被替换的节点。
- 您必须登录到 OpenShift Container Platform 集群。
流程
- 识别您要替换的节点的 Amazon Web Service(AWS)机器实例。
- 登录 AWS,再终止您确定的 AWS 机器实例。
- 使用所需基础架构创建新的 AWS 机器集。请参阅 平台要求。
- 使用新的 AWS 机器集创建新的 OpenShift Container Platform 节点。
检查与处于
Pending
状态的 OpenShift Container Platform 相关的证书签名请求(CSR):oc get csr
$ oc get csr
Copy 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 <certificate_name>
- 指定 CSR 的名称。
- 点 Compute → Nodes。确认新节点处于 Ready 状态。
使用以下任一方法之一将 OpenShift Data Foundation 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮) → Edit Labels。
-
添加
cluster.ocs.openshift.io/openshift-storage
,然后点 Save。
- 使用命令行界面
- 执行以下命令,将 OpenShift Data Foundation 标签应用到新节点:
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 <new_node_name>
- 指定新节点的名称。
验证步骤
验证输出中是否存在新节点:
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' ' -f1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点击 Workloads → Pods。确认新节点上至少以下 pod 处于 Running 状态:
-
csi-cephfsplugin-*
-
csi-rbdplugin-*
-
- 验证所有其他所需的 OpenShift Data Foundation 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 osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建 debug pod 并为一个或多个所选主机打开 chroot 环境:
oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chroot /host
$ chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示可用块设备列表:
lsblk
$ lsblk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查一个或多个
ocs-deviceset
名称旁的crypt
关键字。
- 如果验证步骤失败,请联系红帽支持团队。
1.1.4. 在安装程序置备的基础架构中替换失败的 AWS 节点 复制链接链接已复制到粘贴板!
流程
- 登录 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 周期内生成的 Ceph 错误是临时的,当您标记新节点并且可以正常工作时,会自动解决。
- 点 Compute → Nodes。确认新节点处于 Ready 状态。
使用以下任一方法之一将 OpenShift Data Foundation 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮) → Edit Labels。
-
添加
cluster.ocs.openshift.io/openshift-storage
,然后点 Save。
- 使用命令行界面
- 将 OpenShift Data Foundation 标签应用到新节点:
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 <new_node_name>
- 指定新节点的名称。
- 可选: 如果没有自动删除失败的 Amazon Web Service(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' ' -f1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点击 Workloads → Pods。确认新节点上至少以下 pod 处于 Running 状态:
-
csi-cephfsplugin-*
-
csi-rbdplugin-*
-
- 验证所有其他所需的 OpenShift Data Foundation 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 osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建 debug pod 并为一个或多个所选主机打开 chroot 环境:
oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chroot /host
$ chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示可用块设备列表:
lsblk
$ lsblk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查一个或多个
ocs-deviceset
名称旁的crypt
关键字。
- 如果验证步骤失败,请联系红帽支持团队。
1.2. 在 VMware 上部署的 OpenShift Data Foundation 复制链接链接已复制到粘贴板!
要替换正常运行的节点,请参阅:
要替换失败的节点,请参阅:
1.2.1. 在用户置备的基础架构中替换可运行的 VMware 节点 复制链接链接已复制到粘贴板!
先决条件
- 确保替换节点配置类似的基础架构和资源,以用于被替换的节点。
- 您必须登录到 OpenShift Container Platform 集群。
流程
- 识别需要替换的节点及其虚拟机(VM)。
将节点标记为不可调度:
oc adm cordon <node_name>
$ oc adm cordon <node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <node_name>
- 指定替换的节点的名称。
排空节点:
oc adm drain <node_name> --force --delete-emptydir-data=true --ignore-daemonsets
$ oc adm drain <node_name> --force --delete-emptydir-data=true --ignore-daemonsets
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要此活动可能至少需要 5 到 10 分钟或更多。Ceph 周期内生成的 Ceph 错误是临时的,当您标记新节点并且可以正常工作时,会自动解决。
删除节点:
oc delete nodes <node_name>
$ oc delete nodes <node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 登录到 VMware vSphere,终止您识别的虚拟机:
重要仅从清单中删除虚拟机,而不从磁盘中删除。
- 在带有所需基础架构的 VMware vSphere 上创建新虚拟机。请参阅 平台要求。
- 使用新虚拟机创建新的 OpenShift Container Platform worker 节点。
检查与处于
Pending
状态的 OpenShift Container Platform 相关的证书签名请求(CSR):oc get csr
$ oc get csr
Copy 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 <certificate_name>
- 指定 CSR 的名称。
- 点 Compute → Nodes。确认新节点处于 Ready 状态。
使用以下任一方法之一将 OpenShift Data Foundation 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮) → Edit Labels。
-
添加
cluster.ocs.openshift.io/openshift-storage
,然后点 Save。
- 使用命令行界面
- 将 OpenShift Data Foundation 标签应用到新节点:
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 <new_node_name>
- 指定新节点的名称。
验证步骤
验证输出中是否存在新节点:
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' ' -f1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点击 Workloads → Pods。确认新节点上至少以下 pod 处于 Running 状态:
-
csi-cephfsplugin-*
-
csi-rbdplugin-*
-
- 验证所有其他所需的 OpenShift Data Foundation 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 osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建 debug pod 并为一个或多个所选主机打开 chroot 环境:
oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chroot /host
$ chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示可用块设备列表:
lsblk
$ lsblk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查一个或多个
ocs-deviceset
名称旁的crypt
关键字。
- 如果验证步骤失败,请联系红帽支持团队。
1.2.2. 在安装程序置备的基础架构中替换可运行的 VMware 节点 复制链接链接已复制到粘贴板!
流程
- 登录 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 <node_name>
- 指定替换的节点的名称。
排空节点:
oc adm drain <node_name> --force --delete-emptydir-data=true --ignore-daemonsets
$ oc adm drain <node_name> --force --delete-emptydir-data=true --ignore-daemonsets
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要此活动可能至少需要 5 到 10 分钟或更多。Ceph 周期内生成的 Ceph 错误是临时的,当您标记新节点并且可以正常工作时,会自动解决。
- 点 Compute → Machines。搜索所需的机器。
- 除了所需机器外,点击 Action 菜单(⋮) → Delete Machine。
- 点 Delete 以确认机器已被删除。会自动创建新机器。
等待新计算机启动并过渡到 Running 状态。
重要此活动可能至少需要 5 到 10 分钟或更多。
- 点 Compute → Nodes。确认新节点处于 Ready 状态。
使用以下任一方法之一将 OpenShift Data Foundation 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮) → Edit Labels。
-
添加
cluster.ocs.openshift.io/openshift-storage
,然后点 Save。
- 使用命令行界面
- 将 OpenShift Data Foundation 标签应用到新节点:
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 <new_node_name>
- 指定新节点的名称。
验证步骤
验证输出中是否存在新节点:
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' ' -f1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点击 Workloads → Pods。确认新节点上至少以下 pod 处于 Running 状态:
-
csi-cephfsplugin-*
-
csi-rbdplugin-*
-
- 验证所有其他所需的 OpenShift Data Foundation 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 osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建 debug pod 并为一个或多个所选主机打开 chroot 环境:
oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chroot /host
$ chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示可用块设备列表:
lsblk
$ lsblk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查一个或多个
ocs-deviceset
名称旁的crypt
关键字。
- 如果验证步骤失败,请联系红帽支持团队。
1.2.3. 在用户置备的基础架构中替换失败的 VMware 节点 复制链接链接已复制到粘贴板!
先决条件
- 确保替换节点配置类似的基础架构和资源,以用于被替换的节点。
- 您必须登录到 OpenShift Container Platform 集群。
流程
- 找出您要替换的节点及其虚拟机(VM)。
删除节点:
oc delete nodes <node_name>
$ oc delete nodes <node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <node_name>
- 指定替换的节点的名称。
登录 VMware vSphere 并终止您确定的虚拟机。
重要仅从清单中删除虚拟机,而不从磁盘中删除。
- 在带有所需基础架构的 VMware vSphere 上创建新虚拟机。请参阅 平台要求。
- 使用新虚拟机创建新的 OpenShift Container Platform worker 节点。
检查与处于
Pending
状态的 OpenShift Container Platform 相关的证书签名请求(CSR):oc get csr
$ oc get csr
Copy 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 <certificate_name>
- 指定 CSR 的名称。
- 点 Compute → Nodes。确认新节点处于 Ready 状态。
使用以下任一方法之一将 OpenShift Data Foundation 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮) → Edit Labels。
-
添加
cluster.ocs.openshift.io/openshift-storage
,然后点 Save。
- 使用命令行界面
- 将 OpenShift Data Foundation 标签应用到新节点:
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 <new_node_name>
- 指定新节点的名称。
验证步骤
验证输出中是否存在新节点:
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' ' -f1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点击 Workloads → Pods。确认新节点上至少以下 pod 处于 Running 状态:
-
csi-cephfsplugin-*
-
csi-rbdplugin-*
-
- 验证所有其他所需的 OpenShift Data Foundation 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 osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建 debug pod 并为一个或多个所选主机打开 chroot 环境:
oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chroot /host
$ chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示可用块设备列表:
lsblk
$ lsblk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查一个或多个
ocs-deviceset
名称旁的crypt
关键字。
- 如果验证步骤失败,请联系红帽支持团队。
1.2.4. 在安装程序置备的基础架构中替换失败的 VMware 节点 复制链接链接已复制到粘贴板!
流程
- 登录 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 周期内生成的 Ceph 错误是临时的,当您标记新节点并且可以正常工作时,会自动解决。
- 点 Compute → Nodes。确认新节点处于 Ready 状态。
使用以下任一方法之一将 OpenShift Data Foundation 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮) → Edit Labels。
-
添加
cluster.ocs.openshift.io/openshift-storage
,然后点 Save。
- 使用命令行界面
- 将 OpenShift Data Foundation 标签应用到新节点:
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 <new_node_name>
- 指定新节点的名称。
- 可选: 如果没有自动删除失败的虚拟机(VM),请从 VMware 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' ' -f1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点击 Workloads → Pods。确认新节点上至少以下 pod 处于 Running 状态:
-
csi-cephfsplugin-*
-
csi-rbdplugin-*
-
- 验证所有其他所需的 OpenShift Data Foundation 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 osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建 debug pod 并为一个或多个所选主机打开 chroot 环境:
oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chroot /host
$ chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示可用块设备列表:
lsblk
$ lsblk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查一个或多个
ocs-deviceset
名称旁的crypt
关键字。
- 如果验证步骤失败,请联系红帽支持团队。
1.3.1. 在安装程序置备的基础架构中替换可运行的 Red Hat Virtualization 节点 复制链接链接已复制到粘贴板!
流程
- 登录 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 <node_name>
- 指定替换的节点的名称。
排空节点:
oc adm drain <node_name> --force --delete-emptydir-data=true --ignore-daemonsets
$ oc adm drain <node_name> --force --delete-emptydir-data=true --ignore-daemonsets
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要此活动可能至少需要 5 到 10 分钟或更多。Ceph 周期内生成的 Ceph 错误是临时的,当您标记新节点并且可以正常工作时,会自动解决。
- 点 Compute → Machines。搜索所需的机器。
- 除了所需机器外,点击 Action 菜单(⋮)→ Delete Machine。
点 Delete 以确认机器已被删除。会自动创建新机器。等待新计算机启动并过渡到
Running
状态。重要此活动可能至少需要 5 到 10 分钟或更多。
- 点 Compute → Nodes。确认新节点处于 Ready 状态。
使用以下任一方法之一将 OpenShift Data Foundation 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮)→ Edit Labels。
-
添加
cluster.ocs.openshift.io/openshift-storage
,然后点 Save。
- 使用命令行界面
- 将 OpenShift Data Foundation 标签应用到新节点:
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 <new_node_name>
- 指定新节点的名称。
验证步骤
验证输出中是否存在新节点:
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' ' -f1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点击 Workloads → Pods。确认新节点上至少以下 pod 处于 Running 状态:
-
csi-cephfsplugin-*
-
csi-rbdplugin-*
-
- 验证所有其他所需的 OpenShift Data Foundation 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 osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建 debug pod 并为一个或多个所选主机打开 chroot 环境:
oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chroot /host
$ chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示可用块设备列表:
lsblk
$ lsblk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查一个或多个
ocs-deviceset
名称旁的crypt
关键字。
- 如果验证步骤失败,请联系红帽支持团队。
1.3.2. 在安装程序置备的基础架构中替换失败的 Red Hat Virtualization 节点 复制链接链接已复制到粘贴板!
流程
- 登录 OpenShift Web 控制台,再点击 Compute → Nodes。
- 确定出现故障的节点。记录其 Machine Name。
删除 Virtual Machine(VM)实例时,确保磁盘不会被删除。
登录 Red Hat Virtualization 管理门户,并从失败的虚拟机中删除与监控 pod 和对象存储设备(OSD)关联的虚拟磁盘。
重要当您删除一个或多个磁盘时,不要选择 Remove Perently 选项。
- 在 OpenShift Web 控制台中,点 Compute → Machines。搜索所需的机器。
- 点 Actions → Edit Annotations,然后点 Add More。
-
添加
machine.openshift.io/exclude-node-draining
并点 Save。 点 Actions → Delete Machine,然后点 Delete。
会自动创建新机器。等待新机器启动。
重要此活动可能至少需要 5 到 10 分钟或更多。Ceph 周期内生成的 Ceph 错误是临时的,当您标记新节点并且可以正常工作时,会自动解决。
- 点 Compute → Nodes。确认新节点处于 Ready 状态。
使用以下任一方法之一将 OpenShift Data Foundation 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮)→ Edit Labels。
-
添加
cluster.ocs.openshift.io/openshift-storage
,然后点 Save。
- 使用命令行界面
- 将 OpenShift Data Foundation 标签应用到新节点:
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 <new_node_name>
- 指定新节点的名称。
- 可选: 如果没有自动删除失败的虚拟机,请从 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' ' -f1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点击 Workloads → Pods。确认新节点上至少以下 pod 处于 Running 状态:
-
csi-cephfsplugin-*
-
csi-rbdplugin-*
-
- 验证所有其他所需的 OpenShift Data Foundation 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 osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建 debug pod 并为一个或多个所选主机打开 chroot 环境:
oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chroot /host
$ chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示可用块设备列表:
lsblk
$ lsblk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查一个或多个
ocs-deviceset
名称旁的crypt
关键字。
- 如果验证步骤失败,请联系红帽支持团队。
1.4. 在 Microsoft Azure 上部署的 OpenShift Data Foundation 复制链接链接已复制到粘贴板!
1.4.1. 替换 Azure 安装程序置备的基础架构上的操作节点 复制链接链接已复制到粘贴板!
流程
- 登录 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 <node_name>
- 指定替换的节点的名称。
排空节点:
oc adm drain <node_name> --force --delete-emptydir-data=true --ignore-daemonsets
$ oc adm drain <node_name> --force --delete-emptydir-data=true --ignore-daemonsets
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要此活动可能至少需要 5 到 10 分钟或更多。Ceph 周期内生成的 Ceph 错误是临时的,当您标记新节点并且可以正常工作时,会自动解决。
- 点 Compute → Machines。搜索所需的机器。
- 除了所需的机器外,点击 Action 菜单(⋮) → Delete Machine。
- 点 Delete 以确认机器已被删除。会自动创建新机器。
等待新计算机启动并过渡到 Running 状态。
重要此活动可能至少需要 5 到 10 分钟或更多。
- 点 Compute → Nodes。确认新节点处于 Ready 状态。
使用以下任一方法之一将 OpenShift Data Foundation 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮) → Edit Labels。
-
添加
cluster.ocs.openshift.io/openshift-storage
,然后点 Save。
- 使用命令行界面
- 执行以下命令,将 OpenShift Data Foundation 标签应用到新节点:
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 <new_node_name>
- 指定新节点的名称。
验证步骤
验证输出中是否存在新节点:
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' ' -f1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点 Workloads→ Pods。确认新节点上至少以下 pod 处于 Running 状态:
-
csi-cephfsplugin-*
-
csi-rbdplugin-*
-
- 验证所有其他所需的 OpenShift Data Foundation 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 osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建 debug pod 并为一个或多个所选主机打开 chroot 环境:
oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chroot /host
$ chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示可用块设备列表:
lsblk
$ lsblk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查一个或多个
ocs-deviceset
名称旁的crypt
关键字。
- 如果验证步骤失败,请联系红帽支持团队。
1.4.2. 在 Azure 安装程序置备的基础架构中替换失败的节点 复制链接链接已复制到粘贴板!
流程
- 登录 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 周期内生成的 Ceph 错误是临时的,当您标记新节点并且可以正常工作时,会自动解决。
- 点 Compute → Nodes。确认新节点处于 Ready 状态。
使用以下任一方法之一将 OpenShift Data Foundation 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮) → Edit Labels。
-
添加
cluster.ocs.openshift.io/openshift-storage
,然后点 Save。
- 使用命令行界面
- 将 OpenShift Data Foundation 标签应用到新节点:
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 <new_node_name>
- 指定新节点的名称。
- 可选:如果没有自动删除失败的 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' ' -f1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点击 Workloads → Pods。确认新节点上至少以下 pod 处于 Running 状态:
-
csi-cephfsplugin-*
-
csi-rbdplugin-*
-
- 验证所有其他所需的 OpenShift Data Foundation 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 osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建 debug pod 并为一个或多个所选主机打开 chroot 环境:
oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chroot /host
$ chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示可用块设备列表:
lsblk
$ lsblk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查一个或多个
ocs-deviceset
名称旁的crypt
关键字。
- 如果验证步骤失败,请联系红帽支持团队。
第 2 章 使用本地存储设备部署的 OpenShift Data Foundation 复制链接链接已复制到粘贴板!
2.1. 在裸机基础架构中替换存储节点 复制链接链接已复制到粘贴板!
- 要替换操作节点,请参阅 第 2.1.1 节 “在裸机用户置备的基础架构中替换操作节点”。
- 要替换出现故障的节点,请参阅 第 2.1.2 节 “在裸机用户置备的基础架构中替换失败的节点”。
2.1.1. 在裸机用户置备的基础架构中替换操作节点 复制链接链接已复制到粘贴板!
先决条件
- 确保将替换节点配置为与您替换的节点类似基础架构、资源和磁盘。
- 您必须登录到 OpenShift Container Platform 集群。
流程
找出该节点,并获取您要替换的节点上的标签:
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 <node_name>
- 指定替换的节点的名称。
识别要替换的节点中运行的监控器 pod(若有)和 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 缩减上一步中标识的 pod 的部署:
例如:
oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage
$ oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc scale deployment rook-ceph-osd-0 --replicas=0 -n openshift-storage
$ oc scale deployment rook-ceph-osd-0 --replicas=0 -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storage
$ oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storage
Copy 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-emptydir-data=true --ignore-daemonsets
$ oc adm drain <node_name> --force --delete-emptydir-data=true --ignore-daemonsets
Copy 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 Data Foundation 时如何替换 master 节点的详情,请参阅 OpenShift Container Platform 文档中的备份和恢复指南。
- 使用新的裸机机器创建新的 OpenShift Container Platform 节点。
检查与处于
Pending
状态的 OpenShift Container Platform 相关的证书签名请求(CSR):oc get csr
$ oc get csr
Copy 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 <certificate_name>
- 指定 CSR 的名称。
- 在 OpenShift Web 控制台中,点 Compute → Nodes。确认新节点处于 Ready 状态。
使用以下任一方法之一将 OpenShift Data Foundation 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮)→ Edit Labels。
-
添加
cluster.ocs.openshift.io/openshift-storage
,然后点 Save。
- 使用命令行界面
- 将 OpenShift Data Foundation 标签应用到新节点:
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 <new_node_name>
- 指定新节点的名称。
识别安装 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)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow echo $local_storage_project
echo $local_storage_project
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
openshift-local-storage
openshift-local-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将新的 worker 节点添加到
localVolumeDiscovery
和localVolumeSet
。更新
localVolumeDiscovery
定义,使其包含新节点,并删除故障节点:oc edit -n $local_storage_project localvolumediscovery auto-discover-devices
# oc edit -n $local_storage_project localvolumediscovery auto-discover-devices
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
NAME AGE localblock 25h
NAME AGE localblock 25h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新
localVolumeSet
定义,使其包含新节点,并删除故障节点:oc edit -n $local_storage_project localvolumeset localblock
# oc edit -n $local_storage_project localvolumeset localblock
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记住在退出编辑器之前进行保存。
在本例中,
server3.example.com
已被删除,newnode.example.com
是新节点。
验证新的
localblock
持久性卷 (PV)是否可用:$oc get pv | grep localblock | grep Available
$oc get pv | grep localblock | grep Available
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
local-pv-551d950 512Gi RWO Delete Available localblock 26s
local-pv-551d950 512Gi RWO Delete Available localblock 26s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入
openshift-storage
项目:oc project openshift-storage
$ oc project openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从集群移除出现故障的 OSD。如果需要,您可以指定多个失败的 OSD:
oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=<failed_osd_id> -p FORCE_OSD_REMOVAL=true | oc create -f -
$ oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=<failed_osd_id> -p FORCE_OSD_REMOVAL=true | oc create -f -
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <failed_osd_id>
是 pod 名称中紧接在
rook-ceph-osd
前缀后面的整数。您可以通过在命令中添加逗号分隔的 OSD ID,以移除多个 OSD,例如
FAILED_OSD_IDS=0,1,2
。FORCE_OSD_REMOVAL
值必须在有三个 OSD 的集群中更改为true
,或者有足够空间的集群在移除 OSD 后恢复所有这三个数据副本。
通过检查
ocs-osd-removal-job
pod 的状态,验证 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-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确保 OSD 移除已完成。
oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'
$ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
Copy 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 --tail=-1
# oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1
Copy 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
local-pv-d6bf175b 1490Gi RWO Delete Released openshift-storage/ocs-deviceset-0-data-0-6c5pw localblock 2d22h compute-1
local-pv-d6bf175b 1490Gi RWO Delete Released openshift-storage/ocs-deviceset-0-data-0-6c5pw localblock 2d22h compute-1
Copy 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
persistentvolume "local-pv-d9c5cbd6" deleted
persistentvolume "local-pv-d9c5cbd6" deleted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确定
crashcollector
pod 部署: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-storage
Copy 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-storage
Copy 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-job
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
job.batch "ocs-osd-removal-job" deleted
job.batch "ocs-osd-removal-job" deleted
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' ' -f1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点 Workloads → Pods。确认新节点上至少以下 pod 处于
Running
状态:-
csi-cephfsplugin-*
-
csi-rbdplugin-*
-
验证所有其他必需的 OpenShift 数据基础容器集是否都处于
Running
状态。确保创建了新的 incremental
mon
,且处于Running
状态:oc get pod -n openshift-storage | grep mon
$ oc get pod -n openshift-storage | grep mon
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD 和监控 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 osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建 debug pod 并为一个或多个所选主机打开 chroot 环境:
oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chroot /host
$ chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示可用块设备列表:
lsblk
$ lsblk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查一个或多个
ocs-deviceset
名称旁的crypt
关键字。
- 如果验证步骤失败,请联系红帽支持团队。
2.1.2. 在裸机用户置备的基础架构中替换失败的节点 复制链接链接已复制到粘贴板!
先决条件
- 确保将替换节点配置为与您替换的节点类似基础架构、资源和磁盘。
- 您必须登录到 OpenShift Container Platform 集群。
流程
找出该节点,并获取您要替换的节点上的标签:
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 <node_name>
- 指定替换的节点的名称。
识别要替换的节点中运行的监控器 pod(若有)和 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 缩减上一步中标识的 pod 的部署:
例如:
oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage
$ oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc scale deployment rook-ceph-osd-0 --replicas=0 -n openshift-storage
$ oc scale deployment rook-ceph-osd-0 --replicas=0 -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storage
$ oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storage
Copy 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-emptydir-data=true --ignore-daemonsets
$ oc adm drain <node_name> --force --delete-emptydir-data=true --ignore-daemonsets
Copy 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 Data Foundation 时如何替换 master 节点的详情,请参阅 OpenShift Container Platform 文档中的备份和恢复指南。
- 使用新的裸机机器创建新的 OpenShift Container Platform 节点。
检查与处于
Pending
状态的 OpenShift Container Platform 相关的证书签名请求(CSR):oc get csr
$ oc get csr
Copy 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 <certificate_name>
- 指定 CSR 的名称。
- 在 OpenShift Web 控制台中,点 Compute → Nodes。确认新节点处于 Ready 状态。
使用以下任一方法之一将 OpenShift Data Foundation 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮)→ Edit Labels。
-
添加
cluster.ocs.openshift.io/openshift-storage
,然后点 Save。
- 使用命令行界面
- 将 OpenShift Data Foundation 标签应用到新节点:
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 <new_node_name>
- 指定新节点的名称。
识别安装 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)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow echo $local_storage_project
echo $local_storage_project
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
openshift-local-storage
openshift-local-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将新的 worker 节点添加到
localVolumeDiscovery
和localVolumeSet
。更新
localVolumeDiscovery
定义,使其包含新节点,并删除故障节点:oc edit -n $local_storage_project localvolumediscovery auto-discover-devices
# oc edit -n $local_storage_project localvolumediscovery auto-discover-devices
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
NAME AGE localblock 25h
NAME AGE localblock 25h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新
localVolumeSet
定义,使其包含新节点,并删除故障节点:oc edit -n $local_storage_project localvolumeset localblock
# oc edit -n $local_storage_project localvolumeset localblock
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记住在退出编辑器之前进行保存。
在本例中,
server3.example.com
已被删除,newnode.example.com
是新节点。
验证新的
localblock
持久性卷 (PV)是否可用:$oc get pv | grep localblock | grep Available
$oc get pv | grep localblock | grep Available
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
local-pv-551d950 512Gi RWO Delete Available localblock 26s
local-pv-551d950 512Gi RWO Delete Available localblock 26s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入
openshift-storage
项目:oc project openshift-storage
$ oc project openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从集群移除出现故障的 OSD。如果需要,您可以指定多个失败的 OSD:
oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=<failed_osd_id> -p FORCE_OSD_REMOVAL=true | oc create -f -
$ oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=<failed_osd_id> -p FORCE_OSD_REMOVAL=true | oc create -f -
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <failed_osd_id>
是 pod 名称中紧接在
rook-ceph-osd
前缀后面的整数。您可以通过在命令中添加逗号分隔的 OSD ID,以移除多个 OSD,例如
FAILED_OSD_IDS=0,1,2
。FORCE_OSD_REMOVAL
值必须在有三个 OSD 的集群中更改为true
,或者有足够空间的集群在移除 OSD 后恢复所有这三个数据副本。
通过检查
ocs-osd-removal-job
pod 的状态,验证 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-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确保 OSD 移除已完成。
oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'
$ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
Copy 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 --tail=-1
# oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1
Copy 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
local-pv-d6bf175b 1490Gi RWO Delete Released openshift-storage/ocs-deviceset-0-data-0-6c5pw localblock 2d22h compute-1
local-pv-d6bf175b 1490Gi RWO Delete Released openshift-storage/ocs-deviceset-0-data-0-6c5pw localblock 2d22h compute-1
Copy 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
persistentvolume "local-pv-d9c5cbd6" deleted
persistentvolume "local-pv-d9c5cbd6" deleted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确定
crashcollector
pod 部署: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-storage
Copy 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-storage
Copy 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-job
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
job.batch "ocs-osd-removal-job" deleted
job.batch "ocs-osd-removal-job" deleted
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' ' -f1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点 Workloads → Pods。确认新节点上至少以下 pod 处于
Running
状态:-
csi-cephfsplugin-*
-
csi-rbdplugin-*
-
验证所有其他必需的 OpenShift 数据基础容器集是否都处于
Running
状态。确保创建了新的 incremental
mon
,且处于Running
状态:oc get pod -n openshift-storage | grep mon
$ oc get pod -n openshift-storage | grep mon
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD 和监控 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 osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建 debug pod 并为一个或多个所选主机打开 chroot 环境:
oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chroot /host
$ chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示可用块设备列表:
lsblk
$ lsblk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查一个或多个
ocs-deviceset
名称旁的crypt
关键字。
- 如果验证步骤失败,请联系红帽支持团队。
2.2. 替换 IBM Z 或 LinuxONE 基础架构中的存储节点 复制链接链接已复制到粘贴板!
您可以选择以下步骤之一来替换存储节点:
2.2.1. 替换 IBM Z 或 LinuxONE 基础架构上的操作节点 复制链接链接已复制到粘贴板!
使用这个流程替换 IBM zSystem 或 LinuxONE 基础架构上的操作节点。
流程
识别节点,并在要替换的节点上获取标签。记录机架标签。
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-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-storage
Copy 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-emptydir-data=true --ignore-daemonsets
$ oc adm drain <node_name> --force --delete-emptydir-data=true --ignore-daemonsets
Copy 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 zSystem 存储节点作为替换。
检查与处于
Pending
状态的 OpenShift Data Foundation 相关的证书签名请求 (CSR):oc get csr
$ oc get csr
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 批准新节点所需的所有 OpenShift Data Foundation 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-storage
标签应用到新节点:- 从用户界面
- 对于新节点,点击 Action Menu(⋮) → Edit Labels
-
添加
cluster.ocs.openshift.io/openshift-storage
并点 Save。
- 使用命令行界面
- 执行以下命令,将 OpenShift Data Foundation 标签应用到新节点:
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
将新的 worker 节点添加到
localVolumeDiscovery
和localVolumeSet
。更新
localVolumeDiscovery
定义,使其包含新节点并删除失败的节点。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记住在退出编辑器之前进行保存。
在上例中,
server3.example.com
已被删除,newnode.example.com
是新节点。决定要编辑的
localVolumeSet
。在以下命令中,将 local-storage-project 替换为您的本地存储项目的名称。默认项目名称是 OpenShift Data Foundation 4.6 及之后的版本中的
openshift-local-storage
。之前的版本默认使用local-storage
。oc get -n local-storage-project localvolumeset
# oc get -n local-storage-project localvolumeset NAME AGE localblock 25h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新
localVolumeSet
定义,使其包含新节点并删除失败的节点。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记住在退出编辑器之前进行保存。
在上例中,
server3.example.com
已被删除,newnode.example.com
是新节点。
验证新的
localblock
PV 是否可用。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更改到
openshift-storage
项目。oc project openshift-storage
$ oc project openshift-storage
Copy 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/pvc
Copy 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-g2mmc
ceph.rook.io/pvc: ocs-deviceset-localblock-0-data-0-g2mmc ceph.rook.io/pvc: ocs-deviceset-localblock-0-data-0-g2mmc
Copy 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
pod 的状态,验证 OSD 是否已成功移除。状态为
Completed
,确认 OSD 移除作业已成功。oc get pod -l job-name=ocs-osd-removal-osd_id_to_remove -n openshift-storage
# oc get pod -l job-name=ocs-osd-removal-osd_id_to_remove -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果
ocs-osd-removal
失败且 pod 不处于预期的Completed
状态,请检查 pod 日志以进一步调试。例如:oc logs -l job-name=ocs-osd-removal-osd_id_to_remove -n openshift-storage --tail=-1
# oc logs -l job-name=ocs-osd-removal-osd_id_to_remove -n openshift-storage --tail=-1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可能需要手动清理移除的 OSD,如下所示:
ceph osd crush remove osd.osd_id_to_remove ceph osd rm osd_id_to_remove ceph auth del osd.osd_id_to_remove ceph osd crush rm osd_id_to_remove
ceph osd crush remove osd.osd_id_to_remove ceph osd rm osd_id_to_remove ceph auth del osd.osd_id_to_remove ceph osd crush rm osd_id_to_remove
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除与故障节点关联的 PV。
标识与 PVC 关联的 PV。
PVC 名称必须与从集群中删除故障 OSD 时获取的名称相同。
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-0
Copy 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-5c9b8982
# oc delete pv local-pv-5c9b8982 persistentvolume "local-pv-5c9b8982" deleted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
确定
crashcollector
pod 部署。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-storage
Copy 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-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除
ocs-osd-removal
任务。oc delete job ocs-osd-removal-${osd_id_to_remove}
# oc delete job ocs-osd-removal-${osd_id_to_remove}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
job.batch "ocs-osd-removal-0" deleted
job.batch "ocs-osd-removal-0" deleted
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' ' -f1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点击 Workloads → Pods。确认新节点上至少以下 pod 处于 Running 状态:
-
csi-cephfsplugin-*
-
csi-rbdplugin-*
-
- 验证所有其他所需的 OpenShift Data Foundation 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 osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果在集群中启用了数据加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建 debug pod 并为一个或多个所选主机打开 chroot 环境:
oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chroot /host
$ chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示可用块设备列表:
lsblk
$ lsblk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查一个或多个
ocs-deviceset
名称旁的crypt
关键字。
- 如果验证步骤失败,请联系红帽支持团队。
2.2.2. 在 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 周期内生成的 Ceph 错误是临时的,当您标记新节点并且可以正常工作时,会自动解决。
- 点 Compute → Nodes。确认新节点处于 Ready 状态。
使用以下任一方法之一将 OpenShift Data Foundation 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮) → Edit Labels。
-
添加
cluster.ocs.openshift.io/openshift-storage
,然后点 Save。
- 使用命令行界面
- 将 OpenShift Data Foundation 标签应用到新节点:
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 <new_node_name>
- 指定新节点的名称。
验证步骤
验证输出中是否存在新节点:
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' ' -f1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点击 Workloads → Pods。确认新节点上至少以下 pod 处于 Running 状态:
-
csi-cephfsplugin-*
-
csi-rbdplugin-*
-
- 验证所有其他所需的 OpenShift Data Foundation 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 osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果在集群中启用了数据加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建 debug pod 并为一个或多个所选主机打开 chroot 环境:
oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chroot /host
$ chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示可用块设备列表:
lsblk
$ lsblk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查一个或多个
ocs-deviceset
名称旁的crypt
关键字。
- 如果验证步骤失败,请联系红帽支持团队。
2.3. 替换 IBM Power 基础架构上的存储节点 复制链接链接已复制到粘贴板!
对于 OpenShift Data Foundation,您可以主动对一个操作节点执行节点替换,并主动进行与 IBM Power 相关的部署。
2.3.1. 替换 IBM Power 上的操作或失败的存储节点 复制链接链接已复制到粘贴板!
先决条件
- 确保替换节点配置类似的基础架构和资源,以用于被替换的节点。
- 您必须登录到 OpenShift Container Platform 集群。
流程
找出该节点,并获取您要替换的节点上的标签:
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 <node_name>
- 指定替换的节点的名称。
识别在需要替换的节点中运行的
mon
(若有)和 Object Storage Device(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 缩减上一步中标识的 pod 的部署:
例如:
oc scale deployment rook-ceph-mon-a --replicas=0 -n openshift-storage
$ oc scale deployment rook-ceph-mon-a --replicas=0 -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc scale deployment rook-ceph-osd-1 --replicas=0 -n openshift-storage
$ oc scale deployment rook-ceph-osd-1 --replicas=0 -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storage
$ oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storage
Copy 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-emptydir-data=true --ignore-daemonsets
$ oc adm drain <node_name> --force --delete-emptydir-data=true --ignore-daemonsets
Copy 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 机器创建新的 OpenShift Container Platform 节点。
检查与处于
Pending
状态的 OpenShift Container Platform 相关的证书签名请求(CSR):oc get csr
$ oc get csr
Copy 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 <certificate_name>
- 指定 CSR 的名称。
- 在 OpenShift Web 控制台中,点 Compute → Nodes。确认新节点处于 Ready 状态。
使用以下任一方法之一将 OpenShift Data Foundation 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮) → Edit Labels。
-
添加
cluster.ocs.openshift.io/openshift-storage
,然后点 Save。
- 使用命令行界面
- 将 OpenShift Data Foundation 标签应用到新节点:
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 <new_node_name>
- 指定新节点的名称。
识别安装 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)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow echo $local_storage_project
echo $local_storage_project
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
openshift-local-storage
openshift-local-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将新添加的 worker 节点添加到
localVolume
中。确定您需要编辑的
localVolume
:oc get -n $local_storage_project localvolume
# oc get -n $local_storage_project localvolume
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
NAME AGE localblock 25h
NAME AGE localblock 25h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新
localVolume
定义,使其包含新节点,并删除故障节点:oc edit -n $local_storage_project localvolume localblock
# oc edit -n $local_storage_project localvolume localblock
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记住在退出编辑器之前进行保存。
在本例中,
worker-0
被删除,worker-3
是新节点。
验证新的
localblock
持久性卷 (PV)是否可用:oc get pv | grep localblock
$ oc get pv | grep localblock
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM STORAGECLASS AGE local-pv-3e8964d3 500Gi RWO Delete Bound ocs-deviceset-localblock-2-data-0-mdbg9 localblock 25h local-pv-414755e0 500Gi RWO Delete Bound ocs-deviceset-localblock-1-data-0-4cslf localblock 25h local-pv-b481410 500Gi RWO Delete Available localblock 3m24s local-pv-5c9b8982 500Gi RWO Delete Bound ocs-deviceset-localblock-0-data-0-g2mmc localblock 25h
NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM STORAGECLASS AGE local-pv-3e8964d3 500Gi RWO Delete Bound ocs-deviceset-localblock-2-data-0-mdbg9 localblock 25h local-pv-414755e0 500Gi RWO Delete Bound ocs-deviceset-localblock-1-data-0-4cslf localblock 25h local-pv-b481410 500Gi RWO Delete Available localblock 3m24s local-pv-5c9b8982 500Gi RWO Delete Bound ocs-deviceset-localblock-0-data-0-g2mmc localblock 25h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入
openshift-storage
项目:oc project openshift-storage
$ oc project openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从集群移除出现故障的 OSD。如果需要,您可以指定多个故障 OSD。
识别 PVC:
osd_id_to_remove=1
$ osd_id_to_remove=1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get -n openshift-storage -o yaml deployment rook-ceph-osd-${<osd_id_to_remove>} | grep ceph.rook.io/pvc
$ oc get -n openshift-storage -o yaml deployment rook-ceph-osd-${<osd_id_to_remove>} | grep ceph.rook.io/pvc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中,
<osd_id_to_remove>
是rook-ceph-osd
前缀后的 pod 名字中的整数。在本例中,部署名称为
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-g2mmc
ceph.rook.io/pvc: ocs-deviceset-localblock-0-data-0-g2mmc ceph.rook.io/pvc: ocs-deviceset-localblock-0-data-0-g2mmc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从集群移除出现故障的 OSD。如果需要,您可以指定多个失败的 OSD:
oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=<failed_osd_id> -p FORCE_OSD_REMOVAL=true| oc create -f -
$ oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=<failed_osd_id> -p FORCE_OSD_REMOVAL=true| oc create -f -
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <failed_osd_id>
是 pod 名称中紧接在
rook-ceph-osd
前缀后面的整数。您可以通过在命令中添加逗号分隔的 OSD ID,以移除多个 OSD,例如FAILED_OSD_IDS=0,1,2
。FORCE_OSD_REMOVAL
值必须在有三个 OSD 的集群中更改为true
,或者有足够空间的集群在移除 OSD 后恢复所有这三个数据副本。警告此步骤的结果是从集群中完全移除 OSD。确保提供了
osd_id_to_remove
的正确值。
通过检查
ocs-osd-removal-job
pod 的状态,验证 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-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确保 OSD 移除已完成。
oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'
$ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
Copy 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 --tail=-1
# oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除与故障节点关联的 PV。
识别与 PVC 关联的 PV:
oc get pv -L kubernetes.io/hostname | grep localblock | grep Released
# oc get pv -L kubernetes.io/hostname | grep localblock | grep Released
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
local-pv-5c9b8982 500Gi RWO Delete Released openshift-storage/ocs-deviceset-localblock-0-data-0-g2mmc localblock 24h worker-0
local-pv-5c9b8982 500Gi RWO Delete Released openshift-storage/ocs-deviceset-localblock-0-data-0-g2mmc localblock 24h worker-0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PVC 名称必须与从集群中删除故障 OSD 时获取的名称相同。
如果有一个 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-5c9b8982
# oc delete pv local-pv-5c9b8982
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
persistentvolume "local-pv-5c9b8982" deleted
persistentvolume "local-pv-5c9b8982" deleted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
确定
crashcollector
pod 部署: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-storage
Copy 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-storage
Copy 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-job
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
job.batch "ocs-osd-removal-job" deleted
job.batch "ocs-osd-removal-job" deleted
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' ' -f1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点击 Workloads → Pods。确认新节点上至少以下 pod 处于 Running 状态:
-
csi-cephfsplugin-*
-
csi-rbdplugin-*
-
验证所有其他必需的 OpenShift 数据基础容器集是否都处于 Running 状态。
确保创建了新的 incremental
mon
,且处于 Running 状态:oc get pod -n openshift-storage | grep mon
$ oc get pod -n openshift-storage | grep mon
Copy 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 162m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD 和监控 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 osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建 debug pod 并为一个或多个所选主机打开 chroot 环境:
oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chroot /host
$ chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示可用块设备列表:
lsblk
$ lsblk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查一个或多个
ocs-deviceset
名称旁的crypt
关键字。
- 如果验证步骤失败,请联系红帽支持团队。
2.4. 替换 VMware 基础架构上的存储节点 复制链接链接已复制到粘贴板!
要替换正常运行的节点,请参阅:
要替换失败的节点,请参阅:
2.4.1. 在 VMware 用户置备的基础架构上替换操作节点 复制链接链接已复制到粘贴板!
先决条件
- 确保将替换节点配置为与您替换的节点类似基础架构、资源和磁盘。
- 您必须登录到 OpenShift Container Platform 集群。
流程
找出该节点,并获取您要替换的节点上的标签:
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 <node_name>
- 指定替换的节点的名称。
识别要替换的节点中运行的监控器 pod(若有)和 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 缩减上一步中标识的 pod 的部署:
例如:
oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage
$ oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc scale deployment rook-ceph-osd-0 --replicas=0 -n openshift-storage
$ oc scale deployment rook-ceph-osd-0 --replicas=0 -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storage
$ oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storage
Copy 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-emptydir-data=true --ignore-daemonsets
$ oc adm drain <node_name> --force --delete-emptydir-data=true --ignore-daemonsets
Copy 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 - 登录到 VMware vSphere 并终止您已识别的虚拟机(VM)。
- 在带有所需基础架构的 VMware vSphere 上创建新虚拟机。请参阅基础架构要求。
- 使用新虚拟机创建新的 OpenShift Container Platform worker 节点。
检查与处于
Pending
状态的 OpenShift Container Platform 相关的证书签名请求(CSR):oc get csr
$ oc get csr
Copy 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 <certificate_name>
- 指定 CSR 的名称。
- 在 OpenShift Web 控制台中,点 Compute → Nodes。确认新节点处于 Ready 状态。
使用以下任一方法之一将 OpenShift Data Foundation 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮)→ Edit Labels。
-
添加
cluster.ocs.openshift.io/openshift-storage
,然后点 Save。
- 使用命令行界面
- 将 OpenShift Data Foundation 标签应用到新节点:
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 <new_node_name>
- 指定新节点的名称。
识别安装 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)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow echo $local_storage_project
echo $local_storage_project
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
openshift-local-storage
openshift-local-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将新的 worker 节点添加到
localVolumeDiscovery
和localVolumeSet
。更新
localVolumeDiscovery
定义,使其包含新节点,并删除故障节点:oc edit -n $local_storage_project localvolumediscovery auto-discover-devices
# oc edit -n $local_storage_project localvolumediscovery auto-discover-devices
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
NAME AGE localblock 25h
NAME AGE localblock 25h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新
localVolumeSet
定义,使其包含新节点,并删除故障节点:oc edit -n $local_storage_project localvolumeset localblock
# oc edit -n $local_storage_project localvolumeset localblock
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记住在退出编辑器之前进行保存。
在本例中,
server3.example.com
已被删除,newnode.example.com
是新节点。
验证新的
localblock
持久性卷 (PV)是否可用:$oc get pv | grep localblock | grep Available
$oc get pv | grep localblock | grep Available
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
local-pv-551d950 512Gi RWO Delete Available localblock 26s
local-pv-551d950 512Gi RWO Delete Available localblock 26s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入
openshift-storage
项目:oc project openshift-storage
$ oc project openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从集群移除出现故障的 OSD。如果需要,您可以指定多个失败的 OSD:
oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=<failed_osd_id> -p FORCE_OSD_REMOVAL=true | oc create -f -
$ oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=<failed_osd_id> -p FORCE_OSD_REMOVAL=true | oc create -f -
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <failed_osd_id>
是 pod 名称中紧接在
rook-ceph-osd
前缀后面的整数。您可以通过在命令中添加逗号分隔的 OSD ID,以移除多个 OSD,例如
FAILED_OSD_IDS=0,1,2
。FORCE_OSD_REMOVAL
值必须在有三个 OSD 的集群中更改为true
,或者有足够空间的集群在移除 OSD 后恢复所有这三个数据副本。
通过检查
ocs-osd-removal-job
pod 的状态,验证 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-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确保 OSD 移除已完成。
oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'
$ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
Copy 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 --tail=-1
# oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1
Copy 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
local-pv-d6bf175b 1490Gi RWO Delete Released openshift-storage/ocs-deviceset-0-data-0-6c5pw localblock 2d22h compute-1
local-pv-d6bf175b 1490Gi RWO Delete Released openshift-storage/ocs-deviceset-0-data-0-6c5pw localblock 2d22h compute-1
Copy 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
persistentvolume "local-pv-d9c5cbd6" deleted
persistentvolume "local-pv-d9c5cbd6" deleted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确定
crashcollector
pod 部署: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-storage
Copy 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-storage
Copy 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-job
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
job.batch "ocs-osd-removal-job" deleted
job.batch "ocs-osd-removal-job" deleted
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' ' -f1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点 Workloads → Pods。确认新节点上至少以下 pod 处于
Running
状态:-
csi-cephfsplugin-*
-
csi-rbdplugin-*
-
验证所有其他必需的 OpenShift 数据基础容器集是否都处于
Running
状态。确保创建了新的 incremental
mon
,且处于Running
状态:oc get pod -n openshift-storage | grep mon
$ oc get pod -n openshift-storage | grep mon
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD 和监控 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 osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建 debug pod 并为一个或多个所选主机打开 chroot 环境:
oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chroot /host
$ chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示可用块设备列表:
lsblk
$ lsblk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查一个或多个
ocs-deviceset
名称旁的crypt
关键字。
- 如果验证步骤失败,请联系红帽支持团队。
2.4.2. 在 VMware 安装程序置备的基础架构中替换操作节点 复制链接链接已复制到粘贴板!
先决条件
- 确保将替换节点配置为与您替换的节点类似基础架构、资源和磁盘。
- 您必须登录到 OpenShift Container Platform 集群。
流程
- 登录 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 <node_name>
- 指定替换的节点的名称。
识别在节点上运行的
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 缩减您在上一步中确定的 pod 的部署:
例如:
oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage
$ oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc scale deployment rook-ceph-osd-0 --replicas=0 -n openshift-storage
$ oc scale deployment rook-ceph-osd-0 --replicas=0 -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storage
$ oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storage
Copy 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-emptydir-data=true --ignore-daemonsets
$ oc adm drain <node_name> --force --delete-emptydir-data=true --ignore-daemonsets
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 点 Compute → Machines。搜索所需的机器。
- 除了所需机器外,点击 Action 菜单(⋮)→ Delete Machine。
- 单击 Delete 以确认删除机器。会自动创建新机器。
等待新计算机启动并过渡到 Running 状态。
重要此活动可能至少需要 5 到 10 分钟或更多。
- 在 OpenShift Web 控制台中,点 Compute → Nodes。确认新节点处于 Ready 状态。
- 向节点物理地添加新设备。
使用以下任一方法之一将 OpenShift Data Foundation 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮)→ Edit Labels。
-
添加
cluster.ocs.openshift.io/openshift-storage
,然后点 Save。
- 使用命令行界面
- 将 OpenShift Data Foundation 标签应用到新节点:
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 <new_node_name>
- 指定新节点的名称。
识别安装 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)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow echo $local_storage_project
echo $local_storage_project
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
openshift-local-storage
openshift-local-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将新的 worker 节点添加到
localVolumeDiscovery
和localVolumeSet
。更新
localVolumeDiscovery
定义,使其包含新节点并删除失败的节点。oc edit -n $local_storage_project localvolumediscovery auto-discover-devices
# oc edit -n $local_storage_project localvolumediscovery auto-discover-devices
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
NAME AGE localblock 25h
NAME AGE localblock 25h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新
localVolumeSet
定义,使其包含新节点并删除失败的节点:oc edit -n $local_storage_project localvolumeset localblock
# oc edit -n $local_storage_project localvolumeset localblock
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记住在退出编辑器之前进行保存。
在本例中,删除了
server3.example.com
,newnode.example.com
是新节点。
验证新的
localblock
持久性卷 (PV)是否可用:oc get pv | grep localblock | grep Available
$ oc get pv | grep localblock | grep Available
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
local-pv-551d950 512Gi RWO Delete Available localblock 26s
local-pv-551d950 512Gi RWO Delete Available localblock 26s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入
openshift-storage
项目:oc project openshift-storage
$ oc project openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从集群移除出现故障的 OSD。如果需要,您可以指定多个失败的 OSD:
oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=<failed_osd_id> -p FORCE_OSD_REMOVAL=true | oc create -f -
$ oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=<failed_osd_id> -p FORCE_OSD_REMOVAL=true | oc create -f -
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <failed_osd_id>
是 pod 名称中紧接在
rook-ceph-osd
前缀后面的整数。您可以通过在命令中添加逗号分隔的 OSD ID,以移除多个 OSD,例如
FAILED_OSD_IDS=0,1,2
。FORCE_OSD_REMOVAL
值必须在有三个 OSD 的集群中更改为true
,或者有足够空间的集群在移除 OSD 后恢复所有这三个数据副本。
通过检查
ocs-osd-removal-job
pod 的状态,验证 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-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确保 OSD 移除已完成。
oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'
$ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
Copy 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 --tail=-1
# oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1
Copy 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
local-pv-d6bf175b 1490Gi RWO Delete Released openshift-storage/ocs-deviceset-0-data-0-6c5pw localblock 2d22h compute-1
local-pv-d6bf175b 1490Gi RWO Delete Released openshift-storage/ocs-deviceset-0-data-0-6c5pw localblock 2d22h compute-1
Copy 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
persistentvolume "local-pv-d9c5cbd6" deleted
persistentvolume "local-pv-d9c5cbd6" deleted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确定
crashcollector
pod 部署: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-storage
Copy 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-storage
Copy 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-job
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
job.batch "ocs-osd-removal-job" deleted
job.batch "ocs-osd-removal-job" deleted
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' ' -f1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点 Workloads → Pods。确认新节点上至少以下 pod 处于
Running
状态:-
csi-cephfsplugin-*
-
csi-rbdplugin-*
-
验证所有其他必需的 OpenShift 数据基础容器集是否都处于
Running
状态。确保创建了新的增量
mon
,并处于Running
状态。oc get pod -n openshift-storage | grep mon
$ oc get pod -n openshift-storage | grep mon
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD 和监控 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 osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建 debug pod 并为一个或多个所选主机打开 chroot 环境:
oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chroot /host
$ chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示可用块设备列表:
lsblk
$ lsblk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查一个或多个
ocs-deviceset
名称旁的crypt
关键字。
- 如果验证步骤失败,请联系红帽支持团队。
2.4.3. 在 VMware 用户置备的基础架构中替换失败的节点 复制链接链接已复制到粘贴板!
先决条件
- 确保将替换节点配置为与您替换的节点类似基础架构、资源和磁盘。
- 您必须登录到 OpenShift Container Platform 集群。
流程
找出该节点,并获取您要替换的节点上的标签:
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 <node_name>
- 指定替换的节点的名称。
识别要替换的节点中运行的监控器 pod(若有)和 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 缩减上一步中标识的 pod 的部署:
例如:
oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage
$ oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc scale deployment rook-ceph-osd-0 --replicas=0 -n openshift-storage
$ oc scale deployment rook-ceph-osd-0 --replicas=0 -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storage
$ oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storage
Copy 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-emptydir-data=true --ignore-daemonsets
$ oc adm drain <node_name> --force --delete-emptydir-data=true --ignore-daemonsets
Copy 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 - 登录到 VMware vSphere 并终止您已识别的虚拟机(VM)。
- 在带有所需基础架构的 VMware vSphere 上创建新虚拟机。请参阅基础架构要求。
- 使用新虚拟机创建新的 OpenShift Container Platform worker 节点。
检查与处于
Pending
状态的 OpenShift Container Platform 相关的证书签名请求(CSR):oc get csr
$ oc get csr
Copy 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 <certificate_name>
- 指定 CSR 的名称。
- 在 OpenShift Web 控制台中,点 Compute → Nodes。确认新节点处于 Ready 状态。
使用以下任一方法之一将 OpenShift Data Foundation 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮)→ Edit Labels。
-
添加
cluster.ocs.openshift.io/openshift-storage
,然后点 Save。
- 使用命令行界面
- 将 OpenShift Data Foundation 标签应用到新节点:
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 <new_node_name>
- 指定新节点的名称。
识别安装 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)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow echo $local_storage_project
echo $local_storage_project
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
openshift-local-storage
openshift-local-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将新的 worker 节点添加到
localVolumeDiscovery
和localVolumeSet
。更新
localVolumeDiscovery
定义,使其包含新节点,并删除故障节点:oc edit -n $local_storage_project localvolumediscovery auto-discover-devices
# oc edit -n $local_storage_project localvolumediscovery auto-discover-devices
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
NAME AGE localblock 25h
NAME AGE localblock 25h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新
localVolumeSet
定义,使其包含新节点,并删除故障节点:oc edit -n $local_storage_project localvolumeset localblock
# oc edit -n $local_storage_project localvolumeset localblock
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记住在退出编辑器之前进行保存。
在本例中,
server3.example.com
已被删除,newnode.example.com
是新节点。
验证新的
localblock
持久性卷 (PV)是否可用:$oc get pv | grep localblock | grep Available
$oc get pv | grep localblock | grep Available
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
local-pv-551d950 512Gi RWO Delete Available localblock 26s
local-pv-551d950 512Gi RWO Delete Available localblock 26s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入
openshift-storage
项目:oc project openshift-storage
$ oc project openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从集群移除出现故障的 OSD。如果需要,您可以指定多个失败的 OSD:
oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=<failed_osd_id> -p FORCE_OSD_REMOVAL=true | oc create -f -
$ oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=<failed_osd_id> -p FORCE_OSD_REMOVAL=true | oc create -f -
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <failed_osd_id>
是 pod 名称中紧接在
rook-ceph-osd
前缀后面的整数。您可以通过在命令中添加逗号分隔的 OSD ID,以移除多个 OSD,例如
FAILED_OSD_IDS=0,1,2
。FORCE_OSD_REMOVAL
值必须在有三个 OSD 的集群中更改为true
,或者有足够空间的集群在移除 OSD 后恢复所有这三个数据副本。
通过检查
ocs-osd-removal-job
pod 的状态,验证 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-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确保 OSD 移除已完成。
oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'
$ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
Copy 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 --tail=-1
# oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1
Copy 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
local-pv-d6bf175b 1490Gi RWO Delete Released openshift-storage/ocs-deviceset-0-data-0-6c5pw localblock 2d22h compute-1
local-pv-d6bf175b 1490Gi RWO Delete Released openshift-storage/ocs-deviceset-0-data-0-6c5pw localblock 2d22h compute-1
Copy 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
persistentvolume "local-pv-d9c5cbd6" deleted
persistentvolume "local-pv-d9c5cbd6" deleted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确定
crashcollector
pod 部署: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-storage
Copy 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-storage
Copy 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-job
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
job.batch "ocs-osd-removal-job" deleted
job.batch "ocs-osd-removal-job" deleted
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' ' -f1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点 Workloads → Pods。确认新节点上至少以下 pod 处于
Running
状态:-
csi-cephfsplugin-*
-
csi-rbdplugin-*
-
验证所有其他必需的 OpenShift 数据基础容器集是否都处于
Running
状态。确保创建了新的 incremental
mon
,且处于Running
状态:oc get pod -n openshift-storage | grep mon
$ oc get pod -n openshift-storage | grep mon
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD 和监控 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 osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建 debug pod 并为一个或多个所选主机打开 chroot 环境:
oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chroot /host
$ chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示可用块设备列表:
lsblk
$ lsblk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查一个或多个
ocs-deviceset
名称旁的crypt
关键字。
- 如果验证步骤失败,请联系红帽支持团队。
2.4.4. 在 VMware 安装程序置备的基础架构中替换失败的节点 复制链接链接已复制到粘贴板!
先决条件
- 确保将替换节点配置为与您替换的节点类似基础架构、资源和磁盘。
- 您必须登录到 OpenShift Container Platform 集群。
流程
- 登录 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 <node_name>
- 指定替换的节点的名称。
识别在节点上运行的
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 缩减上一步中标识的 pod 的部署:
例如:
oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage
$ oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc scale deployment rook-ceph-osd-0 --replicas=0 -n openshift-storage
$ oc scale deployment rook-ceph-osd-0 --replicas=0 -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storage
$ oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storage
Copy 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-emptydir-data=true --ignore-daemonsets
$ oc adm drain _<node_name>_ --force --delete-emptydir-data=true --ignore-daemonsets
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 点 Compute → Machines。搜索所需的机器。
- 除了所需机器外,点击 Action 菜单(⋮)→ Delete Machine。
- 点 Delete 以确认机器已被删除。会自动创建新机器。
等待新计算机启动并过渡到 Running 状态。
重要此活动可能至少需要 5 到 10 分钟或更多。
- 在 OpenShift Web 控制台中,点 Compute → Nodes。确认新节点处于 Ready 状态。
- 向节点物理地添加新设备。
使用以下任一方法之一将 OpenShift Data Foundation 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮)→ Edit Labels。
-
添加
cluster.ocs.openshift.io/openshift-storage
,然后点 Save。
- 使用命令行界面
- 将 OpenShift Data Foundation 标签应用到新节点:
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 <new_node_name>
- 指定新节点的名称。
识别安装 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)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow echo $local_storage_project
echo $local_storage_project
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
openshift-local-storage
openshift-local-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将新的 worker 节点添加到
localVolumeDiscovery
和localVolumeSet
。更新
localVolumeDiscovery
定义,使其包含新节点,并删除故障节点:oc edit -n $local_storage_project localvolumediscovery auto-discover-devices
# oc edit -n $local_storage_project localvolumediscovery auto-discover-devices
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
NAME AGE localblock 25h
NAME AGE localblock 25h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新
localVolumeSet
定义,使其包含新节点并删除失败的节点:oc edit -n $local_storage_project localvolumeset localblock
# oc edit -n $local_storage_project localvolumeset localblock
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记住在退出编辑器之前进行保存。
在本例中,
server3.example.com
已被删除,newnode.example.com
是新节点。
验证新的
localblock
PV 是否可用:oc get pv | grep localblock | grep Available
$ oc get pv | grep localblock | grep Available
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
local-pv-551d950 512Gi RWO Delete Available localblock 26s
local-pv-551d950 512Gi RWO Delete Available localblock 26s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入
openshift-storage
项目:oc project openshift-storage
$ oc project openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从集群移除出现故障的 OSD。如果需要,您可以指定多个失败的 OSD:
oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=<failed_osd_id> -p FORCE_OSD_REMOVAL=true | oc create -f -
$ oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=<failed_osd_id> -p FORCE_OSD_REMOVAL=true | oc create -f -
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <failed_osd_id>
是 pod 名称中紧接在
rook-ceph-osd
前缀后面的整数。您可以通过在命令中添加逗号分隔的 OSD ID,以移除多个 OSD,例如
FAILED_OSD_IDS=0,1,2
。FORCE_OSD_REMOVAL
值必须在有三个 OSD 的集群中更改为true
,或者有足够空间的集群在移除 OSD 后恢复所有这三个数据副本。
通过检查
ocs-osd-removal-job
pod 的状态,验证 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-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确保 OSD 移除已完成。
oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'
$ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
Copy 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 --tail=-1
# oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1
Copy 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
local-pv-d6bf175b 1490Gi RWO Delete Released openshift-storage/ocs-deviceset-0-data-0-6c5pw localblock 2d22h compute-1
local-pv-d6bf175b 1490Gi RWO Delete Released openshift-storage/ocs-deviceset-0-data-0-6c5pw localblock 2d22h compute-1
Copy 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
persistentvolume "local-pv-d9c5cbd6" deleted
persistentvolume "local-pv-d9c5cbd6" deleted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确定
crashcollector
pod 部署: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-storage
Copy 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-storage
Copy 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-job
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
job.batch "ocs-osd-removal-job" deleted
job.batch "ocs-osd-removal-job" deleted
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' ' -f1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点 Workloads → Pods。确认新节点上至少以下 pod 处于
Running
状态:-
csi-cephfsplugin-*
-
csi-rbdplugin-*
-
验证所有其他必需的 OpenShift 数据基础容器集是否都处于
Running
状态。确保创建了新的 incremental
mon
,且处于Running
状态:oc get pod -n openshift-storage | grep mon
$ oc get pod -n openshift-storage | grep mon
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD 和监控 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 osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建 debug pod 并为一个或多个所选主机打开 chroot 环境:
oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chroot /host
$ chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示可用块设备列表:
lsblk
$ lsblk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查一个或多个
ocs-deviceset
名称旁的crypt
关键字。
- 如果验证步骤失败,请联系红帽支持团队。
2.5. 在 Red Hat Virtualization 基础架构中替换存储节点 复制链接链接已复制到粘贴板!
- 要替换操作节点,请参阅 第 2.5.1 节 “在 Red Hat Virtualization 安装程序置备的基础架构中替换操作节点”。
- 要替换出现故障的节点,请参阅 第 2.5.2 节 “在 Red Hat Virtualization 安装程序置备的基础架构中替换失败的节点”。
2.5.1. 在 Red Hat Virtualization 安装程序置备的基础架构中替换操作节点 复制链接链接已复制到粘贴板!
先决条件
- 确保将替换节点配置为与您替换的节点类似基础架构、资源和磁盘。
- 您必须登录到 OpenShift Container Platform 集群。
流程
- 登录 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 <node_name>
- 指定替换的节点的名称。
识别在节点上运行的
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 缩减您在上一步中确定的 pod 的部署:
例如:
oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage
$ oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc scale deployment rook-ceph-osd-0 --replicas=0 -n openshift-storage
$ oc scale deployment rook-ceph-osd-0 --replicas=0 -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storage
$ oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storage
Copy 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-emptydir-data=true --ignore-daemonsets
$ oc adm drain <node_name> --force --delete-emptydir-data=true --ignore-daemonsets
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 点 Compute → Machines。搜索所需的机器。
- 除了所需机器外,点击 Action 菜单(⋮)→ Delete Machine。
点 Delete 以确认机器已被删除。会自动创建新机器。等待新计算机启动并过渡到
Running
状态。重要此活动可能至少需要 5 到 10 分钟或更多。
- 在 OpenShift Web 控制台中点 Compute → Nodes。确认新节点处于 Ready 状态。
- 物理向节点添加一个或多个新设备。
使用以下任一方法之一将 OpenShift Data Foundation 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮)→ Edit Labels。
-
添加
cluster.ocs.openshift.io/openshift-storage
,然后点 Save。
- 使用命令行界面
- 将 OpenShift Data Foundation 标签应用到新节点:
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 <new_node_name>
- 指定新节点的名称。
识别安装 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)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow echo $local_storage_project
echo $local_storage_project
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
openshift-local-storage
openshift-local-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将新的 worker 节点添加到
localVolumeDiscovery
和localVolumeSet
。更新
localVolumeDiscovery
定义,使其包含新节点,并删除故障节点:oc edit -n $local_storage_project localvolumediscovery auto-discover-devices
# oc edit -n $local_storage_project localvolumediscovery auto-discover-devices
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
NAME AGE localblock 25h
NAME AGE localblock 25h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新
localVolumeSet
定义,使其包含新节点并删除失败的节点:oc edit -n $local_storage_project localvolumeset localblock
# oc edit -n $local_storage_project localvolumeset localblock
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记住在退出编辑器之前进行保存。
在本例中,
server3.example.com
已被删除,newnode.example.com
是新节点。
验证新的
localblock
持久性卷 (PV)是否可用:$oc get pv | grep localblock | grep Available
$oc get pv | grep localblock | grep Available
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
local-pv-551d950 512Gi RWO Delete Available localblock 26s
local-pv-551d950 512Gi RWO Delete Available localblock 26s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入
openshift-storage
项目:oc project openshift-storage
$ oc project openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从集群移除出现故障的 OSD。如果需要,您可以指定多个失败的 OSD:
oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=<failed_osd_id> -p FORCE_OSD_REMOVAL=true | oc create -f -
$ oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=<failed_osd_id> -p FORCE_OSD_REMOVAL=true | oc create -f -
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <failed_osd_id>
是 pod 名称中紧接在
rook-ceph-osd
前缀后面的整数。您可以通过在命令中添加逗号分隔的 OSD ID,以移除多个 OSD,例如
FAILED_OSD_IDS=0,1,2
。FORCE_OSD_REMOVAL
值必须在有三个 OSD 的集群中更改为true
,或者有足够空间的集群在移除 OSD 后恢复所有这三个数据副本。
通过检查
ocs-osd-removal-job
pod 的状态,验证 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-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确保 OSD 移除已完成。
oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'
$ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
Copy 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 -tail=-1
# oc logs -l job-name=ocs-osd-removal-job -n openshift-storage -tail=-1
Copy 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
local-pv-d6bf175b 512Gi RWO Delete Released openshift-storage/ocs-deviceset-0-data-0-6c5pw localblock 2d22h server3.example.com
local-pv-d6bf175b 512Gi RWO Delete Released openshift-storage/ocs-deviceset-0-data-0-6c5pw localblock 2d22h server3.example.com
Copy 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
persistentvolume "local-pv-d6bf175b" deleted
persistentvolume "local-pv-d6bf175b" deleted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确定
crashcollector
pod 部署: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-storage
Copy 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-storage
Copy 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-job
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
job.batch "ocs-osd-removal-job" deleted
job.batch "ocs-osd-removal-job" deleted
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' ' -f1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点 Workloads → Pods。确认新节点上至少以下 pod 处于
Running
状态:-
csi-cephfsplugin-*
-
csi-rbdplugin-*
-
验证所有其他必需的 OpenShift 数据基础容器集是否都处于
Running
状态。确保创建了新的增量
mon
,并处于Running
状态。oc get pod -n openshift-storage | grep mon
$ oc get pod -n openshift-storage | grep mon
Copy 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 4m8s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD 和监控 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 osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建 debug pod 并为一个或多个所选主机打开 chroot 环境:
oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chroot /host
$ chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示可用块设备列表:
lsblk
$ lsblk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查一个或多个
ocs-deviceset
名称旁的crypt
关键字。
- 如果验证步骤失败,请联系红帽支持团队。
2.5.2. 在 Red Hat Virtualization 安装程序置备的基础架构中替换失败的节点 复制链接链接已复制到粘贴板!
先决条件
- 确保将替换节点配置为与您替换的节点类似基础架构、资源和磁盘。
- 您必须登录到 OpenShift Container Platform 集群。
流程
- 登录 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 <node_name>
- 指定替换的节点的名称。
识别在节点上运行的
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 缩减您在上一步中确定的 pod 的部署:
例如:
oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage
$ oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc scale deployment rook-ceph-osd-0 --replicas=0 -n openshift-storage
$ oc scale deployment rook-ceph-osd-0 --replicas=0 -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storage
$ oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name> --replicas=0 -n openshift-storage
Copy 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-emptydir-data=true --ignore-daemonsets
$ oc adm drain <node_name> --force --delete-emptydir-data=true --ignore-daemonsets
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 点 Compute → Machines。搜索所需的机器。
- 除了所需的机器外,点击 Action 菜单(⋮) → Delete Machine。
点 Delete 以确认机器已被删除。会自动创建新机器。等待新计算机启动并过渡到
Running
状态。重要此活动可能至少需要 5 到 10 分钟或更多。
-
在 OpenShift Web 控制台中点 Compute → Nodes。确认新节点处于
Ready
状态。 - 物理向节点添加一个或多个新设备。
使用以下任一方法之一将 OpenShift Data Foundation 标签应用到新节点:
- 从用户界面
- 对于新节点,点击 Action Menu(⋮) → Edit Labels。
-
添加
cluster.ocs.openshift.io/openshift-storage
,然后点 Save。
- 使用命令行界面
- 将 OpenShift Data Foundation 标签应用到新节点:
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)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow echo $local_storage_project
echo $local_storage_project
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
openshift-local-storage
openshift-local-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将新的 worker 节点添加到
localVolumeDiscovery
和localVolumeSet
。更新
localVolumeDiscovery
定义,使其包含新节点,并删除故障节点:oc edit -n $local_storage_project localvolumediscovery auto-discover-devices
# oc edit -n $local_storage_project localvolumediscovery auto-discover-devices
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
NAME AGE localblock 25h
NAME AGE localblock 25h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新
localVolumeSet
定义,使其包含新节点并删除失败的节点:oc edit -n $local_storage_project localvolumeset localblock
# oc edit -n $local_storage_project localvolumeset localblock
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记住在退出编辑器之前进行保存。
在本例中,
server3.example.com
已被删除,newnode.example.com
是新节点。
验证新的
localblock
持久性卷 (PV)是否可用:$oc get pv | grep localblock | grep Available
$oc get pv | grep localblock | grep Available
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
local-pv-551d950 512Gi RWO Delete Available localblock 26s
local-pv-551d950 512Gi RWO Delete Available localblock 26s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入
openshift-storage
项目:oc project openshift-storage
$ oc project openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从集群移除出现故障的 OSD。如果需要,您可以指定多个失败的 OSD:
oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=<failed_osd_id> -p FORCE_OSD_REMOVAL=true| oc create -f -
$ oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=<failed_osd_id> -p FORCE_OSD_REMOVAL=true| oc create -f -
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <failed_osd_id>
是 pod 名称中紧接在
rook-ceph-osd
前缀后面的整数。您可以通过在命令中添加逗号分隔的 OSD ID,以移除多个 OSD,例如
FAILED_OSD_IDS=0,1,2
。FORCE_OSD_REMOVAL
值必须在有三个 OSD 的集群中更改为true
,或者有足够空间的集群在移除 OSD 后恢复所有这三个数据副本。
通过检查
ocs-osd-removal-job
pod 的状态,验证 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-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确保 OSD 移除已完成。
oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'
$ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
Copy 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 --tail=-1
# oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1
Copy 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
local-pv-d6bf175b 512Gi RWO Delete Released openshift-storage/ocs-deviceset-0-data-0-6c5pw localblock 2d22h server3.example.com
local-pv-d6bf175b 512Gi RWO Delete Released openshift-storage/ocs-deviceset-0-data-0-6c5pw localblock 2d22h server3.example.com
Copy 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
persistentvolume "local-pv-d6bf175b" deleted
persistentvolume "local-pv-d6bf175b" deleted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确定
crashcollector
pod 部署: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-storage
Copy 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-storage
Copy 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-job
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
job.batch "ocs-osd-removal-job" deleted
job.batch "ocs-osd-removal-job" deleted
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' ' -f1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点 Workloads → Pods。确认新节点上至少以下 pod 处于
Running
状态:-
csi-cephfsplugin-*
-
csi-rbdplugin-*
-
验证所有其他必需的 OpenShift 数据基础容器集是否都处于
Running
状态。确保创建了新的增量
mon
,并处于Running
状态。oc get pod -n openshift-storage | grep mon
$ oc get pod -n openshift-storage | grep mon
Copy 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 4m8s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD 和监控 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 osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。
对于上一步中标识的每个新节点,请执行以下操作:
创建 debug pod 并为一个或多个所选主机打开 chroot 环境:
oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chroot /host
$ chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示可用块设备列表:
lsblk
$ lsblk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查一个或多个
ocs-deviceset
名称旁的crypt
关键字。
- 如果验证步骤失败,请联系红帽支持团队。