5.4. 为一组带有未置备的节点的 Networker 节点创建 OpenStackDataPlaneNodeSet CR
要创建带有未置备的节点的 Networker 节点,您必须执行以下任务:
-
为每个裸机节点创建
BareMetalHost自定义资源(CR)。 -
为 Networker 节点定义
OpenStackDataPlaneNodeSetCR。
先决条件
- 您的 RHOCP 集群支持调配裸机节点。如需更多信息,请参阅 规划部署中的 规划 裸机数据平面节点的置备。
- Cluster Baremetal Operator (CBO)被配置为置备。如需更多信息,请参阅 RHOCP API 参考中的 Provisioning [metal3.io/v1alpha1]。
5.4.1. 为未置备的 Networker 节点创建 BareMetalHost CR 复制链接链接已复制到粘贴板!
您必须为每个裸机网络器节点创建一个 BareMetalHost 自定义资源(CR)。您至少需要提供在网络上添加裸机网络节点所需的数据,以便剩余的安装步骤可以访问该节点并执行配置。
如果您使用 ctlplane 接口进行调配,为了避免丢弃流量的内核 rp_filter 逻辑,请将 DHCP 服务配置为使用与 ctlplane 地址范围不同的地址范围。这样可确保返回的流量保留在机器网络接口中。
流程
Bare Metal Operator (BMO)默认管理
openshift-machine-api命名空间中的BareMetalHost自定义资源(CR)。更新ProvisioningCR 以监视所有命名空间:oc patch provisioning provisioning-configuration --type merge -p '{"spec":{"watchAllNamespaces": true }}'$ oc patch provisioning provisioning-configuration --type merge -p '{"spec":{"watchAllNamespaces": true }}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您将虚拟介质引导用于裸机节点,且节点没有连接到 provisioning 网络,您必须更新
ProvisioningCR 以启用virtualMediaViaExternalNetwork,这样可通过外部网络启用裸机连接:oc patch provisioning provisioning-configuration --type merge -p '{"spec":{"virtualMediaViaExternalNetwork": true }}'$ oc patch provisioning provisioning-configuration --type merge -p '{"spec":{"virtualMediaViaExternalNetwork": true }}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在工作站上创建一个文件,用用于访问节点集中每个裸机网络器节点的 Baseboard Management Controller (BMC)凭证定义
SecretCR:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<base64_username> 和 <base64_password> 替换为 base64 编码的字符串。您可以使用以下命令生成 base64 编码的字符串:echo -n <string> | base64
$ echo -n <string> | base64Copy to Clipboard Copied! Toggle word wrap Toggle overflow 提示如果您不想对用户名和密码进行 base64encode,您可以使用
stringData字段而不是data字段来设置用户名和密码。
在工作站上创建一个名为
bmh_networker_nodes.yaml的文件,该文件为每个裸机 Networker 节点定义BareMetalHostCR。以下示例使用 provisioning 方法 Redfish 虚拟介质创建一个BareMetalHostCR:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关如何创建
BareMetalHostCR 的更多信息,请参阅 RHOCP 安装后配置指南 中的 关于 BareMetalHost 资源。创建
BareMetalHost资源:oc create -f bmh_networker_nodes.yaml
$ oc create -f bmh_networker_nodes.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证
BareMetalHost资源是否已创建并处于Available状态:oc get bmh
$ oc get bmh NAME STATE CONSUMER ONLINE ERROR AGE edpm-networker-0 Available openstack-edpm true 2d21h edpm-networker-1 Available openstack-edpm true 2d21h ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
为一组 Networker 节点定义 OpenStackDataPlaneNodeSet 自定义资源(CR)。您可以根据部署需要定义多个节点设置。每个节点只能包含在一个 OpenStackDataPlaneNodeSet CR 中。
您可以使用 nodeTemplate 字段配置通用属性,以应用到 OpenStackDataPlaneNodeSet CR 中的所有节点,以及用于特定于节点属性的 nodeTemplate.nodes 字段。特定于节点的配置覆盖来自 nodeTemplate 的继承值。
有关从未置备的 Networker 节点创建节点设置的 OpenStackDataPlaneNodeSet CR 示例,请参阅 使用 OVS-DPDK 的未置备的 Networker 节点设置 CR 示例。
先决条件
-
为您要包含在每个节点集中的每个未置备节点创建一个
BareMetalHostCR。如需更多信息,请参阅为未置备的节点创建BareMetalHostCR。
流程
在工作站上创建一个名为
openstack_unprovisioned_node_set.yaml的文件,以定义OpenStackDataPlaneNodeSetCR:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将数据平面连接到 control plane 网络:
spec: ... networkAttachments: - ctlplanespec: ... networkAttachments: - ctlplaneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 指定此集合中的节点是未置备的,必须在创建资源时被置备:
preProvisioned: false
preProvisioned: falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 定义
baremetalSetTemplate字段,以描述创建资源时必须置备的裸机节点的配置:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<bmh_namespace> 替换为节点对应的BareMetalHostCR 中定义的命名空间,如openshift-machine-api。 -
将
<ansible_ssh_user> 替换为 Ansible SSH 用户的用户名,如cloud-admin。 -
将
<bmh_label> 替换为节点对应的BareMetalHostCR 中定义的标签,如openstack-networker。元数据标签(如app、workload和nodeName)是键值对,它为标记节点提供不同的粒度级别。将bmhLabelSelector字段设置为根据与对应BareMetalHostCR 中的标签匹配的标签选择 data plane 节点。 -
将
<interface> 替换为节点连接的 control plane 接口,如enp6s0。
-
将
如果创建了自定义
OpenStackProvisionServerCR,请将其添加到baremetalSetTemplate定义中:baremetalSetTemplate: ... provisionServerName: my-os-provision-serverbaremetalSetTemplate: ... provisionServerName: my-os-provision-serverCopy to Clipboard Copied! Toggle word wrap Toggle overflow 添加您创建的 SSH 密钥 secret,以便 Ansible 连接到 data plane 节点:
nodeTemplate: ansibleSSHPrivateKeySecret: <secret-key>nodeTemplate: ansibleSSHPrivateKeySecret: <secret-key>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<secret-key> 替换为您在 <link> 中创建的 SSH 密钥SecretCR 的名称,如dataplane-ansible-ssh-private-key-secret。
-
将
-
在 Red Hat OpenShift Container Platform (RHOCP)集群上的
openstack命名空间中创建持久性卷声明(PVC)以存储日志。将volumeMode设置为Filesystem,将accessModes设置为ReadWriteOnce。不要为使用 NFS 卷插件的 PersistentVolume (PV)的日志请求存储。NFS 与 FIFO 不兼容,ansible-runner创建一个 FIFO 文件来存储日志。有关 PVC 的详情,请参考 RHOCP Storage 指南中的 了解持久性存储 和 规划部署 中的 Red Hat OpenShift Container Platform 集群要求。 为 data plane 节点启用持久性日志记录:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<pvc_name> 替换为 RHOCP 集群中的 PVC 存储名称。
-
将
指定管理网络:
nodeTemplate: ... managementNetwork: ctlplanenodeTemplate: ... managementNetwork: ctlplaneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 指定用于提供用户名和密码的
SecretCR,以注册没有注册到红帽客户门户网站的节点的操作系统,并为节点启用软件仓库。以下示例演示了如何将节点注册到 Red Hat Content Delivery Network (CDN)。有关如何在 Red Hat Satellite 6.13 中注册节点的详情,请参阅管理主机。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 与您在 <link> 中创建的 secret 关联的用户[创建数据平面 secret]。
- 2
- 自定义一组节点的 Ansible 变量。有关可以使用的 Ansible 变量的列表,请参阅 https://openstack-k8s-operators.github.io/edpm-ansible/。
有关红帽客户门户网站注册命令的完整列表,请参阅 https://access.redhat.com/solutions/253273。有关如何登录到
registry.redhat.io的详情,请参考 https://access.redhat.com/RegistryAuthentication#creating-registry-service-accounts-6。添加网络配置模板以应用到您的数据平面节点。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 首次部署设置的节点时,将
edpm_network_config_update变量设置为false。更新或使用节点集时,将edpm_network_config_update变量设置为true,以便在更新时应用网络配置更改。然后,在更新或采用后将变量重置为false。如果没有将更新的网络配置重置为false,则每次创建包含configure-network服务的OpenStackDataPlaneDeploymentCR 时,都会重新应用更新的网络配置。
以下示例使用 DPDK 将 VLAN 网络配置应用到一组 data plane Networker 节点:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下示例将 VLAN 网络配置应用到没有 DPDK 的 data plane Networker 节点:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关 data plane 网络配置的更多信息,请参阅配置 网络服务 中的 自定义 数据平面网络。
-
在
nodeTemplate部分下,添加此组中节点集合的通用配置。此OpenStackDataPlaneNodeSet中的每个节点都会继承此配置。有关可用于配置通用节点属性的属性的信息,请参阅 Deploying Red Hat OpenStack Services on OpenShift 指南中的OpenStackDataPlaneNodeSetCR spec 属性。 在此节点集中定义每个节点:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 节点定义引用,如
edpm-networker-0。节点集中的每个节点都必须有一个节点定义。 - 2
- 定义节点的 IPAM 和 DNS 记录。
- 3
- 为网络指定一个可预测的 IP 地址,该地址必须在
NetConfigCR 中为网络定义的分配范围内。 - 4
- 可选:为 data plane 节点选择
BareMetalHostCR 的BareMetalHostCR 元数据标签。标签可以是BareMetalHostCR 定义的任何标签。该标签与baremetalSetTemplate定义中配置的bmhLabelSelector标签一起使用,以选择节点的BareMetalHost。
注意-
在
nodes部分中定义的节点可以配置nodeTemplate部分中配置的同一 Ansible 变量。其中,为特定节点和nodeTemplate部分配置了 Ansible 变量,则特定于节点的值会覆盖nodeTemplate部分中的值。 -
您不需要为节点复制所有
nodeTemplateAnsible 变量,以覆盖默认值并设置一些特定于节点的值。您只需要配置您要为节点覆盖的 Ansible 变量。 -
许多
ansibleVars在名称中包含edpm,它代表 "External Data Plane Management"。
有关可用于配置通用节点属性的属性的信息,请参阅 Deploying Red Hat OpenStack Services on OpenShift 指南中的
OpenStackDataPlaneNodeSetCR spec 属性。-
保存
openstack_unprovisioned_node_set.yaml定义文件。 创建 data plane 资源:
oc create --save-config -f openstack_unprovisioned_node_set.yaml -n openstack
$ oc create --save-config -f openstack_unprovisioned_node_set.yaml -n openstackCopy to Clipboard Copied! Toggle word wrap Toggle overflow 通过确认状态为
SetupReady来验证 data plane 资源是否已创建:oc wait openstackdataplanenodeset openstack-data-plane --for condition=SetupReady --timeout=10m
$ oc wait openstackdataplanenodeset openstack-data-plane --for condition=SetupReady --timeout=10mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 当状态为
SetupReady时,命令会返回一个condition met信息,否则会返回超时错误。如需有关 data plane 条件和状态的信息,请参阅 在 OpenShift 上部署 Red Hat OpenStack Services 中的 Data plane 条件 和状态。
验证是否为节点集合创建了
Secret资源:oc get secret -n openstack | grep openstack-data-plane
$ oc get secret -n openstack | grep openstack-data-plane dataplanenodeset-openstack-data-plane Opaque 1 3m50sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证节点是否已转换为
置备状态:oc get bmh
$ oc get bmh NAME STATE CONSUMER ONLINE ERROR AGE edpm-networker-0 provisioned openstack-data-plane true 3d21hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证是否已创建服务:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4.3. 使用 OVS-DPDK 的未置备的 Networker 节点设置 CR 示例 复制链接链接已复制到粘贴板!
以下示例 OpenStackDataPlaneNodeSet CR 从带有 OVS-DPDK 和一些节点特定配置的未置备的 Networker 节点创建一个节点集。创建节点集时,会置备未置备的网络节点。将本示例中的 OpenStackDataPlaneNodeSet CR 的名称更新为反映集合中节点的名称。OpenStackDataPlaneNodeSet CR 名称必须是唯一的,仅包含小写字母数字字符和 - (hyphens)或 . (periods),以字母数字字符开头和结尾,且最大长度为 53 个字符。