5.3. 使用 BMO 在用户置备的集群中置备新主机
您可以通过创建一个 BareMetalHost
自定义资源 (CR),使用 Bare Metal Operator (BMO) 在用户置备的集群中置备裸机主机。
使用 BMO 在集群中置备裸机主机将 BareMetalHost
自定义资源中的 spec.externallyProvisioned
规格默认设置为 false
。不要将 spec.externallyProvisioned
规格设置为 true
,因为此设置会导致意外行为。
先决条件
- 您创建了用户置备的裸机集群。
- 您有到主机的基板管理控制器 (BMC) 访问权限。
-
通过创建一个
Provisioning
CR,在集群中部署了置备服务。
流程
为裸机节点创建配置文件。根据您使用静态配置或 DHCP 服务器,请选择以下示例
bmh.yaml
文件之一,并通过替换 YAML 中的值来根据您的需要进行配置:要使用静态配置进行部署,请创建以下
bmh.yaml
文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要使用 DHCP 配置进行部署,请创建以下
bmh.yaml
文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 在
name
和credentialsName
字段中,将<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 地址"。
运行以下命令来创建裸机节点:
oc create -f bmh.yaml
$ oc create -f bmh.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
secret/openshift-worker-<num>-network-config-secret created secret/openshift-worker-<num>-bmc-secret created baremetalhost.metal3.io/openshift-worker-<num> created
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 Copied! Toggle word wrap Toggle overflow 运行以下命令检查裸机节点:
oc -n openshift-machine-api get bmh openshift-worker-<num>
$ oc -n openshift-machine-api get bmh openshift-worker-<num>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
- <num>
指定计算节点数量。
输出示例
NAME STATE CONSUMER ONLINE ERROR openshift-worker-<num> provisioned true
NAME STATE CONSUMER ONLINE ERROR openshift-worker-<num> provisioned true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
批准所有证书签名请求 (CSR)。
运行以下命令,获取待处理的 CSR 列表:
oc get csr
$ oc get csr
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
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
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 Copied! Toggle word wrap Toggle overflow 运行以下命令来批准 CSR:
oc adm certificate approve <csr_name>
$ oc adm certificate approve <csr_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
certificatesigningrequest.certificates.k8s.io/<csr_name> approved
certificatesigningrequest.certificates.k8s.io/<csr_name> approved
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令验证节点是否已就绪:
oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME STATUS ROLES AGE VERSION app1 Ready worker 47s v1.24.0+dc5a2fd controller1 Ready master,worker 2d22h v1.24.0+dc5a2fd
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 Copied! Toggle word wrap Toggle overflow