7.2. 将计算服务到 RHOSO 数据平面
将您的 Compute (nova)服务纳入 OpenShift (RHOSO)数据平面上的 Red Hat OpenStack 服务。
先决条件
- 您已在 Compute 服务(nova)主机上停止剩余的 control plane 节点、存储库和软件包。如需更多信息,请参阅 停止基础架构管理和计算服务。
-
您已为
NovaLibvirt服务配置了 Ceph 后端。有关更多信息 ,请参阅配置 Ceph 后端。 您已配置了 IP 地址管理(IPAM):
$ oc apply -f - <<EOF apiVersion: network.openstack.org/v1beta1 kind: NetConfig metadata: name: netconfig spec: networks: - name: ctlplane dnsDomain: ctlplane.example.com subnets: - name: subnet1 allocationRanges: - end: 192.168.122.120 start: 192.168.122.100 - end: 192.168.122.200 start: 192.168.122.150 cidr: 192.168.122.0/24 gateway: 192.168.122.1 - name: internalapi dnsDomain: internalapi.example.com subnets: - name: subnet1 allocationRanges: - end: 172.17.0.250 start: 172.17.0.100 cidr: 172.17.0.0/24 vlan: 20 - name: External dnsDomain: external.example.com subnets: - name: subnet1 allocationRanges: - end: 10.0.0.250 start: 10.0.0.100 cidr: 10.0.0.0/24 gateway: 10.0.0.1 - name: storage dnsDomain: storage.example.com subnets: - name: subnet1 allocationRanges: - end: 172.18.0.250 start: 172.18.0.100 cidr: 172.18.0.0/24 vlan: 21 - name: storagemgmt dnsDomain: storagemgmt.example.com subnets: - name: subnet1 allocationRanges: - end: 172.20.0.250 start: 172.20.0.100 cidr: 172.20.0.0/24 vlan: 23 - name: tenant dnsDomain: tenant.example.com subnets: - name: subnet1 allocationRanges: - end: 172.19.0.250 start: 172.19.0.100 cidr: 172.19.0.0/24 vlan: 22 EOF-
如果在 Compute 服务节点上运行
neutron-sriov-nic-agent,请确保物理设备映射与OpenStackDataPlaneNodeSet自定义资源(CR)中定义的值匹配。如需更多信息,请参阅从 director Operator 部署中提取配置。 您已定义 shell 变量来运行运行升级的脚本:
$ CEPH_FSID=$(oc get secret ceph-conf-files -o json | jq -r '.data."ceph.conf"' | base64 -d | grep fsid | sed -e 's/fsid = //') $ alias openstack="oc exec -t openstackclient -- openstack" $ DEFAULT_CELL_NAME="cell3"1 $ RENAMED_CELLS="cell1 cell2 $DEFAULT_CELL_NAME" $ declare -A COMPUTES_CELL1 $ export COMPUTES_CELL1=(2 ["standalone.localdomain"]="192.168.122.100"3 # <compute1>4 # <compute2> # <compute3> ) $ declare -A COMPUTES_CELL2 $ export COMPUTES_CELL2=( # ... ) $ declare -A COMPUTES_CELL3 $ export COMPUTES_CELL3=( # ...5 ) # ... $ declare -A COMPUTES_API_CELL1 $ export COMPUTES_API_CELL1=(6 ["standalone.localdomain"]="172.17.0.100" # ... ) # ... $ NODESETS="" $ for CELL in $(echo $RENAMED_CELLS); do ref="COMPUTES_$(echo ${CELL}|tr '[:lower:]' '[:upper:]')" eval names=\${!${ref}[@]} [ -z "$names" ] && continue NODESETS="'openstack-${CELL}', $NODESETS"7 done $ NODESETS="[${NODESETS%,*}]"- 1
- 源云
默认单元在采用后获取目标云上的新的DEFAULT_CELL_NAME。在多单元采用场景中,您可以通过提供源云中最后单元的索引来保留原始名称、默认或 创建新单元默认名称。例如,如果最后一个单元的递增索引是cell5,新的单元默认名称是cell6。 - 2
- 对于每个单元,使用连接到
ctlplane和internalapi网络的 Compute 服务节点的名称和 IP地址更新 <["standalone.localdomain"]="x.x.x">值以及COMPUTES_CELL<X> 值。不要为每个网络指定一个真实的 FQDN。始终对 Compute 节点的每个连接的网络使用相同的主机名。根据需要,提供源云其余网络上的 IP 地址和主机名称。或者,您可以手动调整在此流程的第 9 步中生成的文件。 - 3
- 如果您的部署有自定义 DNS 域,请在节点的 FQDN 值中指定它。此值用于 data plane 节点设置
spec.nodes.<NODE NAME>.hostName。 - 4
- 将源云
单元1单元中的所有 Compute 服务节点分配给COMPUTES_CELL1,以此类推。将<compute1> , <compute2> , 和 <compute3> 替换为 Compute 服务节点的名称。 - 5
- 将源云
默认单元中的所有 Compute 服务节点分配给COMPUTES_CELL<X>和COMPUTES_API_CELL<X>',其中<X> 是DEFAULT_CELL_NAME环境变量值。在本例中,DEFAULT_CELL_NAME环境变量值等于cell3。 - 6
- 对于每个单元,使用连接到
ctlplane和internalapi网络的 Compute 服务节点的 name 和COMPUTES_API_CELL值更新 <["standalone.localdomain"]="192.168.122.100">值以及 COMPUTES_API_CELL 值。不要为每个网络指定一个真实的 FQDN。为每个连接的网络使用相同的主机名。根据需要,提供源云其余网络上的 IP 地址和主机名称。或者,您可以手动调整在此流程的第 9 步中生成的文件。 - 7
- 此模板中省略了不包含 Compute 节点的单元,因为没有为单元创建节点集。
注意如果您使用
默认单元部署源云,并希望在采用过程中重命名它,请定义您要使用的新名称,如下例所示:$ DEFAULT_CELL_NAME="cell1" $ RENAMED_CELLS="cell1"
如果本地存储后端由 libvirt 的 Compute 服务配置,则不要为 CEPH_FSID 参数设置值。存储后端必须与源云存储后端匹配。您不能在采用过程中更改存储后端。
流程
为 data plane 节点创建 SSH 身份验证 secret:
$ oc apply -f - <<EOF apiVersion: v1 kind: Secret metadata: name: dataplane-adoption-secret data: ssh-privatekey: | $(cat <path_to_SSH_key> | base64 | sed 's/^/ /') EOF-
将
<path_to_SSH_key> 替换为 SSH 密钥的路径。
-
将
生成 ssh 密钥对
nova-migration-ssh-keysecret:$ cd "$(mktemp -d)" $ ssh-keygen -f ./id -t ecdsa-sha2-nistp521 -N '' $ oc get secret nova-migration-ssh-key || oc create secret generic nova-migration-ssh-key \ --from-file=ssh-privatekey=id \ --from-file=ssh-publickey=id.pub \ --type kubernetes.io/ssh-auth $ rm -f id* $ cd -如果启用了 TLS Everywhere,将
LIBVIRT_PASSWORD设置为与现有的 RHOSP 部署密码匹配:declare -A TRIPLEO_PASSWORDS TRIPLEO_PASSWORDS[default]="$HOME/overcloud-passwords.yaml" LIBVIRT_PASSWORD=$(cat ${TRIPLEO_PASSWORDS[default]} | grep ' LibvirtTLSPassword:' | awk -F ': ' '{ print $2; }') LIBVIRT_PASSWORD_BASE64=$(echo -n "$LIBVIRT_PASSWORD" | base64)启用 TLS-e 时创建 libvirt-secret:
$ oc apply -f - <<EOF apiVersion: v1 kind: Secret metadata: name: libvirt-secret type: Opaque data: LibvirtPassword: ${LIBVIRT_PASSWORD_BASE64} EOF
创建一个配置映射,用于所有单元来为 libvirt 配置本地存储后端:
$ oc apply -f - <<EOF apiVersion: v1 kind: ConfigMap metadata: name: nova-cells-global-config data:1 99-nova-compute-cells-workarounds.conf: |2 [workarounds] disable_compute_service_check_for_ffu=true EOF注意如果您采用 live 云,您可能需要执行存储在 cell1 默认
配置映射中的默认 nova data plane 服务的额外配置。不要删除或覆盖分配给nova-extra-confignova的cell1默认nova-extra-config配置映射中的现有配置。覆盖配置可能会破坏依赖于nova-extra-config配置映射特定内容的数据位置服务。为 libvirt 配置 Red Hat Ceph Storage 后端:
$ oc apply -f - <<EOF apiVersion: v1 kind: ConfigMap metadata: name: nova-cells-global-config data: 99-nova-compute-cells-workarounds.conf: | [workarounds] disable_compute_service_check_for_ffu=true 03-ceph-nova.conf: | [libvirt] images_type=rbd images_rbd_pool=vms images_rbd_ceph_conf=/etc/ceph/ceph.conf images_rbd_glance_store_name=default_backend images_rbd_glance_copy_poll_interval=15 images_rbd_glance_copy_timeout=600 rbd_user=openstack rbd_secret_uuid=$CEPH_FSID EOF注意对于带有多单元配置的 Red Hat Ceph Storage 环境,您必须命名配置映射和 Red Hat OpenStack Platform 数据平面服务,如下例所示:
nova-custom-ceph-cellX和nova-compute-extraconfig-cellX。为 Compute 服务单元创建 data plane 服务以启用预升级临时解决方案,并为您选择的存储后端配置 Compute 服务:
for CELL in $(echo $RENAMED_CELLS); do $ oc apply -f - <<EOF --- apiVersion: dataplane.openstack.org/v1beta1 kind: OpenStackDataPlaneService metadata: name: nova-$CELL spec: dataSources:1 - secretRef: name: nova-$CELL-compute-config2 - secretRef: name: nova-migration-ssh-key3 - configMapRef: name: nova-cells-global-config playbook: osp.edpm.nova caCerts: combined-ca-bundle edpmServiceType: nova containerImageFields: - NovaComputeImage - EdpmIscsidImage EOF done如果启用了 TLS Everywhere,请将以下内容附加到
OpenStackDataPlaneServiceCR 中:tlsCerts: contents: - dnsnames - ips networks: - ctlplane issuer: osp-rootca-issuer-internal edpmRoleServiceName: nova caCerts: combined-ca-bundle edpmServiceType: nova- 1
- 要为 cell<X> 启用本地元数据服务,请附加
spec.dataSources.secretRef来引用额外的自动生成的nova-cell<X>-metadata-neutron-configsecret。您还应该在OpenStackControlPlane/openstackCR 中设置spec.nova.template.cellTemplates.cell<X>.metadataServiceTemplate.enable,如 Adopt ing the Compute 服务 中所述。您可以配置单个顶级元数据,或者定义每个单元的元数据。 - 2
- 每个单元格的 secret
nova-cell<X>-compute-configauto-generates。 - 3
- 您必须为每个与 Compute 服务相关的自定义
OpenStackDataPlaneServiceCR 附加nova-cell<X>-compute-config和nova-migration-ssh-key引用。
注意为 Compute 服务单元创建数据平面服务时,请查看以下注意事项:
-
在本例中,相同的
nova-migration-ssh-key键在单元格之间共享。但是,您应该对不同的单元使用不同的键。 -
对于简单的配置覆盖,您不需要自定义数据平面服务。但是,要重新配置单元
cell1,st 选项是创建自定义服务和专用配置映射。 -
单元
cell1已使用名为nova及其nova-extra-config配置映射的默认OpenStackDataPlaneServiceCR 管理。不要更改默认的 data plane 服务nova定义。当使用 OLM 更新 RHOSO Operator 时,这些更改将会丢失。 -
当单元跨越多个节点集时,为自定义
OpenStackDataPlaneService资源提供与节点集合相关的名称,如nova-cell1-nfv和nova-cell1-enterprise。然后,自动生成的配置映射命名为nova-cell1-nfv-extra-config和nova-cell1-enterprise-extra-config。 - 也支持同一单元的多个节点集合中节点的不同配置,但本指南中不阐述。
为订阅管理器创建 secret:
$ oc create secret generic subscription-manager \ --from-literal rhc_auth='{"login": {"username": "<subscription_manager_username>", "password": "<subscription_manager_password>"}}'-
将
<subscription_manager_username> 替换为适用的用户名。 -
将
<subscription_manager_password> 替换为适用的密码。
-
将
为 Red Hat registry 创建 secret:
$ oc create secret generic redhat-registry \ --from-literal edpm_container_registry_logins='{"registry.redhat.io": {"<registry_username>": "<registry_password>"}}'-
将
<registry_username> 替换为适用的用户名。 将
<registry_password> 替换为适用的密码。注意您不需要在
OpenStackDataPlaneServiceCR 的dataSources字段中引用subscription-managersecret。secret 已通过nodeTemplate字段中ansibleVarsFrom属性中的特定于节点的OpenStackDataPlaneNodeSetCR 传递。
-
将
为每个单元创建 data plane 节点设置定义:
$ declare -A names $ for CELL in $(echo $RENAMED_CELLS); do ref="COMPUTES_$(echo ${CELL}|tr '[:lower:]' '[:upper:]')" eval names=\${!${ref}[@]} ref_api="COMPUTES_API_$(echo ${CELL}|tr '[:lower:]' '[:upper:]')" [ -z "$names" ] && continue ind=0 rm -f computes-$CELL for compute in $names; do ip="${ref}['$compute']" ip_api="${ref_api}['$compute']" cat >> computes-$CELL << EOF ${compute}: hostName: $compute1 ansible: ansibleHost: $compute networks:2 - defaultRoute: true fixedIP: ${!ip} name: ctlplane subnetName: subnet1 - name: internalapi subnetName: subnet1 fixedIP: ${!ip_api} - name: storage subnetName: subnet1 - name: tenant subnetName: subnet1 EOF ind=$(( ind + 1 )) done test -f computes-$CELL || continue cat > nodeset-${CELL}.yaml <<EOF apiVersion: dataplane.openstack.org/v1beta1 kind: OpenStackDataPlaneNodeSet metadata: name: openstack-$CELL3 spec: tlsEnabled: false4 networkAttachments: - ctlplane preProvisioned: true services: - redhat - bootstrap - download-cache - configure-network - validate-network - install-os - configure-os - ssh-known-hosts - run-os - reboot-os - install-certs - ovn - neutron-metadata - libvirt - nova-$CELL - telemetry5 env: - name: ANSIBLE_CALLBACKS_ENABLED value: "profile_tasks" - name: ANSIBLE_FORCE_COLOR value: "True" - name: ANSIBLE_VERBOSITY value: '3' nodeTemplate: ansibleSSHPrivateKeySecret: dataplane-adoption-secret ansible: ansibleUser: root ansibleVarsFrom: - secretRef: name: subscription-manager - secretRef: name: redhat-registry ansibleVars: rhc_release: 9.2 rhc_repositories: - {name: "*", state: disabled} - {name: "rhel-9-for-x86_64-baseos-eus-rpms", state: enabled} - {name: "rhel-9-for-x86_64-appstream-eus-rpms", state: enabled} - {name: "rhel-9-for-x86_64-highavailability-eus-rpms", state: enabled} - {name: "rhoso-18.0-for-rhel-9-x86_64-rpms", state: enabled} - {name: "fast-datapath-for-rhel-9-x86_64-rpms", state: enabled} - {name: "rhceph-7-tools-for-rhel-9-x86_64-rpms", state: enabled} edpm_bootstrap_release_version_package: [] # edpm_network_config # Default nic config template for a EDPM node # These vars are edpm_network_config role vars edpm_network_config_template: | --- {% set mtu_list = [ctlplane_mtu] %} {% for network in nodeset_networks %} {% set _ = mtu_list.append(lookup('vars', networks_lower[network] ~ '_mtu')) %} {%- endfor %} {% set min_viable_mtu = mtu_list | max %} network_config: - type: ovs_bridge name: {{ neutron_physical_bridge_name }} mtu: {{ min_viable_mtu }} use_dhcp: false dns_servers: {{ ctlplane_dns_nameservers }} domain: {{ dns_search_domains }} addresses: - ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_cidr }} routes: {{ ctlplane_host_routes }} members: - type: interface name: nic1 mtu: {{ min_viable_mtu }} # force the MAC address of the bridge to this interface primary: true {% for network in nodeset_networks %} - type: vlan mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }} vlan_id: {{ lookup('vars', networks_lower[network] ~ '_vlan_id') }} addresses: - ip_netmask: {{ lookup('vars', networks_lower[network] ~ '_ip') }}/{{ lookup('vars', networks_lower[network] ~ '_cidr') }} routes: {{ lookup('vars', networks_lower[network] ~ '_host_routes') }} {% endfor %} edpm_network_config_nmstate: false # Control resolv.conf management by NetworkManager # false = disable NetworkManager resolv.conf update (default) # true = enable NetworkManager resolv.conf update edpm_bootstrap_network_resolvconf_update: false edpm_network_config_hide_sensitive_logs: false # # These vars are for the network config templates themselves and are # considered EDPM network defaults. neutron_physical_bridge_name: br-ctlplane6 neutron_public_interface_name: eth0 # edpm_nodes_validation edpm_nodes_validation_validate_controllers_icmp: false edpm_nodes_validation_validate_gateway_icmp: false # edpm ovn-controller configuration edpm_ovn_bridge_mappings: <bridge_mappings>7 edpm_ovn_bridge: br-int edpm_ovn_encap_type: geneve ovn_monitor_all: true edpm_ovn_remote_probe_interval: 60000 edpm_ovn_ofctrl_wait_before_clear: 8000 timesync_ntp_servers: - hostname: clock.redhat.com - hostname: clock2.redhat.com edpm_bootstrap_command: | # FIXME: perform dnf upgrade for other packages in EDPM ansible # here we only ensuring that decontainerized libvirt can start dnf -y upgrade openstack-selinux rm -f /run/virtlogd.pid gather_facts: false # edpm firewall, change the allowed CIDR if needed edpm_sshd_configure_firewall: true edpm_sshd_allowed_ranges: ['192.168.122.0/24'] # Do not attempt OVS major upgrades here edpm_ovs_packages: - openvswitch3.3 edpm_default_mounts:8 - path: /dev/hugepages<size> opts: pagesize=<size> fstype: hugetlbfs group: hugetlbfs nodes: EOF cat computes-$CELL >> nodeset-${CELL}.yaml done- 1
- 如果您的部署有一个自定义 DNS 域,请指定节点的 FQDN。
- 2
- 网络组成必须与源云配置匹配,以避免数据平面连接停机时间。
ctlplane网络必须首先出现。命令仅保留ctlplane和internalapi网络上的主机的 IP 地址。对其他隔离网络重复此步骤,或者手动更新生成的文件。 - 3
- 使用节点集名称,如
openstack-cell1、openstack-cell2。仅为包含 Compute 节点的单元创建节点集。 - 4
- 如果启用了 TLS Everywhere,请将
tlsEnabled更改为true。 - 5
- 如果没有使用 telemetry 服务,请从 services 列表中省略它。
- 6
- 网桥名称和其他 OVN 和网络服务特定值必须与源云配置匹配,以避免数据平面连接停机时间。
- 7
- 将
<bridge_mappings> 替换为您的配置中网桥映射的值,如"datacentre:br-ctlplane"。 - 8
- 要配置巨页,将 <
;size> 替换为页面的大小。要配置多大小巨页,请在列表中创建更多项目。请注意,挂载点必须与源云配置匹配。
注意在采用前,请确保在 Compute 服务节点中使用的
OpenStackDataPlaneNodeSetCR 中使用相同的ovn-controller设置。此配置存储在 Open vSwitch 数据库的Open_vSwitch表中的external_ids列中:$ ovs-vsctl list Open . ... external_ids : {hostname=standalone.localdomain, ovn-bridge=br-int, ovn-bridge-mappings=<bridge_mappings>, ovn-chassis-mac-mappings="datacentre:1e:0a:bb:e6:7c:ad", ovn-encap-ip="172.19.0.100", ovn-encap-tos="0", ovn-encap-type=geneve, ovn-match-northd-version=False, ovn-monitor-all=True, ovn-ofctrl-wait-before-clear="8000", ovn-openflow-probe-interval="60", ovn-remote="tcp:ovsdbserver-sb.openstack.svc:6642", ovn-remote-probe-interval="60000", rundir="/var/run/openvswitch", system-id="2eec68e6-aa21-4c95-a868-31aeafc11736"} ...为每个 Compute 单元部署
OpenStackDataPlaneNodeSetCR:$ for CELL in $(echo $RENAMED_CELLS); do > test -f nodeset-${CELL}.yaml || continue > oc apply -f nodeset-${CELL}.yaml > done如果将 Red Hat Ceph Storage 后端用于块存储服务(cinder),请准备采用的 data plane 工作负载:
$ for CELL in $(echo $RENAMED_CELLS); do test -f nodeset-${CELL}.yaml || continue $ oc patch osdpns/openstack-$CELL --type=merge --patch " spec: services: - redhat - bootstrap - download-cache - configure-network - validate-network - install-os - configure-os - ssh-known-hosts - run-os - reboot-os - ceph-client - install-certs - ovn - neutron-metadata - libvirt - nova-$CELL - telemetry nodeTemplate: extraMounts: - extraVolType: Ceph volumes: - name: ceph secret: secretName: ceph-conf-files mounts: - name: ceph mountPath: "/etc/ceph" readOnly: true " done注意确保使用与原始
OpenStackDataPlaneNodeSetCR 相同的服务列表,但ceph-client和ceph-hci-pre服务除外。可选:在
OpenStackDataPlaneNodeSetCR 中启用neutron-sriov-nic-agent:$ for CELL in $(echo $RENAMED_CELLS); do test -f nodeset-${CELL}.yaml || continue $ oc patch openstackdataplanenodeset openstack-$CELL --type='json' --patch='[ { "op": "add", "path": "/spec/services/-", "value": "neutron-sriov" }, { "op": "add", "path": "/spec/nodeTemplate/ansible/ansibleVars/edpm_neutron_sriov_agent_SRIOV_NIC_physical_device_mappings", "value": "dummy_sriov_net:dummy-dev" }, { "op": "add", "path": "/spec/nodeTemplate/ansible/ansibleVars/edpm_neutron_sriov_agent_SRIOV_NIC_resource_provider_bandwidths", "value": "dummy-dev:40000000:40000000" }, { "op": "add", "path": "/spec/nodeTemplate/ansible/ansibleVars/edpm_neutron_sriov_agent_SRIOV_NIC_resource_provider_hypervisors", "value": "dummy-dev:standalone.localdomain" }]' done可选:在
OpenStackDataPlaneNodeSetCR 中启用neutron-dhcp:$ for CELL in $(echo $RENAMED_CELLS); do test -f nodeset-${CELL}.yaml || continue $ oc patch openstackdataplanenodeset openstack-$CELL --type='json' --patch='[ { "op": "add", "path": "/spec/services/-", "value": "neutron-dhcp" }]' done注意要将
neutron-dhcp与 OVN 用于裸机置备服务(ironic),您必须将 Networking 服务(neutron)的disable_ovn_dhcp_for_baremetal_ports配置选项设为true。您可以在NeutronAPIspec 中设置此配置:.. spec: serviceUser: neutron ... customServiceConfig: | [DEFAULT] dhcp_agent_notification = True [ovn] disable_ovn_dhcp_for_baremetal_ports = true运行 pre-adoption 验证:
创建验证服务:
$ oc apply -f - <<EOF apiVersion: dataplane.openstack.org/v1beta1 kind: OpenStackDataPlaneService metadata: name: pre-adoption-validation spec: playbook: osp.edpm.pre_adoption_validation EOF创建仅运行验证的
OpenStackDataPlaneDeploymentCR:$ oc apply -f - <<EOF apiVersion: dataplane.openstack.org/v1beta1 kind: OpenStackDataPlaneDeployment metadata: name: openstack-pre-adoption spec: nodeSets: $NODESETS servicesOverride: - pre-adoption-validation EOF注意如果您为不同的
OpenStackDataPlaneServiceCR 创建不同的迁移 SSH 密钥,则也应该为代表单元的每个节点设置或节点集定义一个单独的OpenStackDataPlaneDeploymentCR。验证完成后,确认 Ansible EE pod 的状态为
Completed:$ watch oc get pod -l app=openstackansibleee$ oc logs -l app=openstackansibleee -f --max-log-requests 20等待部署变为
Ready状态:$ oc wait --for condition=Ready openstackdataplanedeployment/openstack-pre-adoption --timeout=10m重要如果任何 openstack-pre-adoption 验证失败,您必须引用 Ansible 日志来确定哪些失败,然后尝试以下故障排除选项:
-
如果主机名验证失败,请检查 data plane 节点的主机名是否在
OpenStackDataPlaneNodeSetCR 中正确列出。 -
如果内核参数检查失败,请确保
OpenStackDataPlaneNodeSetCR 中的edpm_kernel_args和edpm_kernel_hugepages变量中的内核参数配置与您在 Red Hat OpenStack Platform (RHOSP) 17.1 节点中使用的内核参数配置相同。 -
如果 tuned 配置集检查失败,请确保
OpenStackDataPlaneNodeSetCR 中的edpm_tuned_profile变量配置为使用与 RHOSP 17.1 节点上的设置相同的配置集。
-
如果主机名验证失败,请检查 data plane 节点的主机名是否在
删除剩余的 director Operator 服务:
创建
OpenStackDataPlaneServiceCR 来清理您正在使用的数据平面服务:$ oc apply -f - <<EOF apiVersion: dataplane.openstack.org/v1beta1 kind: OpenStackDataPlaneService metadata: name: tripleo-cleanup spec: playbook: osp.edpm.tripleo_cleanup EOF创建
OpenStackDataPlaneDeploymentCR 以运行清理:$ oc apply -f - <<EOF apiVersion: dataplane.openstack.org/v1beta1 kind: OpenStackDataPlaneDeployment metadata: name: tripleo-cleanup spec: nodeSets: $NODESETS servicesOverride: - tripleo-cleanup EOF
完成清理后,部署
OpenStackDataPlaneDeploymentCR:$ oc apply -f - <<EOF apiVersion: dataplane.openstack.org/v1beta1 kind: OpenStackDataPlaneDeployment metadata: name: openstack spec: nodeSets: $NODESETS EOF注意如果将其他节点设置为要部署的,如 Networker 节点,您可以在此步骤的
nodeSets列表中添加它们,或者稍后创建单独的OpenStackDataPlaneDeploymentCR。您不能在部署后将新节点设置为OpenStackDataPlaneDeploymentCR。
验证
确认所有 Ansible EE pod 都到达
Completed状态:$ watch oc get pod -l app=openstackansibleee$ oc logs -l app=openstackansibleee -f --max-log-requests 20等待 data plane 节点设置为
Ready状态:$ for CELL in $(echo $RENAMED_CELLS); do > oc wait --for condition=Ready osdpns/openstack-$CELL --timeout=30m > done验证 Networking 服务(neutron)代理是否正在运行:
$ oc exec openstackclient -- openstack network agent list +--------------------------------------+------------------------------+------------------------+-------------------+-------+-------+----------------------------+ | ID | Agent Type | Host | Availability Zone | Alive | State | Binary | +--------------------------------------+------------------------------+------------------------+-------------------+-------+-------+----------------------------+ | 174fc099-5cc9-4348-b8fc-59ed44fcfb0e | DHCP agent | standalone.localdomain | nova | :-) | UP | neutron-dhcp-agent | | 10482583-2130-5b0d-958f-3430da21b929 | OVN Metadata agent | standalone.localdomain | | :-) | UP | neutron-ovn-metadata-agent | | a4f1b584-16f1-4937-b2b0-28102a3f6eaa | OVN Controller agent | standalone.localdomain | | :-) | UP | ovn-controller | +--------------------------------------+------------------------------+------------------------+-------------------+-------+-------+----------------------------+
从 director Operator 单元控制器中删除所有服务后,您可以取消单元控制器。要创建新的单元 Compute 节点,您可以将分离的控制器重新置备为新的数据平面主机,并将它们添加到对应或新单元的节点集合中。
后续步骤
- 您必须在计算服务上执行快速升级。如需更多信息,请参阅在计算服务上执行快速升级。