5.3. 使用 BMO 在用户置备的集群中置备新主机
您可以通过创建一个 BareMetalHost 自定义资源 (CR),使用 Bare Metal Operator (BMO) 在用户置备的集群中置备裸机主机。
注意
要使用 BMO 为集群置备裸机主机,您必须将 BareMetalHost 自定义资源中的 spec.externallyProvisioned 规格设置为 false。
先决条件
- 您创建了用户置备的裸机集群。
- 您有到主机的基板管理控制器 (BMC) 访问权限。
-
通过创建一个
ProvisioningCR,在集群中部署了置备服务。
流程
创建
SecretCR 和BareMetalHostCR。将以下 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: false2 customDeploy: method: install_coreos online: true userData: name: worker-user-data-managed namespace: openshift-machine-api
运行以下命令来创建裸机主机对象:
$ oc create -f bmh.yaml输出示例
secret/worker1-bmc created baremetalhost.metal3.io/worker1 created批准所有证书签名请求 (CSR)。
运行以下命令验证主机的置备状态是否为
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运行以下命令,获取待处理的 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运行以下命令来批准 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