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


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

13.5.1. 关于使用 Bare Metal Operator 扩展用户置备的集群

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

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

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

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

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

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

13.5.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
      注意

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

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

    $ oc create -f provisioning.yaml

    输出示例

    provisioning.metal3.io/provisioning-configuration created

验证

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

    $ oc get pods -n openshift-machine-api

    输出示例

    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

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

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

注意

要使用 BMO 为集群置备裸机主机,您必须将 BareMetalHost 自定义资源中的 spec.externallyProvisioned 规格设置为 false

先决条件

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

流程

  1. 创建 Secret CR 和 BareMetalHost CR。

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

      ---
      apiVersion: v1
      kind: Secret
      metadata:
        name: worker1-bmc
        namespace: openshift-machine-api
      type: Opaque
      data:
        username: <base64_of_uid>
        password: <base64_of_pwd>
      ---
      apiVersion: metal3.io/v1alpha1
      kind: BareMetalHost
      metadata:
        name: worker1
        namespace: openshift-machine-api
      spec:
        bmc:
          address: <protocol>://<bmc_url> 1
          credentialsName: "worker1-bmc"
        bootMACAddress: <nic1_mac_address>
        externallyProvisioned: false 2
        customDeploy:
          method: install_coreos
        online: true
        userData:
          name: worker-user-data-managed
          namespace: openshift-machine-api
      1
      您只能使用支持虚拟介质网络引导的裸机主机驱动程序,如 redfish-virtualmediaidrac-virtualmedia
      2
      您必须将 BareMetalHost 自定义资源中的 spec.externallyProvisioned 规格设置为 false。默认值为 false
  2. 运行以下命令来创建裸机主机对象:

    $ oc create -f bmh.yaml

    输出示例

    secret/worker1-bmc created
    baremetalhost.metal3.io/worker1 created

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

    1. 运行以下命令验证主机的置备状态是否为 provisioned

      $ oc get bmh -A

      输出示例

      NAMESPACE               NAME          STATE                    CONSUMER   ONLINE   ERROR   AGE
      openshift-machine-api   controller1   externally provisioned              true             5m25s
      openshift-machine-api   worker1       provisioned                         true             4m45s

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

      $ oc get csr

      输出示例

      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

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

      $ oc adm certificate approve <csr_name>

      输出示例

      certificatesigningrequest.certificates.k8s.io/<csr_name> approved

验证

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

    $ oc get nodes

    输出示例

    NAME        STATUS   ROLES           AGE     VERSION
    app1        Ready    worker          47s     v1.24.0+dc5a2fd
    controller1 Ready    master,worker   2d22h   v1.24.0+dc5a2fd

13.5.4. 可选:使用 BMO 管理用户置备的集群中的现有主机

另外,您可以通过为现有主机创建一个 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
      1
      您只能使用支持虚拟介质网络引导的裸机主机驱动程序,如 redfish-virtualmediaidrac-virtualmedia
      2
      您必须将值设为 true,以防止 BMO 重新置备裸机控制器主机。
  2. 运行以下命令来创建裸机主机对象:

    $ oc create -f controller.yaml

    输出示例

    secret/controller1-bmc created
    baremetalhost.metal3.io/controller1 created

验证

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

    $ oc get bmh -A

    输出示例

    NAMESPACE               NAME          STATE                    CONSUMER   ONLINE   ERROR   AGE
    openshift-machine-api   controller1   externally provisioned              true             13s

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

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

先决条件

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

流程

  1. 运行以下命令进行 cordon 和 drain 主机:

    $ oc adm drain app1 --force --ignore-daemonsets=true

    输出示例

    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

  2. BareMetalHost CR 中删除 customDeploy 规格。

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

      $ oc edit bmh -n openshift-machine-api <host_name>
    2. 删除 spec.customDeployspec.customDeploy.method 行:

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

      $ oc get bmh -A

      输出示例

      NAMESPACE               NAME          STATE                    CONSUMER   ONLINE   ERROR   AGE
      openshift-machine-api   controller1   externally provisioned              true             58m
      openshift-machine-api   worker1       deprovisioning                      true             57m

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

    $ oc delete node <node_name>

验证

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

    $ oc get nodes

    输出示例

    NAME          STATUS   ROLES           AGE     VERSION
    controller1   Ready    master,worker   2d23h   v1.24.0+dc5a2fd

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.