第 2 章 准备 director Operator 进行采用


您必须准备现有的 director Operator 环境和 OpenShift (RHOSO)上的 Red Hat OpenStack Services 环境,以便采用。

准备 director Operator (OSPdO)环境中的 Controller 节点,使其用于 OpenShift (RHOSO)环境中的 Red Hat OpenStack Services。

注意

以下流程使用由源 OSPdO 环境和目标 RHOSO 环境共享的单个 Red Hat OpenShift Container Platform (RHOCP)集群。两个 RHOCP 主节点传输到 RHOSO 环境,在采用过程中,将 OSPdO 保留为一个节点。在采用后,RHOSO 环境也可以使用其余节点。

流程

  1. 登录到部署 RHOSP OSPdO 的 RHOCP 环境,并更改到托管 RHOSP 部署的项目:

    $ oc project openstack
  2. 定义通用环境变量:

    export PASSWORD_FILE="tripleo-passwords.yaml"
    
    export RHOSO18_NAMESPACE="rhoso"
    
    export OSPDO_NAMESPACE="openstack"
    
    export OS_CLIENT="oc exec -c openstackclient -t openstackclient -- "
    
    export CONTROLLER_SSH="oc rsh -n $OSPDO_NAMESPACE -c openstackclient openstackclient ssh controller-0.ctlplane"
    
    export CONTROLLER1_SSH="oc -n $OSPDO_NAMESPACE rsh -c openstackclient openstackclient ssh controller-0.ctlplane"
    export CONTROLLER2_SSH=
    export CONTROLLER3_SSH=
    
    export OSPDO_INTERNAL_API_NET="internalapi"
    
    export STORAGE_CLASS=$(oc get -n $OSPDO_NAMESPACE pvc openstackclient-hosts -o jsonpath='{.spec.storageClassName}')
  3. 获取运行当前 RHOSP Controller 虚拟机(VM)的节点的名称:

    $ export CONTROLLER_NODE=$(oc -n $OSPDO_NAMESPACE get vmi -ojson | jq -r '.items[0].status.nodeName')
  4. 如果您将 master/worker 集群与高可用性 OSPdO 环境结合使用,请将 OSPdO 配置为使用单个 RHOSP Controller 节点:

    1. 禁用 stonith :

      $ stonith_resources=$($CONTROLLER1_SSH sudo pcs stonith status|grep Started|awk '{print $2}')
      for resource in stonith_resources ;do $CONTROLLER1_SSH sudo pcs stonith disable $resource;done
    2. 将非Controller 节点置于维护状态:

      $CONTROLLER1_SSH sudo pcs node maintenance <controller-1> <controller-2>
      • <controller -1& gt; 和 & lt;controller-2> 替换为环境中 Controller 节点的名称。
    3. 为单一节点更新仲裁:

      $CONTROLLER1_SSH sudo systemctl stop corosync
      $CONTROLLER2_SSH sudo systemctl stop corosync
      $CONTROLLER3_SSH sudo systemctl stop corosync
      $CONTROLLER1_SSH sudo pcs quorum update last_man_standing=1 wait_for_all=1
      $CONTROLLER1_SSH sudo systemctl restart corosync
    4. 重启 Pacemaker 集群:

      $CONTROLLER1_SSH sudo pcs cluster stop
      $CONTROLLER1_SSH sudo pcs cluster start
    5. 检查是否只启动 Controller-0,并且其他 2 Controller 是否已停止:

      $CONTROLLER_SSH sudo pcs status
    6. 检查 RHOSP control plane 是否仍然可以正常工作:

      $OS_CLIENT openstack compute service list
      注意

      您可能需要等待几分钟,以便 control plane 正常运行。此时,control plane 响应会减慢。

    7. 当 Pacemaker 只管理其中一个控制器时,删除 Controller 虚拟机的 2。以下示例指定了要删除的 Controller-1 和 Controller-2 虚拟机:

      $ oc -n "${OSPDO_NAMESPACE}"annotate vm controller-1 osp-director.openstack.org/delete-host=true
      $ oc -n "${OSPDO_NAMESPACE}"annotate vm controller-2 osp-director.openstack.org/delete-host=true
    8. OpenStackControlPlane CR 中的 Controller 角色的 roleCount 减小到 1:

      $ oc -n "${OSPDO_NAMESPACE}"patch OpenStackControlPlane overcloud --type json -p '[{"op": "replace", "path":"/spec/virtualMachineRoles/controller/roleCount", "value": 1}]'
    9. 确保 OpenStackClient 容器集与剩余的 Controller 虚拟机在同一 RHOCP 节点上运行。如果 OpenStackClient pod 没有在同一节点上,则通过封锁到 RHOSO 的两个节点来移动它。然后,您将删除 OpenStackClient pod,以便在具有剩余的 Controller 虚拟机的 RHOCP 节点上重新调度。pod 移到正确的节点后,取消协调所有节点:

      $ oc adm cordon $OSP18_NODE1
      $ oc adm cordon $OSP18_NODE2
      $ oc delete pod openstackclient
      $ oc adm uncordon $OSP18_NODE1
      $ oc adm uncordon $OSP18_NODE2
    10. 通过将 nodeSelector 放置到包含 Controller 虚拟机的 RHOCP 节点上,从没有运行 Controller 虚拟机的其他两个节点中删除 OSPdO 节点网络配置策略:

      $ for i in br-ctlplane br-ex br-osp; do oc patch osnetconfig openstacknetconfig --type json -p '[{"op": "replace", "path": "/spec/attachConfigurations/'$i'/nodeNetworkConfigurationPolicy/nodeSelector", "value": {"kubernetes.io/hostname": "'$CONTROLLER_NODE'"}}]'; done
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部