2.4. 使用 Bare Metal Operator 扩展用户置备的集群
部署用户置备的基础架构集群后,您可以使用 Bare Metal Operator (BMO)和其他裸机3 组件来扩展集群中的裸机主机。这种方法可帮助您以更自动化的方式扩展用户置备的集群。
2.4.1. 关于使用 Bare Metal Operator 扩展用户置备的集群 复制链接链接已复制到粘贴板!
您可以使用 Bare Metal Operator (BMO)和其他裸机3 组件扩展用户置备的基础架构集群。用户置备的基础架构安装不支持 Machine API Operator。Machine API Operator 通常管理集群中裸机节点的生命周期。但是,可以使用 BMO 和其他裸机3 组件在用户置备的集群中扩展节点,而无需 Machine API Operator。
2.4.1.1. 扩展用户置备的集群的先决条件 复制链接链接已复制到粘贴板!
- 您在裸机上安装了用户置备的基础架构集群。
- 您有到主机的基板管理控制器 (BMC) 访问权限。
2.4.1.2. 扩展用户置备的集群的限制 复制链接链接已复制到粘贴板!
您不能使用 provisioning 网络来扩展用户置备的基础架构集群,使用 Bare Metal Operator (BMO)。
-
因此,您只能使用支持虚拟介质网络的裸机主机驱动程序,如
redfish-virtualmedia
和idrac-virtualmedia
。
-
因此,您只能使用支持虚拟介质网络的裸机主机驱动程序,如
-
您不能使用 BMO 在用户置备的基础架构集群中扩展
MachineSet
对象。
2.4.2. 配置置备资源以扩展用户置备的集群 复制链接链接已复制到粘贴板!
创建 Provisioning
自定义资源 (CR),以便在用户置备的基础架构集群中启用裸机平台组件。
先决条件
- 您在裸机上安装了用户置备的基础架构集群。
流程
创建
Provisioning
CR。将以下 YAML 保存到
provisioning.yaml
文件中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在使用 Bare Metal Operator 扩展用户置备的集群时,OpenShift Container Platform 4.19 不支持启用 provisioning 网络。
运行以下命令来创建
Provisioning
CR:oc create -f provisioning.yaml
$ oc create -f provisioning.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
provisioning.metal3.io/provisioning-configuration created
provisioning.metal3.io/provisioning-configuration created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令验证置备服务是否正在运行:
oc get pods -n openshift-machine-api
$ oc get pods -n openshift-machine-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4.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
2.4.4. 可选:使用 BMO 管理用户置备的集群中的现有主机 复制链接链接已复制到粘贴板!
另外,您可以通过为现有主机创建一个 BareMetalHost
对象来管理用户置备的集群中的现有裸机控制器主机,来使用 Bare Metal Operator (BMO) 来管理用户置备集群中的现有裸机控制器主机。它不是必须的来管理现有用户置备的主机;但是,您可以将它们注册为外部置备主机,以实现清单目的。
要使用 BMO 管理现有主机,您必须将 BareMetalHost
自定义资源中的 spec.externallyProvisioned
规格设置为 true
,以防止 BMO 重新置备主机。
先决条件
- 您创建了用户置备的裸机集群。
- 您有到主机的基板管理控制器 (BMC) 访问权限。
-
通过创建一个
Provisioning
CR,在集群中部署了置备服务。
流程
创建
Secret
CR 和BareMetalHost
CR。运行以下命令来创建裸机主机对象:
oc create -f controller.yaml
$ oc create -f controller.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
secret/controller1-bmc created baremetalhost.metal3.io/controller1 created
secret/controller1-bmc created baremetalhost.metal3.io/controller1 created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,验证 BMO 创建了裸机主机对象:
oc get bmh -A
$ oc get bmh -A
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAMESPACE NAME STATE CONSUMER ONLINE ERROR AGE openshift-machine-api controller1 externally provisioned true 13s
NAMESPACE NAME STATE CONSUMER ONLINE ERROR AGE openshift-machine-api controller1 externally provisioned true 13s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4.5. 使用 BMO 从用户置备的集群中删除主机 复制链接链接已复制到粘贴板!
您可以使用 Bare Metal Operator (BMO)从用户置备的集群中删除裸机主机。
先决条件
- 您创建了用户置备的裸机集群。
- 您有到主机的基板管理控制器 (BMC) 访问权限。
-
通过创建一个
Provisioning
CR,在集群中部署了置备服务。
流程
运行以下命令 cordon 和 drain 节点:
oc adm drain app1 --force --ignore-daemonsets=true
$ oc adm drain app1 --force --ignore-daemonsets=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从
BareMetalHost
CR 中删除customDeploy
规格。运行以下命令,为主机编辑
BareMetalHost
CR:oc edit bmh -n openshift-machine-api <host_name>
$ oc edit bmh -n openshift-machine-api <host_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除
spec.customDeploy
和spec.customDeploy.method
行:... customDeploy: method: install_coreos
... customDeploy: method: install_coreos
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证主机的置备状态是否更改为
deprovisioning
:oc get bmh -A
$ oc get bmh -A
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAMESPACE NAME STATE CONSUMER ONLINE ERROR AGE openshift-machine-api controller1 externally provisioned true 58m openshift-machine-api worker1 deprovisioning true 57m
NAMESPACE NAME STATE CONSUMER ONLINE ERROR AGE openshift-machine-api controller1 externally provisioned true 58m openshift-machine-api worker1 deprovisioning true 57m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
当
BareMetalHost
状态更改为available
时,运行以下命令来删除主机:oc delete bmh -n openshift-machine-api <bmh_name>
$ oc delete bmh -n openshift-machine-api <bmh_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您可以运行这个步骤,而无需编辑
BareMetalHost
CR。可能需要过些时间,BareMetalHost
状态才会从deprovisioning
变为available
。运行以下命令来删除节点:
oc delete node <node_name>
$ oc delete node <node_name>
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 controller1 Ready master,worker 2d23h v1.24.0+dc5a2fd
NAME STATUS ROLES AGE VERSION controller1 Ready master,worker 2d23h v1.24.0+dc5a2fd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow