第 11 章 使用 director Operator 执行 RHOSP overcloud 的次要更新
更新 openstackclient pod 后,通过运行 overcloud 和容器镜像准备部署、更新节点并运行 overcloud 更新聚合部署来更新 overcloud。在次版本更新过程中,提供了 control plane API。
Red Hat OpenStack Platform (RHOSP)环境的次要更新涉及更新 overcloud 节点上的 RPM 软件包和容器。您可能还需要更新某些服务的配置。data plane 和 control plane 在次版本更新过程中被完全支持。您必须完成以下步骤来更新 RHOSP 环境:
- 为次要更新准备您的 RHOSP 环境。
-
可选:更新
ovn-controller容器。 - 更新包含 Pacemaker 服务的 Controller 节点和可组合节点。
- 更新 Compute 节点。
- 更新 Red Hat Ceph Storage 节点。
- 更新 Red Hat Ceph Storage 集群。
- 重新引导 overcloud 节点。
先决条件
- 您有 RHOSP 部署的备份。如需更多信息,请参阅 备份和恢复 director Operator 部署 overcloud。
11.1. 准备 director Operator 以进行次要更新 复制链接链接已复制到粘贴板!
要准备 Red Hat OpenStack Platform (RHOSP)环境以使用 director Operator (OSPdO)执行次要更新,请完成以下任务:
- 将 RHOSP 环境锁定到 Red Hat Enterprise Linux (RHEL)发行版本。
- 更新 RHOSP 软件仓库。
- 更新容器镜像准备文件。
- 在 overcloud 中禁用隔离。
11.1.1. 将 RHOSP 环境锁定到 RHEL 发行版本 复制链接链接已复制到粘贴板!
Red Hat OpenStack Platform (RHOSP) 17.1 支持 Red Hat Enterprise Linux (RHEL) 9.2。在执行更新前,将 overcloud 存储库锁定到 RHEL 9.2 版本,以避免将操作系统升级到较新的次版本。
流程
将 overcloud 订阅管理环境文件
rhsm.yaml复制到openstackclient:$ oc cp rhsm.yaml openstackclient:/home/cloud-admin/rhsm.yaml访问
openstackclientpod 的远程 shell:$ oc rsh openstackclient打开
rhsm.yaml文件,检查订阅管理配置是否包含rhsm_release参数。如果没有rhsm_release参数,请添加它并将其设置为9.2:parameter_defaults: RhsmVars: … rhsm_username: "myusername" rhsm_password: "p@55w0rd!" rhsm_org_id: "1234567" rhsm_pool_ids: "1a85f9223e3d5e43013e3d6e8ff506fd" rhsm_method: "portal" rhsm_release: "9.2"-
保存
rhsm.yaml文件。 创建名为
set_release.yaml的 playbook,其中包含将操作系统版本锁定到所有节点上的 RHEL 9.2 的任务:- hosts: all gather_facts: false tasks: - name: set release to 9.2 command: subscription-manager release --set=9.2 become: true在
openstackclientpod 上运行set_release.yamlplaybook:$ ansible-playbook -i /home/cloud-admin/ctlplane-ansible-inventory /home/cloud-admin/set_release.yaml --limit Controller,Compute使用
--limit选项将内容应用到所有 RHOSP 节点。不要针对 Red Hat Ceph Storage 节点运行此 playbook,因为您可能具有这些节点的不同订阅。注意要手动将节点锁定到版本,请登录到节点并运行
subscription-manager release命令:$ sudo subscription-manager release --set=9.2退出
openstackclientpod 的远程 shell:$ exit
11.1.2. 更新 RHOSP 软件仓库 复制链接链接已复制到粘贴板!
更新您的软件仓库以使用 Red Hat OpenStack Platform (RHOSP) 17.1。
流程
打开
rhsm.yaml文件,并将rhsm_repos参数更新为正确的存储库版本:parameter_defaults: RhsmVars: rhsm_repos: - rhel-9-for-x86_64-baseos-eus-rpms - rhel-9-for-x86_64-appstream-eus-rpms - rhel-9-for-x86_64-highavailability-eus-rpms - openstack-17.1-for-rhel-9-x86_64-rpms - fast-datapath-for-rhel-9-x86_64-rpms-
保存
rhsm.yaml文件。 访问
openstackclientpod 的远程 shell:$ oc rsh openstackclient创建名为
update_rhosp_repos.yaml的 playbook,其中包含将存储库在所有节点上设置为RHOSP 17.1的任务:- hosts: all gather_facts: false tasks: - name: change osp repos command: subscription-manager repos --enable=openstack-17.1-for-rhel-9-x86_64-rpms become: true在
openstackclientpod 上运行update_rhosp_repos.yamlplaybook:$ ansible-playbook -i /home/cloud-admin/ctlplane-ansible-inventory /home/cloud-admin/update_rhosp_repos.yaml --limit Controller,Compute使用
--limit选项将内容应用到所有 RHOSP 节点。不要针对 Red Hat Ceph Storage 节点运行此 playbook,因为它们使用不同的订阅。创建名为
update_ceph_repos.yaml的 playbook,其中包含在所有 Red Hat Ceph Storage 节点上将存储库设置为RHOSP 17.1的任务:- hosts: all gather_facts: false tasks: - name: change ceph repos command: subscription-manager repos --enable=openstack-17.1-deployment-tools-for-rhel-9-x86_64-rpms become: true在
openstackclientpod 上运行update_ceph_repos.yamlplaybook:$ ansible-playbook -i /home/cloud-admin/ctlplane-ansible-inventory /home/cloud-admin/update_ceph_repos.yaml --limit CephStorage使用
--limit选项将内容应用到 Red Hat Ceph Storage 节点。退出
openstackclientpod 的远程 shell:$ exit
11.1.3. 更新容器镜像准备文件 复制链接链接已复制到粘贴板!
容器准备文件是包含 ContainerImagePrepare 参数的文件。您可以使用此文件定义用于获取 overcloud 的容器镜像的规则。
在更新环境前,请检查该文件以确保获取正确的镜像版本。
流程
-
编辑容器准备文件。此文件的默认名称为
containers-prepare-parameter.yaml。 确保每个规则集的
tag参数设置为17.1:parameter_defaults: ContainerImagePrepare: - push_destination: false set: ... tag: '17.1' tag_from_label: '{version}-{release}'注意如果您不想将特定的标签用于更新,如
17.1或17.1.1,请删除tag键-值对,并只指定tag_from_label。tag_from_label标签使用安装的 Red Hat OpenStack Platform (RHOSP)版本来确定标签的值,以作为更新过程的一部分。-
保存
containers-prepare-parameter.yaml文件。
11.1.4. 在 overcloud 中禁用隔离 复制链接链接已复制到粘贴板!
在更新 overcloud 之前,请确保禁用隔离。
如果在 Controller 节点更新过程中在您的环境中部署隔离,overcloud 可能会检测到某些节点被禁用并尝试隔离操作,这可能会导致意外的结果。
如果您在 overcloud 中启用了隔离功能,则必须在更新期间临时禁用隔离。
流程
访问
openstackclientpod 的远程 shell:$ oc rsh openstackclient登录到 Controller 节点并运行 Pacemaker 命令禁用隔离:
$ ssh <controller-0.ctlplane> "sudo pcs property set stonith-enabled=false"-
将
<controller-0.ctlplane> 替换为 Controller 节点的名称。
-
将
退出
openstackclientpod 的远程 shell:$ exit