3.2. 将 etcd 移动到不同的磁盘
您可以将 etcd 从共享磁盘移到独立磁盘,以防止或解决性能问题。
Machine Config Operator (MCO) 负责为 OpenShift Container Platform 4.19 容器存储挂载辅助磁盘。
这个编码脚本只支持以下设备类型的设备名称:
- SCSI 或 SATA
-
/dev/sd*
- 虚拟设备
-
/dev/vd*
- NVMe
-
/dev/nvme*[0-9]*n*
限制:
-
当新磁盘附加到集群时,etcd 数据库是 root 挂载的一部分。当主节点被重新创建时,它不是二级磁盘的一部分或预期的磁盘。因此,主节点不会创建单独的
/var/lib/etcd
挂载。
先决条件
- 有集群的 etcd 数据备份。
-
已安装 OpenShift CLI(
oc
)。 -
您可以使用
cluster-admin
权限访问集群。 - 在上传机器配置前添加额外的磁盘。
-
MachineConfigPool
必须与metadata.labels[machineconfiguration.openshift.io/role]
匹配。这适用于控制器、worker 或自定义池。
这个过程不会将 root 文件系统的部分内容(如 /var/
)移到已安装节点上的另一个磁盘或分区。
使用 control plane 机器集时不支持这个过程。
流程
将新磁盘附加到集群,并在 debug shell 中运行
lsblk
命令来验证节点中是否检测到磁盘:oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow lsblk
# lsblk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记录下
lsblk
命令报告的新磁盘的设备名称。创建以下脚本,并将其命名为
etcd-find-secondary-device.sh
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<device_type_glob>
替换为您的块设备类型的 shell glob。对于 SCSI 或 SATA 驱动器,使用/dev/sd*
; 对于虚拟驱动器,使用/dev/vd*
; 对于 NVMe 驱动器,使用/dev/nvme*[0-9]*n*
。
从
etcd-find-secondary-device.sh
脚本创建一个 base64 编码的字符串,并记录它的内容:base64 -w0 etcd-find-secondary-device.sh
$ base64 -w0 etcd-find-secondary-device.sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建名为
etcd-mc.yml
的MachineConfig
YAML 文件,其内容如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<encoded_etcd_find_secondary_device_script>
替换为您记录的编码脚本内容。
应用创建的
MachineConfig
YAML 文件:oc create -f etcd-mc.yml
$ oc create -f etcd-mc.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
在节点的 debug shell 中运行
grep /var/lib/etcd /proc/mounts
命令,以确保挂载磁盘:oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow grep -w "/var/lib/etcd" /proc/mounts
# grep -w "/var/lib/etcd" /proc/mounts
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
/dev/sdb /var/lib/etcd xfs rw,seclabel,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota 0 0
/dev/sdb /var/lib/etcd xfs rw,seclabel,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota 0 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow