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 备份的更多信息,请参阅附加资源部分。
流程
确保 Bare Metal Operator 可用:
$ oc get clusteroperator baremetal
输出示例
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE baremetal 4.13.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-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 协议,如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 4h53m
control 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.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 成员"。
其他资源