5.3. 使用 BMO 在用户置备的集群中置备新主机


您可以通过创建一个 BareMetalHost 自定义资源 (CR),使用 Bare Metal Operator (BMO) 在用户置备的集群中置备裸机主机。

注意

使用 BMO 在集群中置备裸机主机将 BareMetalHost 自定义资源中的 spec.externallyProvisioned 规格默认设置为 false。不要将 spec.externallyProvisioned 规格设置为 true,因为此设置会导致意外行为。

先决条件

  • 您创建了用户置备的裸机集群。
  • 您有到主机的基板管理控制器 (BMC) 访问权限。
  • 通过创建一个 Provisioning CR,在集群中部署了置备服务。

流程

  1. 为裸机节点创建配置文件。根据您使用静态配置或 DHCP 服务器,请选择以下示例 bmh.yaml 文件之一,并通过替换 YAML 中的值来根据您的需要进行配置:

    • 要使用静态配置进行部署,请创建以下 bmh.yaml 文件:

      ---
      apiVersion: v1
      kind: Secret
      metadata:
        name: openshift-worker-<num>-network-config-secret 
      1
      
        namespace: openshift-machine-api
      type: Opaque
      stringData:
        nmstate: | 
      2
      
          interfaces: 
      3
      
          - name: <nic1_name> 
      4
      
            type: ethernet
            state: up
            ipv4:
              address:
              - ip: <ip_address> 
      5
      
                prefix-length: 24
              enabled: true
          dns-resolver:
            config:
              server:
              - <dns_ip_address> 
      6
      
          routes:
            config:
            - destination: 0.0.0.0/0
              next-hop-address: <next_hop_ip_address> 
      7
      
              next-hop-interface: <next_hop_nic1_name> 
      8
      
      ---
      apiVersion: v1
      kind: Secret
      metadata:
        name: openshift-worker-<num>-bmc-secret
        namespace: openshift-machine-api
      type: Opaque
      data:
        username: <base64_of_uid> 
      9
      
        password: <base64_of_pwd>
      ---
      apiVersion: metal3.io/v1alpha1
      kind: BareMetalHost
      metadata:
        name: openshift-worker-<num>
        namespace: openshift-machine-api
      spec:
        online: true
        bootMACAddress: <nic1_mac_address> 
      10
      
        bmc:
          address: <protocol>://<bmc_url> 
      11
      
          credentialsName: openshift-worker-<num>-bmc-secret
          disableCertificateVerification: false
        customDeploy:
          method: install_coreos
        userData:
          name: worker-user-data-managed
          namespace: openshift-machine-api
        rootDeviceHints:
          deviceName: <root_device_hint> 
      12
      
        preprovisioningNetworkDataName: openshift-worker-<num>-network-config-secret
      Copy to Clipboard Toggle word wrap
      1
      <num> 的所有实例替换为用于裸机节点的唯一的计算节点名称(在 name, credentialsName, 和 preprovisioningNetworkDataName 字段中)。
      2
      添加 NMState YAML 语法来配置主机接口。要为新创建的节点配置网络接口,请指定具有网络配置的 secret 名称。按照 nmstate 语法为节点定义网络配置。有关配置 NMState 语法的详情,请参阅"准备裸机节点"。
      3
      可选:如果您使用 nmstate 配置网络接口,并且您要禁用接口,请将 state: 设置为 enabled: false
      4
      <nic1_name> 替换为裸机节点的第一个网络接口控制器(NIC)的名称。
      5
      <ip_address> 替换为裸机节点 NIC 的 IP 地址。
      6
      <dns_ip_address> 替换为裸机节点 DNS 解析器的 IP 地址。
      7
      <next_hop_ip_address> 替换为裸机节点外部网关的 IP 地址。
      8
      <next_hop_nic1_name> 替换为裸机节点的外部网关的名称。
      9
      <base64_of_uid><base64_of_pwd> 替换为用户名和密码的 base64 字符串。
      10
      <nic1_mac_address> 替换为裸机节点第一个 NIC 的 MAC 地址。如需了解更多 BMC 配置选项,请参阅"BMC 寻址"部分。
      11
      <protocol> 替换为 BMC 协议,如 IPMI、Redfish 或其他。将 <bmc_url> 替换为裸机节点基板管理控制器的 URL。
      12
      可选:如果您指定了 root 设备提示,将 <root_device_hint> 替换为设备路径。详情请查看"Root 设备提示"。
    • 当使用 nmstate 配置带有静态配置的网络接口时,将 state: 设置为 enabled: false

      ---
      apiVersion: v1
      kind: Secret
      metadata:
        name: openshift-worker-<num>-network-config-secret
        namespace: openshift-machine-api
       # ...
      interfaces:
        - name: <nic_name>
          type: ethernet
          state: up
          ipv4:
            enabled: false
          ipv6:
            enabled: false
      # ...
      Copy to Clipboard Toggle word wrap
    • 要使用 DHCP 配置进行部署,请创建以下 bmh.yaml 文件:

      ---
      apiVersion: v1
      kind: Secret
      metadata:
        name: openshift-worker-<num>-bmc-secret 
      1
      
        namespace: openshift-machine-api
      type: Opaque
      data:
        username: <base64_of_uid> 
      2
      
        password: <base64_of_pwd>
      ---
      apiVersion: metal3.io/v1alpha1
      kind: BareMetalHost
      metadata:
        name: openshift-worker-<num>
        namespace: openshift-machine-api
      spec:
        online: true
        bootMACAddress: <nic1_mac_address> 
      3
      
        bmc:
          address: <protocol>://<bmc_url> 
      4
      
          credentialsName: openshift-worker-<num>-bmc
          disableCertificateVerification: false
        customDeploy:
          method: install_coreos
        userData:
          name: worker-user-data-managed
          namespace: openshift-machine-api
        rootDeviceHints:
          deviceName: <root_device_hint> 
      5
      Copy to Clipboard Toggle word wrap
      1
      namecredentialsName 字段中,将 <num> 替换为裸机节点的唯一计算节点号。
      2
      <base64_of_uid><base64_of_pwd> 替换为用户名和密码的 base64 字符串。
      3
      <nic1_mac_address> 替换为裸机节点第一个 NIC 的 MAC 地址。如需了解更多 BMC 配置选项,请参阅"BMC 寻址"部分。
      4
      <protocol> 替换为 BMC 协议,如 IPMI、Redfish 或其他。将 <bmc_url> 替换为裸机节点基板管理控制器的 URL。
      5
      可选:如果您指定了 root 设备提示,将 <root_device_hint> 替换为设备路径。详情请查看"Root 设备提示"。
      重要

      如果现有裸机节点的 MAC 地址与您试图置备的裸机主机的 MAC 地址匹配,则安装将失败。如果主机注册、检查、清理或其他步骤失败,Bare Metal Operator 会持续重试安装。如需了解更多详细信息,请参阅"在集群中置备新主机时诊断重复的 MAC 地址"。

  2. 运行以下命令来创建裸机节点:

    $ oc create -f bmh.yaml
    Copy to Clipboard Toggle word wrap

    输出示例

    secret/openshift-worker-<num>-network-config-secret created
    secret/openshift-worker-<num>-bmc-secret created
    baremetalhost.metal3.io/openshift-worker-<num> created
    Copy to Clipboard Toggle word wrap

  3. 运行以下命令检查裸机节点:

    $ oc -n openshift-machine-api get bmh openshift-worker-<num>
    Copy to Clipboard Toggle word wrap

    其中:

    <num>

    指定计算节点数量。

    输出示例

    NAME                    STATE       CONSUMER   ONLINE   ERROR
    openshift-worker-<num>  provisioned true
    Copy to Clipboard Toggle word wrap

  4. 批准所有证书签名请求 (CSR)。

    1. 运行以下命令,获取待处理的 CSR 列表:

      $ oc get csr
      Copy to Clipboard Toggle word wrap

      输出示例

      NAME        AGE   SIGNERNAME                                    REQUESTOR                                         REQUESTEDDURATION CONDITION
      csr-gfm9f   33s   kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-o
      perator:node-bootstrapper   <none>              Pending
      Copy to Clipboard Toggle word wrap

    2. 运行以下命令来批准 CSR:

      $ oc adm certificate approve <csr_name>
      Copy to Clipboard Toggle word wrap

      输出示例

      certificatesigningrequest.certificates.k8s.io/<csr_name> approved
      Copy to Clipboard Toggle word wrap

验证

  • 运行以下命令验证节点是否已就绪:

    $ oc get nodes
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME        STATUS   ROLES           AGE     VERSION
    app1        Ready    worker          47s     v1.24.0+dc5a2fd
    controller1 Ready    master,worker   2d22h   v1.24.0+dc5a2fd
    Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat