6.2. 替换裸机 control plane 节点


使用以下步骤替换安装程序置备的 OpenShift Container Platform control plane 节点。

重要

如果您从现有 control plane 主机重复使用 BareMetalHost 对象定义,请不要将 externallyProvisioned 字段保留为 true

如果 OpenShift Container Platform 安装程序置备,现有 control plane BareMetalHost 对象可能会将 externallyProvisioned 标记设为 true

先决条件

  • 您可以使用具有 cluster-admin 角色的用户访问集群。
  • 已进行 etcd 备份。

    重要

    执行此流程前进行 etcd 备份,以便在遇到任何问题时可以恢复集群。有关获取 etcd 备份的更多信息,请参阅附加资源部分。

流程

  1. 确保 Bare Metal Operator 可用:

    $ oc get clusteroperator baremetal

    输出示例

    NAME        VERSION   AVAILABLE   PROGRESSING   DEGRADED   SINCE   MESSAGE
    baremetal   4.13.0   True        False         False      3d15h

  2. 删除旧的 BareMetalHostMachine 对象:

    $ oc delete bmh -n openshift-machine-api <host_name>
    $ oc delete machine -n openshift-machine-api <machine_name>

    <host_name> 替换为主机名,<machine_name> 替换为机器的名称。机器名称会出现在 CONSUMER 字段下。

    删除 BareMetalHostMachine 对象后,机器控制器会自动删除 Node 对象。

  3. 创建新的 BareMetalHost 对象和 secret,以存储 BMC 凭证:

    $ cat <<EOF | oc apply -f -
    apiVersion: v1
    kind: Secret
    metadata:
      name: control-plane-<num>-bmc-secret 1
      namespace: openshift-machine-api
    data:
      username: <base64_of_uid> 2
      password: <base64_of_pwd> 3
    type: Opaque
    ---
    apiVersion: metal3.io/v1alpha1
    kind: BareMetalHost
    metadata:
      name: control-plane-<num> 4
      namespace: openshift-machine-api
    spec:
      automatedCleaningMode: disabled
      bmc:
        address: <protocol>://<bmc_ip> 5
        credentialsName: control-plane-<num>-bmc-secret 6
      bootMACAddress: <NIC1_mac_address> 7
      bootMode: UEFI
      externallyProvisioned: false
      online: true
    EOF
    1 4 6
    name 字段和 credentialsName 字段中,使用裸机节点的 control plane 数量替换 <num>
    2
    <base64_of_uid> 替换为用户名的 base64 格式的字符串。
    3
    <base64_of_pwd> 替换为密码的 base64 格式的字符串。
    5
    <protocol> 替换为 BMC 协议,如 redfishredfish-virtualmediaidrac-virtualmedia 或其他。将 <bmc_ip> 替换为裸机节点基板管理控制器的 IP 地址。如需了解更多 BMC 配置选项,请参阅附加资源部分中的 "BMC 寻址"。
    7
    <NIC1_mac_address> 替换为裸机节点第一个 NIC 的 MAC 地址。

    检查完成后,BareMetalHost 对象会被创建并可用置备。

  4. 查看可用的 BareMetalHost 对象:

    $ oc get bmh -n openshift-machine-api

    输出示例

    NAME                          STATE                    CONSUMER                   ONLINE   ERROR   AGE
    control-plane-1.example.com   available                control-plane-1            true             1h10m
    control-plane-2.example.com   externally provisioned   control-plane-2            true             4h53m
    control-plane-3.example.com   externally provisioned   control-plane-3            true             4h53m
    compute-1.example.com         provisioned              compute-1-ktmmx            true             4h53m
    compute-1.example.com         provisioned              compute-2-l2zmb            true             4h53m

    control plane 节点没有 MachineSet 对象,因此您必须创建 Machine 对象。您可以从另一个 control plane Machine 对象复制 providerSpec

  5. 创建 Machine 对象:

    $ cat <<EOF | oc apply -f -
    apiVersion: machine.openshift.io/v1beta1
    kind: Machine
    metadata:
      annotations:
        metal3.io/BareMetalHost: openshift-machine-api/control-plane-<num> 1
      labels:
        machine.openshift.io/cluster-api-cluster: control-plane-<num> 2
        machine.openshift.io/cluster-api-machine-role: master
        machine.openshift.io/cluster-api-machine-type: master
      name: control-plane-<num> 3
      namespace: openshift-machine-api
    spec:
      metadata: {}
      providerSpec:
        value:
          apiVersion: baremetal.cluster.k8s.io/v1alpha1
          customDeploy:
            method: install_coreos
          hostSelector: {}
          image:
            checksum: ""
            url: ""
          kind: BareMetalMachineProviderSpec
          metadata:
            creationTimestamp: null
          userData:
            name: master-user-data-managed
    EOF
    1 2 3
    name, labelsannotations 字段中,使用裸机节点的 control plane 数量替换 <num>
  6. 要查看 BareMetalHost 对象,请运行以下命令:

    $ oc get bmh -A

    输出示例

    NAME                          STATE                    CONSUMER                   ONLINE   ERROR   AGE
    control-plane-1.example.com   provisioned              control-plane-1            true             2h53m
    control-plane-2.example.com   externally provisioned   control-plane-2            true             5h53m
    control-plane-3.example.com   externally provisioned   control-plane-3            true             5h53m
    compute-1.example.com         provisioned              compute-1-ktmmx            true             5h53m
    compute-2.example.com         provisioned              compute-2-l2zmb            true             5h53m

  7. 在 RHCOS 安装后,验证 BareMetalHost 是否已添加到集群中:

    $ oc get nodes

    输出示例

    NAME                           STATUS      ROLES     AGE   VERSION
    control-plane-1.example.com    available   master    4m2s  v1.26.9
    control-plane-2.example.com    available   master    141m  v1.26.9
    control-plane-3.example.com    available   master    141m  v1.26.9
    compute-1.example.com          available   worker    87m   v1.26.9
    compute-2.example.com          available   worker    87m   v1.26.9

    注意

    替换新的 control plane 节点后,在新节点上运行的 etcd pod 处于 crashloopback 状态。如需更多信息,请参阅附加资源部分中的 "替换不健康的 etcd 成员"。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.