第 9 章 在本地磁盘上使用 rootVolume 和 etcd 部署 OpenStack
作为第 2 天操作,您可以通过将 etcd 从根卷(由 OpenStack Cinder 提供)移到专用的临时本地磁盘,解决并防止 Red Hat OpenStack Platform (RHOSP)安装的性能问题。
9.1. 在本地磁盘上部署 RHOSP
如果您有一个现有的 RHOSP 云,您可以将 etcd 从该云移到专用临时本地磁盘。
先决条件
- 您有一个带有正常工作的 Cinder 的 OpenStack 云。
- 您的 OpenStack 云至少有 75 GB 可用存储,以适应 OpenShift control plane 的 3 个根卷。
- 
						OpenStack 云使用 Nova 临时存储进行部署,该存储使用本地存储后端而不是 rbd。
流程
- 运行以下命令,为 control plane 创建至少有 10 GB 临时磁盘的 Nova 类别,并基于您的环境替换 - --ram、- --disk和 <flavor_name> 的值:- openstack flavor create --<ram 16384> --<disk 0> --ephemeral 10 --vcpus 4 <flavor_name> - $ openstack flavor create --<ram 16384> --<disk 0> --ephemeral 10 --vcpus 4 <flavor_name>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 使用 control plane 的 root 卷部署集群,例如: - YAML 文件示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令部署您创建的集群: - openshift-install create cluster --dir <installation_directory> - $ openshift-install create cluster --dir <installation_directory>- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 对于<installation_directory>,请指定之前创建的自定义./install-config.yaml 文件的位置。
 
- 运行以下命令,在继续下一步前验证您部署的集群是否健康: - oc wait clusteroperators --all --for=condition=Progressing=false - $ oc wait clusteroperators --all --for=condition=Progressing=false- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 确保集群操作器完成进行,且集群没有部署或更新。
 
- 使用以下 YAML 文件,创建一个名为 - 98-var-lib-etcd.yaml的文件:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- etcd 数据库必须由设备挂载,而不是标签,以确保systemd生成此配置中使用的设备依赖项来触发文件系统创建。
- 2
- 如果文件系统dev/disk/by-label/local-etcd已存在,则不要运行。
- 3
- 如果/dev/disk/by-label/ephemeral0不存在,则会失败并显示警报消息。
- 4
- 将现有数据迁移到本地 etcd 数据库。这个配置会在挂载/var/lib/etcd后进行,但在 CRI-O 启动前,etcd 还没有运行。
- 5
- 要求挂载 etcd,且不包含成员目录,但 ostree 会被挂载。
- 6
- 清理任何以前的迁移状态。
- 7
- 复制和移动单独的步骤,以确保创建完整的成员目录。
- 8
- 在执行完整的递归重新标记前,对挂载点目录执行快速检查。如果文件路径/var/lib/etcd中的 restorecon 无法重命名目录,则不会执行递归重命名。
 警告- 将 - 98-var-lib-etcd.yaml文件应用到系统后,请不要将其删除。删除此文件会破坏 etcd 成员,并导致系统不稳定。- 如果需要回滚,请修改 - ControlPlaneMachineSet对象,以使用不包含临时磁盘的类别。此更改会重新生成 control plane 节点,而无需将临时磁盘用于 etcd 分区,这样可避免与- 98-var-lib-etcd.yaml文件相关的问题。只有在更新到- ControlPlaneMachineSet对象后,才会安全地删除- 98-var-lib-etcd.yaml文件,且没有 control plane 节点使用临时磁盘。
- 运行以下命令来创建新的 - MachineConfig对象:- oc create -f 98-var-lib-etcd.yaml - $ oc create -f 98-var-lib-etcd.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注意- 将 etcd 数据库移到每个 control plane 机器的本地磁盘需要时间。 
- 运行以下命令,验证 etcd 数据库是否已传输到每个 control plane 的本地磁盘: - 运行以下命令验证集群是否仍然在更新: - oc wait --timeout=45m --for=condition=Updating=false machineconfigpool/master - $ oc wait --timeout=45m --for=condition=Updating=false machineconfigpool/master- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令验证集群是否已就绪: - oc wait node --selector='node-role.kubernetes.io/master' --for condition=Ready --timeout=30s - $ oc wait node --selector='node-role.kubernetes.io/master' --for condition=Ready --timeout=30s- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令,验证集群 Operator 是否在集群中运行: - oc wait clusteroperators --timeout=30m --all --for=condition=Progressing=false - $ oc wait clusteroperators --timeout=30m --all --for=condition=Progressing=false- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow