第 11 章 为 director Operator 更新 overcloud


更新 openstackclient pod 后,运行 overcloud 和容器镜像准备部署、更新节点并运行 overcloud 更新聚合部署来更新 overcloud。在次版本更新过程中,可以使用 control plane API。

11.1. 为次要更新准备 director Operator

Red Hat OpenStack Platform (RHOSP)次要更新过程工作流:

  1. 为 RHOSP 次要更新准备您的环境。
  2. openstackclient pod 镜像更新至最新的 OpenStack 16.2.z 版本。
  3. 将 overcloud 更新至最新的 OpenStack 16.2.z 版本。
  4. 更新所有 Red Hat Ceph Storage 服务。
  5. 运行聚合部署以刷新 overcloud 堆栈。

Red Hat OpenStack Platform (RHOSP) 16.2 在 Red Hat Enterprise Linux (RHEL) 8.4 上被支持。在执行更新前,请将 overcloud 软件仓库锁定到 RHEL 8.4 版本,以避免将操作系统升级到更新的次版本。

流程

  1. rhsm.yaml 文件复制到 openstackclient

    $ oc cp rhsm.yaml openstackclient:/home/cloud-admin/rhsm.yaml
    Copy to Clipboard Toggle word wrap
  2. openstackclient pod 上打开一个远程 shell:

    $ oc rsh openstackclient
    Copy to Clipboard Toggle word wrap
  3. 打开 rhsm.yaml 文件,检查您的订阅管理配置是否包含 rhsm_release 参数。如果没有 rhsm_release 参数,请添加它并将其设置为 8.4

    parameter_defaults:
      RhsmVars:
        …​
        rhsm_username: "myusername"
        rhsm_password: "p@55w0rd!"
        rhsm_org_id: "1234567"
        rhsm_pool_ids: "1a85f9223e3d5e43013e3d6e8ff506fd"
        rhsm_method: "portal"
        rhsm_release: "8.4"
    Copy to Clipboard Toggle word wrap
  4. 保存 overcloud 订阅管理环境文件。
  5. 创建一个 playbook,其中包含一个将操作系统版本锁定为 RHEL 8.4 的任务:

    $ cat > ~/set_release.yaml <<'EOF'
    - hosts: all
      gather_facts: false
      tasks:
        - name: set release to 8.4
          command: subscription-manager release --set=8.4
          become: true
    EOF
    Copy to Clipboard Toggle word wrap
  6. openstackclient pod 上运行 ansible playbook:

    $ ansible-playbook -i /home/cloud-admin/ctlplane-ansible-inventory /home/cloud-admin/set_release.yaml --limit Controller,Compute
    Copy to Clipboard Toggle word wrap

    使用 --limit 选项将内容应用到所有 RHOSP 节点。不要针对 Red Hat Ceph Storage 节点运行此 playbook,因为您可能为这些节点使用不同的订阅。

注意

要将节点手动锁定到版本,登录到节点并运行 subscription-manager release 命令:

$ sudo subscription-manager release --set=8.4
Copy to Clipboard Toggle word wrap

11.1.2. 进入延长更新支持(EUS)软件仓库

您的 Red Hat OpenStack Platform (RHOSP)订阅包括 Red Hat Enterprise Linux (RHEL) 8.4 延长更新支持(EUS)的软件仓库。EUS 软件仓库包括 RHEL 8.4 的最新安全补丁和程序错误修复。在执行更新前,切换到以下软件仓库。

Expand
表 11.1. RHEL 8.4 的 EUS 软件仓库
标准软件仓库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 未经测试,可能会导致意外的结果。

前提条件

  • openstackclient pod 的 rhsm.yaml 文件复制到 /home/cloud-admin 目录中。

流程

  1. openstackclient pod 上打开一个远程 shell:

    $ oc rsh openstackclient
    Copy to Clipboard Toggle word wrap
  2. 打开 rhsm.yaml 文件,并检查订阅管理配置中的 rhsm_repos 参数。如果这个参数不包括 EUS 软件仓库,请将相关的软件仓库改为 EUS 版本:

    parameter_defaults:
      RhsmVars:
        rhsm_repos:
          - rhel-8-for-x86_64-baseos-eus-rpms
          - rhel-8-for-x86_64-appstream-eus-rpms
          - rhel-8-for-x86_64-highavailability-eus-rpms
          - ansible-2.9-for-rhel-8-x86_64-rpms
          - openstack-16.2-for-rhel-8-x86_64-rpms
          - rhceph-4-tools-for-rhel-8-x86_64-rpms
          - fast-datapath-for-rhel-8-x86_64-rpms
    Copy to Clipboard Toggle word wrap
  3. 保存 overcloud 订阅管理环境文件。
  4. 创建一个 playbook,其中包含在所有节点上将软件仓库设置为 RHEL 8.4 EUS 的任务:

    $ cat > ~/change_eus.yaml <<'EOF'
    - hosts: all
      gather_facts: false
      tasks:
        - name: change to eus repos
          command: subscription-manager repos --disable=rhel-8-for-x86_64-baseos-rpms --disable=rhel-8-for-x86_64-appstream-rpms --disable=rhel-8-for-x86_64-highavailability-rpms --enable=rhel-8-for-x86_64-baseos-eus-rpms --enable=rhel-8-for-x86_64-appstream-eus-rpms --enable=rhel-8-for-x86_64-highavailability-eus-rpms
          become: true
    EOF
    Copy to Clipboard Toggle word wrap
  5. 运行 change_eus.yaml playbook:

    $ ansible-playbook -i /home/cloud-admin/ctlplane-ansible-inventory /home/cloud-admin/change_eus.yaml --limit Controller,Compute
    Copy to Clipboard Toggle word wrap

    使用 --limit 选项将内容应用到所有 RHOSP 节点。不要针对 Red Hat Ceph Storage 节点运行此 playbook,因为它们使用不同的订阅。

更新您的软件仓库以使用 Red Hat OpenStack Platform (RHOSP) 16.2 和 Ansible 2.9 软件包。有关更多信息,请参阅 Overcloud 存储库

前提条件

  • 您已将 openstackclient pod 的 rhsm.yaml 文件复制到 /home/cloud-admin 目录中。

流程

  1. openstackclient pod 上打开一个远程 shell:

    $ oc rsh openstackclient
    Copy to Clipboard Toggle word wrap
  2. 打开 rhsm.yaml 文件,并检查订阅管理配置中的 rhsm_repos 参数。如果 rhsm_repos 参数使用 RHOSP 16.1 和 Ansible 2.8 存储库,请将存储库改为正确的版本:

    parameter_defaults:
      RhsmVars:
        rhsm_repos:
          - rhel-8-for-x86_64-baseos-eus-rpms
          - rhel-8-for-x86_64-appstream-eus-rpms
          - rhel-8-for-x86_64-highavailability-eus-rpms
          - ansible-2.9-for-rhel-8-x86_64-rpms
          - openstack-16.2-for-rhel-8-x86_64-rpms
          - fast-datapath-for-rhel-8-x86_64-rpms
    Copy to Clipboard Toggle word wrap
  3. 保存 overcloud 订阅管理环境文件。
  4. 创建一个 playbook,其中包含将存储库设置为所有 RHOSP 节点上的 RHOSP {osp_curr_ver} 的任务:

    $ cat > ~/update_rhosp_repos.yaml <<'EOF'
    - hosts: all
      gather_facts: false
      tasks:
        - name: change osp repos
          command: subscription-manager repos --disable=openstack-16.1-for-rhel-8-x86_64-rpms --enable=openstack-16.2-for-rhel-8-x86_64-rpms --disable=ansible-2.8-for-rhel-8-x86_64-rpms --enable=ansible-2.9-for-rhel-8-x86_64-rpms
          become: true
    EOF
    Copy to Clipboard Toggle word wrap
  5. 运行 update_rhosp_repos.yaml playbook:

    $ ansible-playbook -i /home/cloud-admin/ctlplane-ansible-inventory /home/cloud-admin/update_rhosp_repos.yaml --limit Controller,Compute
    Copy to Clipboard Toggle word wrap

    使用 --limit 选项将内容应用到所有 RHOSP 节点。不要针对 Red Hat Ceph Storage 节点运行此 playbook,因为它们使用不同的订阅。

  6. 创建一个 playbook,其中包含将存储库设置为所有 Red Hat Ceph Storage 节点上的 RHOSP {osp_curr_ver} 的任务:

    $ cat > ~/update_ceph_repos.yaml <<'EOF'
    - hosts: all
      gather_facts: false
      tasks:
        - name: change ceph repos
          command: subscription-manager repos --disable=openstack-16-deployment-tools-for-rhel-8-x86_64-rpms --enable=openstack-16.2-deployment-tools-for-rhel-8-x86_64-rpms --disable=ansible-2.8-for-rhel-8-x86_64-rpms --enable=ansible-2.9-for-rhel-8-x86_64-rpms
          become: true
    EOF
    Copy to Clipboard Toggle word wrap
  7. 运行 update_ceph_repos.yaml playbook:

    $ ansible-playbook -i /home/cloud-admin/ctlplane-ansible-inventory /home/cloud-admin/update_ceph_repos.yaml --limit CephStorage
    Copy to Clipboard Toggle word wrap

    使用 --limit 选项,将内容应用到 Red Hat Ceph Storage 节点。

