第 11 章 为 director Operator 更新 overcloud
更新 openstackclient pod 后,运行 overcloud 和容器镜像准备部署、更新节点并运行 overcloud 更新聚合部署来更新 overcloud。在次版本更新过程中,可以使用 control plane API。
11.1. 为次要更新准备 director Operator 复制链接链接已复制到粘贴板!
Red Hat OpenStack Platform (RHOSP)次要更新过程工作流:
- 为 RHOSP 次要更新准备您的环境。
-
将
openstackclientpod 镜像更新至最新的 OpenStack 16.2.z 版本。 - 将 overcloud 更新至最新的 OpenStack 16.2.z 版本。
- 更新所有 Red Hat Ceph Storage 服务。
- 运行聚合部署以刷新 overcloud 堆栈。
11.1.1. 将环境锁定到 Red Hat Enterprise Linux 发行版本 复制链接链接已复制到粘贴板!
Red Hat OpenStack Platform (RHOSP) 16.2 在 Red Hat Enterprise Linux (RHEL) 8.4 上被支持。在执行更新前,请将 overcloud 软件仓库锁定到 RHEL 8.4 版本,以避免将操作系统升级到更新的次版本。
流程
将
rhsm.yaml文件复制到openstackclient:oc cp rhsm.yaml openstackclient:/home/cloud-admin/rhsm.yaml
$ oc cp rhsm.yaml openstackclient:/home/cloud-admin/rhsm.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在
openstackclientpod 上打开一个远程 shell:oc rsh openstackclient
$ oc rsh openstackclientCopy to Clipboard Copied! Toggle word wrap Toggle overflow 打开
rhsm.yaml文件,检查您的订阅管理配置是否包含rhsm_release参数。如果没有rhsm_release参数,请添加它并将其设置为8.4:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存 overcloud 订阅管理环境文件。
创建一个 playbook,其中包含一个将操作系统版本锁定为 RHEL 8.4 的任务:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
openstackclientpod 上运行 ansible playbook:ansible-playbook -i /home/cloud-admin/ctlplane-ansible-inventory /home/cloud-admin/set_release.yaml --limit Controller,Compute
$ ansible-playbook -i /home/cloud-admin/ctlplane-ansible-inventory /home/cloud-admin/set_release.yaml --limit Controller,ComputeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
--limit选项将内容应用到所有 RHOSP 节点。不要针对 Red Hat Ceph Storage 节点运行此 playbook,因为您可能为这些节点使用不同的订阅。
要将节点手动锁定到版本,登录到节点并运行 subscription-manager release 命令:
sudo subscription-manager release --set=8.4
$ sudo subscription-manager release --set=8.4
11.1.2. 进入延长更新支持(EUS)软件仓库 复制链接链接已复制到粘贴板!
您的 Red Hat OpenStack Platform (RHOSP)订阅包括 Red Hat Enterprise Linux (RHEL) 8.4 延长更新支持(EUS)的软件仓库。EUS 软件仓库包括 RHEL 8.4 的最新安全补丁和程序错误修复。在执行更新前,切换到以下软件仓库。
| 标准软件仓库 | EUS 软件仓库 |
|---|---|
| rhel-8-for-x86_64-baseos-rpms | rhel-8-for-x86_64-baseos-eus-rpms |
| rhel-8-for-x86_64-appstream-rpms | rhel-8-for-x86_64-appstream-eus-rpms |
| rhel-8-for-x86_64-highavailability-rpms | rhel-8-for-x86_64-highavailability-eus-rpms |
您必须使用 EUS 软件仓库来保留与特定版本的 Podman 的兼容性。Podman 的后续版本使用 RHOSP 16.2 未经测试,可能会导致意外的结果。
前提条件
-
将
openstackclientpod 的rhsm.yaml文件复制到/home/cloud-admin目录中。
流程
在
openstackclientpod 上打开一个远程 shell:oc rsh openstackclient
$ oc rsh openstackclientCopy to Clipboard Copied! Toggle word wrap Toggle overflow 打开
rhsm.yaml文件,并检查订阅管理配置中的rhsm_repos参数。如果这个参数不包括 EUS 软件仓库,请将相关的软件仓库改为 EUS 版本:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存 overcloud 订阅管理环境文件。
创建一个 playbook,其中包含在所有节点上将软件仓库设置为
RHEL 8.4 EUS的任务:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
change_eus.yamlplaybook:ansible-playbook -i /home/cloud-admin/ctlplane-ansible-inventory /home/cloud-admin/change_eus.yaml --limit Controller,Compute
$ ansible-playbook -i /home/cloud-admin/ctlplane-ansible-inventory /home/cloud-admin/change_eus.yaml --limit Controller,ComputeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
--limit选项将内容应用到所有 RHOSP 节点。不要针对 Red Hat Ceph Storage 节点运行此 playbook,因为它们使用不同的订阅。
11.1.3. 更新 Red Hat Openstack Platform 和 Ansible 软件仓库 复制链接链接已复制到粘贴板!
更新您的软件仓库以使用 Red Hat OpenStack Platform (RHOSP) 16.2 和 Ansible 2.9 软件包。有关更多信息,请参阅 Overcloud 存储库。
前提条件
-
您已将
openstackclientpod 的rhsm.yaml文件复制到/home/cloud-admin目录中。
流程
在
openstackclientpod 上打开一个远程 shell:oc rsh openstackclient
$ oc rsh openstackclientCopy to Clipboard Copied! Toggle word wrap Toggle overflow 打开
rhsm.yaml文件,并检查订阅管理配置中的rhsm_repos参数。如果rhsm_repos参数使用 RHOSP 16.1 和 Ansible 2.8 存储库,请将存储库改为正确的版本:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存 overcloud 订阅管理环境文件。
创建一个 playbook,其中包含将存储库设置为所有 RHOSP 节点上的
RHOSP {osp_curr_ver}的任务:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
update_rhosp_repos.yamlplaybook:ansible-playbook -i /home/cloud-admin/ctlplane-ansible-inventory /home/cloud-admin/update_rhosp_repos.yaml --limit Controller,Compute
$ ansible-playbook -i /home/cloud-admin/ctlplane-ansible-inventory /home/cloud-admin/update_rhosp_repos.yaml --limit Controller,ComputeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
--limit选项将内容应用到所有 RHOSP 节点。不要针对 Red Hat Ceph Storage 节点运行此 playbook,因为它们使用不同的订阅。创建一个 playbook,其中包含将存储库设置为所有 Red Hat Ceph Storage 节点上的
RHOSP {osp_curr_ver}的任务:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
update_ceph_repos.yamlplaybook:ansible-playbook -i /home/cloud-admin/ctlplane-ansible-inventory /home/cloud-admin/update_ceph_repos.yaml --limit CephStorage
$ ansible-playbook -i /home/cloud-admin/ctlplane-ansible-inventory /home/cloud-admin/update_ceph_repos.yaml --limit CephStorageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
--limit选项,将内容应用到 Red Hat Ceph Storage 节点。
11.1.4. 设置 container-tools 版本 复制链接链接已复制到粘贴板!
将 container-tools 模块设置为版本 2.0,以确保在所有节点上使用正确的软件包版本。
流程
在
openstackclientpod 上打开一个远程 shell:oc rsh openstackclient
$ oc rsh openstackclientCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个 playbook,其中包含一个任务,在所有节点上将
container-tools模块设置为版本3.0:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 针对所有节点运行
container-tools.yamlplaybook:ansible-playbook -i /home/cloud-admin/ctlplane-ansible-inventory ~/container-tools.yaml
$ ansible-playbook -i /home/cloud-admin/ctlplane-ansible-inventory ~/container-tools.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.1.5. 更新容器镜像准备文件 复制链接链接已复制到粘贴板!
容器准备文件是包含 ContainerImagePrepare 参数的文件。您可以使用此文件定义获取 overcloud 容器镜像的规则。
在更新环境前,请检查该文件以确保您获取正确的镜像版本。
流程
-
编辑容器准备文件。此文件的默认名称为
containers-prepare-parameter.yaml。 检查每个规则集的
tag参数设置为16.2:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您不想将特定的标签用于更新,如
16.2或16.2.2,请删除tag键-值对,并只指定tag_from_label。这将使用已安装的 Red Hat OpenStack Platform 版本来确定要作为更新过程的一部分要使用的标签值。- 保存这个文件。
11.1.6. 在 overcloud 中禁用隔离 复制链接链接已复制到粘贴板!
在更新 overcloud 之前,请确保隔离已被禁用。
如果在 Controller 节点更新过程中部署隔离,则 overcloud 可能会将某些节点视为禁用并尝试隔离操作,这可能会导致意外的结果。
如果您在 overcloud 中启用了隔离,您必须在更新期间临时禁用隔离,以避免出现意外的结果。
流程
在
openstackclientpod 上打开一个远程 shell:oc rsh openstackclient
$ oc rsh openstackclientCopy to Clipboard Copied! Toggle word wrap Toggle overflow 登录到一个 Controller 节点,并运行 Pacemaker 命令来禁用隔离:
ssh <controller-0.ctlplane> "sudo pcs property set stonith-enabled=false"
ssh <controller-0.ctlplane> "sudo pcs property set stonith-enabled=false"Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<controller-0.ctlplane> 替换为 Controller 节点的名称。
-
将
-
在
fencing.yaml环境文件中,将EnableFencing参数设置为false以确保隔离在更新过程中被禁用。