第 2 章 准备 director Operator 进行采用
您必须准备现有的 director Operator 环境和 OpenShift (RHOSO)上的 Red Hat OpenStack Services 环境,以便采用。
2.1. 为 director Operator 的使用准备 Controller 节点 复制链接链接已复制到粘贴板!
准备 director Operator (OSPdO)环境中的 Controller 节点,使其用于 OpenShift (RHOSO)环境中的 Red Hat OpenStack Services。
以下流程使用由源 OSPdO 环境和目标 RHOSO 环境共享的单个 Red Hat OpenShift Container Platform (RHOCP)集群。两个 RHOCP 主节点传输到 RHOSO 环境,在采用过程中,将 OSPdO 保留为一个节点。在采用后,RHOSO 环境也可以使用其余节点。
流程
登录到部署 RHOSP OSPdO 的 RHOCP 环境,并更改到托管 RHOSP 部署的项目:
$ oc project openstack定义通用环境变量:
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}')获取运行当前 RHOSP Controller 虚拟机(VM)的节点的名称:
$ export CONTROLLER_NODE=$(oc -n $OSPDO_NAMESPACE get vmi -ojson | jq -r '.items[0].status.nodeName')如果您将 master/worker 集群与高可用性 OSPdO 环境结合使用,请将 OSPdO 配置为使用单个 RHOSP Controller 节点:
禁用 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将非Controller 节点置于维护状态:
$CONTROLLER1_SSH sudo pcs node maintenance <controller-1> <controller-2>-
将
<controller-1> 和 <controller-2> 替换为环境中 Controller 节点的名称。
-
将
为单一节点更新仲裁:
$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重启 Pacemaker 集群:
$CONTROLLER1_SSH sudo pcs cluster stop $CONTROLLER1_SSH sudo pcs cluster start检查是否只启动 Controller-0,并且其他 2 Controller 是否已停止:
$CONTROLLER_SSH sudo pcs status检查 RHOSP control plane 是否仍然可以正常工作:
$OS_CLIENT openstack compute service list注意您可能需要等待几分钟,以便 control plane 正常运行。此时,control plane 响应会减慢。
当 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将
OpenStackControlPlaneCR 中的 Controller 角色的roleCount减小到1:$ oc -n "${OSPDO_NAMESPACE}"patch OpenStackControlPlane overcloud --type json -p '[{"op": "replace", "path":"/spec/virtualMachineRoles/controller/roleCount", "value": 1}]'确保
OpenStackClient容器集与剩余的 Controller 虚拟机在同一 RHOCP 节点上运行。如果OpenStackClientpod 没有在同一节点上,则通过封锁到 RHOSO 的两个节点来移动它。然后,您将删除OpenStackClientpod,以便在具有剩余的 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通过将
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