11.1.4. 设置 container-tools 版本

container-tools 模块设置为版本 2.0,以确保在所有节点上使用正确的软件包版本。

流程

  1. openstackclient pod 上打开一个远程 shell:

    $ oc rsh openstackclient
    Copy to Clipboard Toggle word wrap
  2. 创建一个 playbook,其中包含一个任务,在所有节点上将 container-tools 模块设置为版本 3.0

    $ cat > ~/container-tools.yaml <<'EOF'
    - hosts: all
      gather_facts: false
      tasks:
        - name: disable default dnf module for container-tools
          command: dnf module reset container-tools
          become: true
        - name: set dnf module for container-tools:3.0
          command: dnf module enable -y container-tools:3.0
          become: true
        - name: disable dnf module for virt:8.2
          command: dnf module disable -y virt:8.2
          become: true
        - name: set dnf module for virt:rhel
          command: dnf module enable -y virt:rhel
          become: true
    EOF
    Copy to Clipboard Toggle word wrap
  3. 针对所有节点运行 container-tools.yaml playbook:

    $ ansible-playbook -i /home/cloud-admin/ctlplane-ansible-inventory ~/container-tools.yaml
    Copy to Clipboard Toggle word wrap

11.1.5. 更新容器镜像准备文件

容器准备文件是包含 ContainerImagePrepare 参数的文件。您可以使用此文件定义获取 overcloud 容器镜像的规则。

在更新环境前,请检查该文件以确保您获取正确的镜像版本。

流程

  1. 编辑容器准备文件。此文件的默认名称为 containers-prepare-parameter.yaml
  2. 检查每个规则集的 tag 参数设置为 16.2

    parameter_defaults:
      ContainerImagePrepare:
      - push_destination: true
        set:
          ...
          tag: '16.2'
        tag_from_label: '{version}-{release}'
    Copy to Clipboard Toggle word wrap
    注意

    如果您不想将特定的标签用于更新,如 16.216.2.2,请删除 tag 键-值对,并只指定 tag_from_label。这将使用已安装的 Red Hat OpenStack Platform 版本来确定要作为更新过程的一部分要使用的标签值。

  3. 保存这个文件。

11.1.6. 在 overcloud 中禁用隔离

在更新 overcloud 之前,请确保隔离已被禁用。

如果在 Controller 节点更新过程中部署隔离,则 overcloud 可能会将某些节点视为禁用并尝试隔离操作,这可能会导致意外的结果。

如果您在 overcloud 中启用了隔离,您必须在更新期间临时禁用隔离,以避免出现意外的结果。

流程

  1. openstackclient pod 上打开一个远程 shell:

    $ oc rsh openstackclient
    Copy to Clipboard Toggle word wrap
  2. 登录到一个 Controller 节点,并运行 Pacemaker 命令来禁用隔离:

    ssh <controller-0.ctlplane> "sudo pcs property set stonith-enabled=false"
    Copy to Clipboard Toggle word wrap
    • <controller-0.ctlplane > 替换为 Controller 节点的名称。
  3. fencing.yaml 环境文件中,将 EnableFencing 参数设置为 false 以确保隔离在更新过程中被禁用。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat