7.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 备份的更多信息,请参阅附加资源部分。
流程
确保 Bare Metal Operator 可用:
$ oc get clusteroperator baremetal输出示例
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE baremetal 4.14.0 True False False 3d15h删除旧的
BareMetalHost和Machine对象:$ oc delete bmh -n openshift-machine-api <host_name> $ oc delete machine -n openshift-machine-api <machine_name>将
<host_name>替换为主机名,<machine_name>替换为机器的名称。机器名称会出现在CONSUMER字段下。删除
BareMetalHost和Machine对象后,机器控制器会自动删除Node对象。创建新的
BareMetalHost对象和 secret,以存储 BMC 凭证:$ cat <<EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: control-plane-<num>-bmc-secret1 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-secret6 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 协议,如redfish、redfish-virtualmedia、idrac-virtualmedia或其他。将<bmc_ip>替换为裸机节点基板管理控制器的 IP 地址。如需了解更多 BMC 配置选项,请参阅附加资源部分中的 "BMC 寻址"。 - 7
- 将
<NIC1_mac_address>替换为裸机节点第一个 NIC 的 MAC 地址。
检查完成后,
BareMetalHost对象会被创建并可用置备。查看可用的
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 4h53mcontrol plane 节点没有
MachineSet对象,因此您必须创建Machine对象。您可以从另一个 control planeMachine对象复制providerSpec。创建
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要查看
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在 RHCOS 安装后,验证
BareMetalHost是否已添加到集群中:$ oc get nodes输出示例
NAME STATUS ROLES AGE VERSION control-plane-1.example.com available master 4m2s v1.27.6 control-plane-2.example.com available master 141m v1.27.6 control-plane-3.example.com available master 141m v1.27.6 compute-1.example.com available worker 87m v1.27.6 compute-2.example.com available worker 87m v1.27.6注意替换新的 control plane 节点后,在新节点上运行的 etcd pod 处于
crashloopback状态。如需更多信息,请参阅附加资源部分中的 "替换不健康的 etcd 成员"。