2.4. 使用 Bare Metal Operator 扩展用户置备的集群


部署用户置备的基础架构集群后,您可以使用 Bare Metal Operator (BMO)和其他裸机3 组件来扩展集群中的裸机主机。这种方法可帮助您以更自动化的方式扩展用户置备的集群。

您可以使用 Bare Metal Operator (BMO)和其他裸机3 组件扩展用户置备的基础架构集群。用户置备的基础架构安装不支持 Machine API Operator。Machine API Operator 通常管理集群中裸机节点的生命周期。但是,可以使用 BMO 和其他裸机3 组件在用户置备的集群中扩展节点,而无需 Machine API Operator。

2.4.1.1. 扩展用户置备的集群的先决条件

  • 您在裸机上安装了用户置备的基础架构集群。
  • 您有到主机的基板管理控制器 (BMC) 访问权限。

2.4.1.2. 扩展用户置备的集群的限制

  • 您不能使用 provisioning 网络来扩展用户置备的基础架构集群,使用 Bare Metal Operator (BMO)。

    • 因此,您只能使用支持虚拟介质网络的裸机主机驱动程序,如 redfish-virtualmediaidrac-virtualmedia
  • 您不能使用 BMO 在用户置备的基础架构集群中扩展 MachineSet 对象。

2.4.2. 配置置备资源以扩展用户置备的集群

创建 Provisioning 自定义资源 (CR),以便在用户置备的基础架构集群中启用裸机平台组件。

先决条件

  • 您在裸机上安装了用户置备的基础架构集群。

流程

  1. 创建 Provisioning CR。

    1. 将以下 YAML 保存到 provisioning.yaml 文件中:

      apiVersion: metal3.io/v1alpha1
      kind: Provisioning
      metadata:
        name: provisioning-configuration
      spec:
        provisioningNetwork: "Disabled"
        watchAllNamespaces: false
      Copy to Clipboard Toggle word wrap
      注意

      在使用 Bare Metal Operator 扩展用户置备的集群时,OpenShift Container Platform 4.19 不支持启用 provisioning 网络。

  2. 运行以下命令来创建 Provisioning CR:

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

    输出示例

    provisioning.metal3.io/provisioning-configuration created
    Copy to Clipboard Toggle word wrap

验证

  • 运行以下命令验证置备服务是否正在运行:

    $ oc get pods -n openshift-machine-api
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME                                                  READY   STATUS    RESTARTS        AGE
    cluster-autoscaler-operator-678c476f4c-jjdn5          2/2     Running   0               5d21h
    cluster-baremetal-operator-6866f7b976-gmvgh           2/2     Running   0               5d21h
    control-plane-machine-set-operator-7d8566696c-bh4jz   1/1     Running   0               5d21h
    ironic-proxy-64bdw                                    1/1     Running   0               5d21h
    ironic-proxy-rbggf                                    1/1     Running   0               5d21h
    ironic-proxy-vj54c                                    1/1     Running   0               5d21h
    machine-api-controllers-544d6849d5-tgj9l              7/7     Running   1 (5d21h ago)   5d21h
    machine-api-operator-5c4ff4b86d-6fjmq                 2/2     Running   0               5d21h
    metal3-6d98f84cc8-zn2mx                               5/5     Running   0               5d21h
    metal3-image-customization-59d745768d-bhrp7           1/1     Running   0               5d21h
    Copy to Clipboard Toggle word wrap

您可以通过创建一个 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

另外,您可以通过为现有主机创建一个 BareMetalHost 对象来管理用户置备的集群中的现有裸机控制器主机,来使用 Bare Metal Operator (BMO) 来管理用户置备集群中的现有裸机控制器主机。它不是必须的来管理现有用户置备的主机;但是,您可以将它们注册为外部置备主机,以实现清单目的。

重要

要使用 BMO 管理现有主机,您必须将 BareMetalHost 自定义资源中的 spec.externallyProvisioned 规格设置为 true,以防止 BMO 重新置备主机。

先决条件

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

流程

  1. 创建 Secret CR 和 BareMetalHost CR。

    1. 将以下 YAML 保存到 controller.yaml 文件中:

      ---
      apiVersion: v1
      kind: Secret
      metadata:
        name: controller1-bmc
        namespace: openshift-machine-api
      type: Opaque
      data:
        username: <base64_of_uid>
        password: <base64_of_pwd>
      ---
      apiVersion: metal3.io/v1alpha1
      kind: BareMetalHost
      metadata:
        name: controller1
        namespace: openshift-machine-api
      spec:
        bmc:
          address: <protocol>://<bmc_url> 
      1
      
          credentialsName: "controller1-bmc"
        bootMACAddress: <nic1_mac_address>
        customDeploy:
          method: install_coreos
        externallyProvisioned: true 
      2
      
        online: true
        userData:
          name: controller-user-data-managed
          namespace: openshift-machine-api
      Copy to Clipboard Toggle word wrap
      1
      您只能使用支持虚拟介质网络引导的裸机主机驱动程序,如 redfish-virtualmediaidrac-virtualmedia
      2
      您必须将值设为 true,以防止 BMO 重新置备裸机控制器主机。
  2. 运行以下命令来创建裸机主机对象:

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

    输出示例

    secret/controller1-bmc created
    baremetalhost.metal3.io/controller1 created
    Copy to Clipboard Toggle word wrap

验证

  • 运行以下命令,验证 BMO 创建了裸机主机对象:

    $ oc get bmh -A
    Copy to Clipboard Toggle word wrap

    输出示例

    NAMESPACE               NAME          STATE                    CONSUMER   ONLINE   ERROR   AGE
    openshift-machine-api   controller1   externally provisioned              true             13s
    Copy to Clipboard Toggle word wrap

2.4.5. 使用 BMO 从用户置备的集群中删除主机

您可以使用 Bare Metal Operator (BMO)从用户置备的集群中删除裸机主机。

先决条件

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

流程

  1. 运行以下命令 cordon 和 drain 节点:

    $ oc adm drain app1 --force --ignore-daemonsets=true
    Copy to Clipboard Toggle word wrap

    输出示例

    node/app1 cordoned
    WARNING: ignoring DaemonSet-managed Pods: openshift-cluster-node-tuning-operator/tuned-tvthg, openshift-dns/dns-
    default-9q6rz, openshift-dns/node-resolver-zvt42, openshift-image-registry/node-ca-mzxth, openshift-ingress-cana
    ry/ingress-canary-qq5lf, openshift-machine-config-operator/machine-config-daemon-v79dm, openshift-monitoring/nod
    e-exporter-2vn59, openshift-multus/multus-additional-cni-plugins-wssvj, openshift-multus/multus-fn8tg, openshift
    -multus/network-metrics-daemon-5qv55, openshift-network-diagnostics/network-check-target-jqxn2, openshift-ovn-ku
    bernetes/ovnkube-node-rsvqg
    evicting pod openshift-operator-lifecycle-manager/collect-profiles-27766965-258vp
    evicting pod openshift-operator-lifecycle-manager/collect-profiles-27766950-kg5mk
    evicting pod openshift-operator-lifecycle-manager/collect-profiles-27766935-stf4s
    pod/collect-profiles-27766965-258vp evicted
    pod/collect-profiles-27766950-kg5mk evicted
    pod/collect-profiles-27766935-stf4s evicted
    node/app1 drained
    Copy to Clipboard Toggle word wrap

  2. BareMetalHost CR 中删除 customDeploy 规格。

    1. 运行以下命令,为主机编辑 BareMetalHost CR:

      $ oc edit bmh -n openshift-machine-api <host_name>
      Copy to Clipboard Toggle word wrap
    2. 删除 spec.customDeployspec.customDeploy.method 行:

      ...
        customDeploy:
          method: install_coreos
      Copy to Clipboard Toggle word wrap
    3. 运行以下命令,验证主机的置备状态是否更改为 deprovisioning

      $ oc get bmh -A
      Copy to Clipboard Toggle word wrap

      输出示例

      NAMESPACE               NAME          STATE                    CONSUMER   ONLINE   ERROR   AGE
      openshift-machine-api   controller1   externally provisioned              true             58m
      openshift-machine-api   worker1       deprovisioning                      true             57m
      Copy to Clipboard Toggle word wrap

  3. BareMetalHost 状态更改为 available 时,运行以下命令来删除主机:

    $ oc delete bmh -n openshift-machine-api <bmh_name>
    Copy to Clipboard Toggle word wrap
    注意

    您可以运行这个步骤,而无需编辑 BareMetalHost CR。可能需要过些时间,BareMetalHost 状态才会从 deprovisioning 变为 available

  4. 运行以下命令来删除节点:

    $ oc delete node <node_name>
    Copy to Clipboard Toggle word wrap

验证

  • 运行以下命令验证您是否删除了节点:

    $ oc get nodes
    Copy to Clipboard Toggle word wrap

    输出示例

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

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat