14.6. 安装程序置备的安装后配置
成功部署安装程序置备的集群后,请考虑以下安装后流程。
14.6.1. 为断开连接的集群配置 NTP
OpenShift Container Platform 在集群节点上安装 chrony
网络时间协议(NTP)服务。使用以下步骤在 control plane 节点上配置 NTP 服务器,并将计算节点配置为成功部署后,将 worker 节点配置为 control plane 节点的 NTP 客户端。
OpenShift Container Platform 节点必须在日期和时间上达成一致才能正确运行。当计算节点从 control plane 节点上的 NTP 服务器检索日期和时间时,它会启用未连接到可路由网络的集群的安装和操作,因此无法访问更高的 stratum NTP 服务器。
流程
使用以下命令在安装主机上安装 Butane:
$ sudo dnf -y install butane
为 control plane 节点创建一个 Butane 配置
99-master-chrony-conf-override.bu
,包括chrony.conf
文件的内容。注意如需有关 Butane 的信息,请参阅"使用 Butane 创建机器配置"。
但ane 配置示例
variant: openshift version: 4.17.0 metadata: name: 99-master-chrony-conf-override labels: machineconfiguration.openshift.io/role: master storage: files: - path: /etc/chrony.conf mode: 0644 overwrite: true contents: inline: | # Use public servers from the pool.ntp.org project. # Please consider joining the pool (https://www.pool.ntp.org/join.html). # The Machine Config Operator manages this file server openshift-master-0.<cluster-name>.<domain> iburst 1 server openshift-master-1.<cluster-name>.<domain> iburst server openshift-master-2.<cluster-name>.<domain> iburst stratumweight 0 driftfile /var/lib/chrony/drift rtcsync makestep 10 3 bindcmdaddress 127.0.0.1 bindcmdaddress ::1 keyfile /etc/chrony.keys commandkey 1 generatecommandkey noclientlog logchange 0.5 logdir /var/log/chrony # Configure the control plane nodes to serve as local NTP servers # for all compute nodes, even if they are not in sync with an # upstream NTP server. # Allow NTP client access from the local network. allow all # Serve time even if not synchronized to a time source. local stratum 3 orphan
- 1
- 您必须将
<cluster-name>
替换为集群名称,并将<domain>
替换为完全限定域名。
使用 Butane 生成
MachineConfig
对象文件99-master-chrony-conf-override.yaml
,其中包含要发送到 control plane 节点的配置:$ butane 99-master-chrony-conf-override.bu -o 99-master-chrony-conf-override.yaml
为引用 control plane 节点上的 NTP 服务器的计算节点创建 Butane 配置
99-worker-chrony-conf-override.bu
,包括chrony.conf
文件的内容。但ane 配置示例
variant: openshift version: 4.17.0 metadata: name: 99-worker-chrony-conf-override labels: machineconfiguration.openshift.io/role: worker storage: files: - path: /etc/chrony.conf mode: 0644 overwrite: true contents: inline: | # The Machine Config Operator manages this file. server openshift-master-0.<cluster-name>.<domain> iburst 1 server openshift-master-1.<cluster-name>.<domain> iburst server openshift-master-2.<cluster-name>.<domain> iburst stratumweight 0 driftfile /var/lib/chrony/drift rtcsync makestep 10 3 bindcmdaddress 127.0.0.1 bindcmdaddress ::1 keyfile /etc/chrony.keys commandkey 1 generatecommandkey noclientlog logchange 0.5 logdir /var/log/chrony
- 1
- 您必须将
<cluster-name>
替换为集群名称,并将<domain>
替换为完全限定域名。
使用 Butane 生成
MachineConfig
对象文件99-worker-chrony-conf-override.yaml
,其中包含要交付至 worker 节点的配置:$ butane 99-worker-chrony-conf-override.bu -o 99-worker-chrony-conf-override.yaml
将
99-master-chrony-conf-override.yaml
策略应用到 control plane 节点。$ oc apply -f 99-master-chrony-conf-override.yaml
输出示例
machineconfig.machineconfiguration.openshift.io/99-master-chrony-conf-override created
将
99-worker-chrony-conf-override.yaml
策略应用到计算节点。$ oc apply -f 99-worker-chrony-conf-override.yaml
输出示例
machineconfig.machineconfiguration.openshift.io/99-worker-chrony-conf-override created
检查应用的 NTP 设置的状态。
$ oc describe machineconfigpool
14.6.2. 安装后启用置备网络
通过为裸机集群提供支持的安装程序和安装程序置备安装,可以在没有 provisioning
网络的情况下部署集群。当每个节点的基板管理控制器可以通过 baremetal 网络
路由时,此功能适用于概念验证集群或仅使用 Redfish 虚拟介质单独部署的情况。
您可在安装后使用 Cluster Baremetal Operator(CBO)启用 置备
网络。
先决条件
- 必须存在专用物理网络,连接到所有 worker 和 control plane 节点。
- 您必须隔离原生、未标记的物理网络。
-
当
provisioningNetwork
配置设置为Managed
时,网络无法有一个 DHCP 服务器。 -
您可以省略 OpenShift Container Platform 4.10 中的
provisioningInterface
设置,以使用bootMACAddress
配置设置。
流程
-
设置
provisioningInterface
设置时,首先确定集群节点的调配接口名称。例如:eth0
oreno1
。 -
在集群节点的
调配
网络接口上启用预引导执行环境(PXE)。 检索
provisioning
网络的当前状态,并将其保存到 provisioning 自定义资源(CR)文件中:$ oc get provisioning -o yaml > enable-provisioning-nw.yaml
修改 provisioning CR 文件:
$ vim ~/enable-provisioning-nw.yaml
向下滚动到
provisioningNetwork
配置设置,并将它从Disabled
改为Managed
。然后,在provisioningNetwork
设置后添加provisioningIP
、provisioningNetworkCIDR
、provisioningDHCPRange
、provisioningInterface
和watchAllNameSpaces
配置设置。为每项设置提供适当的值。apiVersion: v1 items: - apiVersion: metal3.io/v1alpha1 kind: Provisioning metadata: name: provisioning-configuration spec: provisioningNetwork: 1 provisioningIP: 2 provisioningNetworkCIDR: 3 provisioningDHCPRange: 4 provisioningInterface: 5 watchAllNameSpaces: 6
- 1
provisioningNetwork
是Managed
、Unmanaged 或
Disabled
之一。当设置为Managed
时,Metal3 管理调配网络,CBO 使用配置的 DHCP 服务器部署 Metal3 pod。当设置为Unmanaged
时,系统管理员手动配置 DHCP 服务器。- 2
provisioningIP
是 DHCP 服务器和 ironic 用于调配网络的静态 IP 地址。这个静态 IP 地址必须在provisioning
子网内,且不在 DHCP 范围内。如果配置这个设置,它必须具有有效的 IP 地址,即使provisioning
网络是Disabled
。静态 IP 地址绑定到 metal3 pod。如果 metal3 pod 失败并移动到其他服务器,静态 IP 地址也会移到新服务器。- 3
- 无类别域间路由(CIDR)地址。如果配置这个设置,它必须具有有效的 CIDR 地址,即使
provisioning
网络是Disabled
。例如:192.168.0.1/24
。 - 4
- DHCP 范围。此设置仅适用于
受管
置备网络。如果provisioning
网络为Disabled
,则省略此配置设置。例如:192.168.0.64, 192.168.0.253
。 - 5
- 集群节点上
置备
接口的 NIC 名称。provisioningInterface
设置仅适用于受管和非受管
置备
网络。如果provisioning
网络为Disabled
,忽略provisioningInterface
配置设置。省略provisioningInterface
配置设置,以使用bootMACAddress
配置设置。 - 6
- 如果您希望 metal3 监视默认
openshift-machine-api
命名空间以外的命名空间,请将此设置设置为true
。默认值为false
。
- 保存对 provisioning CR 文件的更改。
将 provisioning CR 文件应用到集群:
$ oc apply -f enable-provisioning-nw.yaml
14.6.2.1. 创建包含自定义 br-ex
网桥的清单对象
除了使用 configure-ovs.sh
shell 脚本在裸机平台上设置自定义 br-ex
网桥,一个替代的选择是创建一个包括自定义 br-ex
网桥网络配置的 NodeNetworkConfigurationPolicy
自定义资源(CR)。
创建包含自定义 br-ex
网桥的 NodeNetworkConfigurationPolicy
CR 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
此功能支持以下任务:
- 修改集群的最大传输单元 (MTU)。
- 修改不同绑定接口的属性,如 MIImon (媒体独立接口监控器)、绑定模式或服务质量 (QoS)。
- 更新 DNS 值。
请考虑以下用例:创建包含自定义 br-ex
网桥的清单对象:
-
您需要对网桥进行安装后更改,如更改 Open vSwitch (OVS) 或 OVN-Kubernetes
br-ex
网桥网络。configure-ovs.sh
shell 脚本不支持对网桥进行安装后更改。 - 您希望将网桥部署到与主机或服务器 IP 地址上可用的接口不同的接口上。
-
您希望通过
configure-ovs.sh
shell 脚本对网桥进行高级配置。对这些配置使用脚本可能会导致网桥无法连接多个网络接口,并无法正确处理接口之间的数据转发。
先决条件
-
您可以使用
configure-ovs
的替代方法来设置一个自定义的br-ex
。 - 已安装 Kubernetes NMState Operator。
流程
创建
NodeNetworkConfigurationPolicy
(NNCP) CR,并定义自定义的br-ex
网桥网络配置。根据您的需要,请确保为ipv4.address.ip
、ipv6.address.ip
或这两个参数设置了一个伪装 IP。伪装 IP 地址必须与正在使用的 IP 地址块匹配。设置 IPv6 和 IPv4 伪装 IP 地址的 NNCP CR 示例
apiVersion: nmstate.io/v1 kind: NodeNetworkConfigurationPolicy metadata: name: worker-0-br-ex 1 spec: nodeSelector: kubernetes.io/hostname: worker-0 desiredState: interfaces: - name: enp2s0 2 type: ethernet 3 state: up 4 ipv4: enabled: false 5 ipv6: enabled: false - name: br-ex type: ovs-bridge state: up ipv4: enabled: false dhcp: false ipv6: enabled: false dhcp: false bridge: port: - name: enp2s0 6 - name: br-ex - name: br-ex type: ovs-interface state: up copy-mac-from: enp2s0 ipv4: enabled: true dhcp: true address: - ip: "169.254.169.2" prefix-length: 29 ipv6: enabled: false dhcp: false address: - ip: "fd69::2" prefix-length: 125
14.6.3. 使用 Bare Metal Operator 配置
在裸机主机上部署 OpenShift Container Platform 时,有时在置备前或之后需要更改主机。这包括检查主机的硬件、固件和固件详情。它还可以包含格式化磁盘或更改可修改的固件设置。
您可以使用 Bare Metal Operator (BMO)来置备、管理和检查集群中的裸机主机。BMO 可以完成以下操作:
- 使用特定镜像置备裸机主机到集群。
- 打开或关闭主机。
- 检查主机的硬件详情,并将它们报告到裸机主机。
- 将主机的固件升级或降级到特定版本。
- 检查固件并配置 BIOS 设置。
- 在置备主机之前或之后清理主机的磁盘内容。
BMO 使用以下资源来完成这些任务:
-
BareMetalHost
-
HostFirmwareSettings
-
FirmwareSchema
-
HostFirmwareComponents
BMO 通过将每个裸机主机映射到 BareMetalHost
自定义资源定义的实例来维护集群中的物理主机清单。每个 BareMetalHost
资源都有硬件、软件和固件详情。BMO 持续检查集群中的裸机主机,以确保每个 BareMetalHost
资源准确详细说明相应主机的组件。
BMO 还使用 HostFirmwareSettings
资源、FirmwareSchema
资源和 HostFirmwareComponents
资源来详细说明固件规格,以及为裸机主机升级或降级固件。
使用 Ironic API 服务在集群中的裸机主机的 BMO 接口。Ironic 服务使用主机上的 Baseboard Management Controller (BMC) 来与机器进行接口。
14.6.3.1. 裸机 Operator 架构
Bare Metal Operator (BMO) 使用以下资源来置备、管理和检查集群中的裸机主机。下图演示了这些资源的架构:
BareMetalHost
BareMetalHost
资源定义物理主机及其属性。将裸机主机置备到集群时,您必须为该主机定义 BareMetalHost
资源。对于主机的持续管理,您可以检查 BareMetalHost
中的信息或更新此信息。
BareMetalHost
资源具有置备信息,如下所示:
- 部署规格,如操作系统引导镜像或自定义 RAM 磁盘
- 置备状态
- 基板管理控制器 (BMC) 地址
- 所需的电源状态
BareMetalHost
资源具有硬件信息,如下所示:
- CPU 数量
- NIC 的 MAC 地址
- 主机的存储设备的大小
- 当前电源状态
HostFirmwareSettings
您可以使用 HostFirmwareSettings
资源来检索和管理主机的固件设置。当主机进入 Available
状态时,Ironic 服务读取主机的固件设置并创建 HostFirmwareSettings
资源。BareMetalHost
资源和 HostFirmwareSettings
资源之间存在一对一映射。
您可以使用 HostFirmwareSettings
资源来检查主机的固件规格,或更新主机的固件规格。
在编辑 HostFirmwareSettings
资源的 spec
字段时,您必须遵循特定于供应商固件的 schema。这个模式在只读 FirmwareSchema
资源中定义。
FirmwareSchema
固件设置因硬件供应商和主机模型而异。FirmwareSchema
资源是一个只读资源,其中包含每个主机模型中每个固件设置的类型和限制。数据通过使用 Ironic 服务直接从 BMC 传递。FirmwareSchema
资源允许您识别 HostFirmwareSettings
资源的 spec
字段中可以指定的有效值。
如果 schema 相同,则 FirmwareSchema
资源可应用到许多 BareMetalHost
资源。
HostFirmwareComponents
Metal3 提供了 HostFirmwareComponents
资源,它描述了 BIOS 和基板管理控制器 (BMC) 固件版本。您可以通过编辑 HostFirmwareComponents
资源的 spec
字段,将主机的固件升级到一个特定版本。这在使用针对特定固件版本测试的验证模式部署时很有用。
14.6.3.2. 关于 BareMetalHost 资源
裸机3 引入了 BareMetalHost
资源的概念,它定义了物理主机及其属性。BareMetalHost
资源包含两个部分:
-
BareMetalHost
规格 -
BareMetalHost
状态
14.6.3.2.1. BareMetalHost 规格
BareMetalHost
资源的 spec
部分定义了主机所需状态。
参数 | 描述 |
---|---|
|
在置备和取消置备过程中启用或禁用自动清理的接口。当设置为 |
bmc: address: credentialsName: disableCertificateVerification: |
|
| 用于置备主机的 NIC 的 MAC 地址。 |
|
主机的引导模式。它默认为 |
|
对使用主机的另一个资源的引用。如果另一个资源目前没有使用主机,则它可能为空。例如,当 |
| 提供的字符串,用于帮助识别主机。 |
| 指明主机置备和取消置备是在外部管理的布尔值。当设置时:
|
|
包含有关裸机主机的 BIOS 配置的信息。目前,只有 iRMC、S iDRAC、i iLO4 和 iLO5 BMC 支持
|
image: url: checksum: checksumType: format: |
|
| 对包含网络配置数据及其命名空间的 secret 的引用,以便在主机引导以设置网络前将其附加到主机。 |
|
指示主机是否应开启的布尔值, |
raid: hardwareRAIDVolumes: softwareRAIDVolumes: | (可选)包含有关裸机主机的 RAID 配置的信息。如果没有指定,它会保留当前的配置。 注意 OpenShift Container Platform 4.17 支持 BMC 的硬件 RAID,包括:
OpenShift Container Platform 4.17 不支持软件 RAID。 请参见以下配置设置:
您可以将 spec: raid: hardwareRAIDVolume: []
如果您收到出错信息表示驱动程序不支持 RAID,则将 |
rootDeviceHints: deviceName: hctl: model: vendor: serialNumber: minSizeGigabytes: wwn: wwnWithExtension: wwnVendorExtension: rotational: |
|
14.6.3.2.2. BareMetalHost 状态
BareMetalHost
状态代表主机的当前状态,包括经过测试的凭证、当前的硬件详情和其他信息。
参数 | 描述 |
---|---|
| 对 secret 及其命名空间的引用,其中包含最近一组基板管理控制器(BMC)凭证,以便系统能够验证。 |
| 置备后端的最后一个错误的详情(若有)。 |
| 表示导致主机进入错误状态的问题类别。错误类型包括:
|
hardware: cpu arch: model: clockMegahertz: flags: count: |
系统中的 CPU 的
|
hardware: firmware: | 包含 BIOS 固件信息。例如,硬件供应商和版本。 |
hardware: nics: - ip: name: mac: speedGbps: vlans: vlanId: pxe: |
|
hardware: ramMebibytes: | 主机的内存量(兆字节(MiB))。 |
hardware: storage: - name: rotational: sizeBytes: serialNumber: |
|
hardware: systemVendor: manufacturer: productName: serialNumber: |
包含主机的 |
| 主机状态最后一次更新的时间戳。 |
| 服务器的状态。状态为以下之一:
|
| 指明主机是否开机的布尔值。 |
provisioning: state: id: image: raid: firmware: rootDeviceHints: |
|
| 对 secret 及其命名空间的引用,其中包含发送到置备后端的最后一个 BMC 凭证集合。 |
14.6.3.3. 获取 BareMetalHost 资源
BareMetalHost
资源包含物理主机的属性。您必须获取物理主机的 BareMetalHost
资源才能查看其属性。
流程
获取
BareMetalHost
资源列表:$ oc get bmh -n openshift-machine-api -o yaml
注意您可以使用
baremetalhost
作为oc get
命令的bmh
长形式。获取主机列表:
$ oc get bmh -n openshift-machine-api
获取特定主机的
BareMetalHost
资源:$ oc get bmh <host_name> -n openshift-machine-api -o yaml
其中
<host_name>
是主机的名称。输出示例
apiVersion: metal3.io/v1alpha1 kind: BareMetalHost metadata: creationTimestamp: "2022-06-16T10:48:33Z" finalizers: - baremetalhost.metal3.io generation: 2 name: openshift-worker-0 namespace: openshift-machine-api resourceVersion: "30099" uid: 1513ae9b-e092-409d-be1b-ad08edeb1271 spec: automatedCleaningMode: metadata bmc: address: redfish://10.46.61.19:443/redfish/v1/Systems/1 credentialsName: openshift-worker-0-bmc-secret disableCertificateVerification: true bootMACAddress: 48:df:37:c7:f7:b0 bootMode: UEFI consumerRef: apiVersion: machine.openshift.io/v1beta1 kind: Machine name: ocp-edge-958fk-worker-0-nrfcg namespace: openshift-machine-api customDeploy: method: install_coreos online: true rootDeviceHints: deviceName: /dev/disk/by-id/scsi-<serial_number> userData: name: worker-user-data-managed namespace: openshift-machine-api status: errorCount: 0 errorMessage: "" goodCredentials: credentials: name: openshift-worker-0-bmc-secret namespace: openshift-machine-api credentialsVersion: "16120" hardware: cpu: arch: x86_64 clockMegahertz: 2300 count: 64 flags: - 3dnowprefetch - abm - acpi - adx - aes model: Intel(R) Xeon(R) Gold 5218 CPU @ 2.30GHz firmware: bios: date: 10/26/2020 vendor: HPE version: U30 hostname: openshift-worker-0 nics: - mac: 48:df:37:c7:f7:b3 model: 0x8086 0x1572 name: ens1f3 ramMebibytes: 262144 storage: - hctl: "0:0:0:0" model: VK000960GWTTB name: /dev/disk/by-id/scsi-<serial_number> sizeBytes: 960197124096 type: SSD vendor: ATA systemVendor: manufacturer: HPE productName: ProLiant DL380 Gen10 (868703-B21) serialNumber: CZ200606M3 lastUpdated: "2022-06-16T11:41:42Z" operationalStatus: OK poweredOn: true provisioning: ID: 217baa14-cfcf-4196-b764-744e184a3413 bootMode: UEFI customDeploy: method: install_coreos image: url: "" raid: hardwareRAIDVolumes: null softwareRAIDVolumes: [] rootDeviceHints: deviceName: /dev/disk/by-id/scsi-<serial_number> state: provisioned triedCredentials: credentials: name: openshift-worker-0-bmc-secret namespace: openshift-machine-api credentialsVersion: "16120"
14.6.3.4. 编辑 BareMetalHost 资源
在裸机上部署 OpenShift Container Platform 集群后,您可能需要编辑节点的 BareMetalHost
资源。请考虑以下示例:
- 您可以使用 Assisted Installer 部署集群,并需要添加或编辑基板管理控制器 (BMC) 主机名或 IP 地址。
- 您需要在不取消置备的情况下将节点从一个集群移到另一个集群。
先决条件
-
确保节点处于
Provisioned
,ExternallyProvisioned
, 或Available
状态。
流程
获取节点列表:
$ oc get bmh -n openshift-machine-api
在编辑节点的
BareMetalHost
资源前,运行以下命令从 Ironic 分离节点:$ oc annotate baremetalhost <node_name> -n openshift-machine-api 'baremetalhost.metal3.io/detached=true' 1
- 1
- 将
<node_name>
替换为节点的名称。
运行以下命令来编辑
BareMetalHost
资源:$ oc edit bmh <node_name> -n openshift-machine-api
运行以下命令,将节点重新附加到 Ironic:
$ oc annotate baremetalhost <node_name> -n openshift-machine-api 'baremetalhost.metal3.io/detached'-
14.6.3.5. 删除 BareMetalHost 资源时的延迟故障排除
当 Bare Metal Operator (BMO)删除 BareMetalHost
资源时,Ironic 会使用名为 cleaning 的进程取消置备裸机主机。当清理失败时,Ironic 会重试清理过程三次,这是延迟的来源。清理过程可能无法成功,从而导致裸机主机的置备状态无限期处于 deleting 状态。当发生这种情况时,请使用以下步骤禁用清理过程。
不要从 BareMetalHost
资源中删除终结器。
流程
- 如果清理过程失败并重启,请等待它完成。这大约可能需要 5 分钟。
-
如果置备状态处于 delete 状态,请通过修改
BareMetalHost
资源并将automatedCleaningMode
字段设置为disabled
来禁用清理过程。
如需了解更多详细信息,请参阅"编辑 BareMetalHost 资源"。
14.6.3.6. 将不可启动的 ISO 附加到裸机节点
您可以使用 DataImage
资源将通用、不可启动的 ISO 虚拟介质镜像附加到置备的节点上。在应用了资源后,操作系统引导后,ISO 镜像将可以被操作系统访问。这可用于在置备操作系统后配置节点,并在节点第一次引导前配置节点。
先决条件
- 节点必须使用 Redfish 或从中派生的驱动程序来支持此功能。
-
节点必须处于
Provisioned
或ExternallyProvisioned
状态。 -
名称
必须与其在BareMetalHost
资源中定义的节点名称相同。 -
有 ISO 镜像的有效
url
。
流程
创建一个
DataImage
资源:apiVersion: metal3.io/v1alpha1 kind: DataImage metadata: name: <node_name> 1 spec: url: "http://dataimage.example.com/non-bootable.iso" 2
运行以下命令,将
DataImage
资源保存到文件中:$ vim <node_name>-dataimage.yaml
运行以下命令来应用
DataImage
资源:$ oc apply -f <node_name>-dataimage.yaml -n <node_namespace> 1
- 1
- 替换
<node_namespace>
,以便命名空间与BareMetalHost
资源的命名空间匹配。例如,openshift-machine-api
。
重新引导节点。
注意要重新引导节点,请附加
reboot.metal3.io
注解,或重置BareMetalHost
资源中的online
状态。对裸机节点强制重启会使节点的状态在一段事件内变为NotReady
。例如,5 分钟或更长时间。运行以下命令来查看
DataImage
资源:$ oc get dataimage <node_name> -n openshift-machine-api -o yaml
输出示例
apiVersion: v1 items: - apiVersion: metal3.io/v1alpha1 kind: DataImage metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"metal3.io/v1alpha1","kind":"DataImage","metadata":{"annotations":{},"name":"bmh-node-1","namespace":"openshift-machine-api"},"spec":{"url":"http://dataimage.example.com/non-bootable.iso"}} creationTimestamp: "2024-06-10T12:00:00Z" finalizers: - dataimage.metal3.io generation: 1 name: bmh-node-1 namespace: openshift-machine-api ownerReferences: - apiVersion: metal3.io/v1alpha1 blockOwnerDeletion: true controller: true kind: BareMetalHost name: bmh-node-1 uid: 046cdf8e-0e97-485a-8866-e62d20e0f0b3 resourceVersion: "21695581" uid: c5718f50-44b6-4a22-a6b7-71197e4b7b69 spec: url: http://dataimage.example.com/non-bootable.iso status: attachedImage: url: http://dataimage.example.com/non-bootable.iso error: count: 0 message: "" lastReconciled: "2024-06-10T12:05:00Z"
14.6.3.7. 关于 HostFirmwareSettings 资源
您可以使用 HostFirmwareSettings
资源来检索和管理主机的 BIOS 设置。当主机进入 Available
状态时,Ironic 会读取主机的 BIOS 设置并创建 HostFirmwareSettings
资源。资源包含从基板管理控制器(BMC)返回的完整 BIOS 配置。BareMetalHost
资源中的 firmware
字段会返回三个供应商独立的字段,HostFirmwareSettings
资源通常包含每个主机中特定供应商的字段的许多 BIOS 设置。
HostFirmwareSettings
资源包含两个部分:
-
HostFirmwareSettings
spec。 -
HostFirmwareSettings
状态。
14.6.3.7.1. HostFirmwareSettings
spec
HostFirmwareSettings
资源的 spec
部分定义了主机的 BIOS 所需的状态,默认为空。Ironic 使用 spec.settings
部分中的设置,在主机处于 Preparing
状态时更新基板管理控制器(BMC)。使用 FirmwareSchema
资源,确保不向主机发送无效的名称/值对。如需了解更多详细信息,请参阅 "About the FirmwareSchema resource"。
示例
spec:
settings:
ProcTurboMode: Disabled1
- 1
- 在foregoing示例中,
spec.settings
部分包含一个 name/value 对,它将把ProcTurboMode
BIOS 设置为Disabled
。
status
部分中列出的整数参数显示为字符串。例如,"1"
。当在 spec.settings
部分中设置整数时,这些值应设置为不带引号的整数。例如,1
.
14.6.3.7.2. HostFirmwareSettings
状态
status
代表主机的 BIOS 的当前状态。
参数 | 描述 |
---|---|
status: conditions: - lastTransitionTime: message: observedGeneration: reason: status: type: |
|
status: schema: name: namespace: lastUpdated: |
固件设置的
|
status: settings: |
|
14.6.3.8. 获取 HostFirmwareSettings 资源
HostFirmwareSettings
资源包含物理主机的特定于供应商的 BIOS 属性。您必须获取物理主机的 HostFirmwareSettings
资源才能查看其 BIOS 属性。
流程
获取
HostFirmwareSettings
资源的详细列表:$ oc get hfs -n openshift-machine-api -o yaml
注意您可以使用
hostfirmwaresettings
作为oc get
命令的hfs
长形式。获取
HostFirmwareSettings
资源列表:$ oc get hfs -n openshift-machine-api
获取特定主机的
HostFirmwareSettings
资源$ oc get hfs <host_name> -n openshift-machine-api -o yaml
其中
<host_name>
是主机的名称。
14.6.3.9. 编辑 HostFirmwareSettings 资源
您可以编辑已置备的主机的 HostFirmwareSettings
。
您只能在主机处于 provisioned
状态时编辑主机,不包括只读值。您不能编辑状态为 externally provisioned
的主机。
流程
获取
HostFirmwareSettings
资源列表:$ oc get hfs -n openshift-machine-api
编辑主机的
HostFirmwareSettings
资源:$ oc edit hfs <host_name> -n openshift-machine-api
其中
<host_name>
是置备的主机的名称。HostFirmwareSettings
资源将在终端的默认编辑器中打开。将 name/value 对添加到
spec.settings
部分:示例
spec: settings: name: value 1
- 1
- 使用
FirmwareSchema
资源来识别主机的可用设置。您不能设置只读值。
- 保存更改并退出编辑器。
获取主机的机器名称:
$ oc get bmh <host_name> -n openshift-machine name
其中
<host_name>
是主机的名称。机器名称会出现在CONSUMER
字段下。注解机器将其从 machineset 中删除:
$ oc annotate machine <machine_name> machine.openshift.io/delete-machine=true -n openshift-machine-api
其中
<machine_name>
是要删除的机器的名称。获取节点列表并计算 worker 节点数量:
$ oc get nodes
获取 machineset:
$ oc get machinesets -n openshift-machine-api
缩放 machineset:
$ oc scale machineset <machineset_name> -n openshift-machine-api --replicas=<n-1>
其中
<machineset_name>
是 machineset 的名称,<n-1>
是 worker 节点数量的减少。当主机进入
Available
状态时,扩展 machineset,使HostFirmwareSettings
资源更改生效:$ oc scale machineset <machineset_name> -n openshift-machine-api --replicas=<n>
其中
<machineset_name>
是 machineset 的名称,<n>
是 worker 节点的数量。
14.6.3.10. 验证 HostFirmware Settings 资源是否有效
当用户编辑 spec.settings
部分以更改为 HostFirmwareSetting
(HFS)资源时,BMO 会针对 FimwareSchema
资源验证更改,这是只读资源。如果设置无效,BMO 会将 status.Condition
的 Type
值设置为 False
,并生成事件并将其存储在 HFS 资源中。使用以下步骤验证资源是否有效。
流程
获取
HostFirmwareSetting
资源列表:$ oc get hfs -n openshift-machine-api
验证特定主机的
HostFirmwareSettings
资源是否有效:$ oc describe hfs <host_name> -n openshift-machine-api
其中
<host_name>
是主机的名称。输出示例
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal ValidationFailed 2m49s metal3-hostfirmwaresettings-controller Invalid BIOS setting: Setting ProcTurboMode is invalid, unknown enumeration value - Foo
重要如果响应返回
ValidationFailed
,资源配置中会出现一个错误,您必须更新这些值以符合FirmwareSchema
资源。
14.6.3.11. 关于 FirmwareSchema 资源
BIOS 设置因硬件供应商和主机模型而异。FirmwareSchema
资源是一个只读资源,其中包含每个主机模型中的每个 BIOS 设置的类型和限值。数据直接通过 Ironic 来自 BMC。FirmwareSchema
允许您识别 HostFirmwareSettings
资源的 spec
字段中可以指定的有效值。FirmwareSchema
资源具有从其设置和限值派生的唯一标识符。相同的主机模型使用相同的 FirmwareSchema
标识符。HostFirmwareSettings
的多个实例可能使用相同的 FirmwareSchema
。
参数 | 描述 |
---|---|
<BIOS_setting_name> attribute_type: allowable_values: lower_bound: upper_bound: min_length: max_length: read_only: unique: |
|
14.6.3.12. 获取 FirmwareSchema 资源
每个供应商的每个主机模型都有不同的 BIOS 设置。在编辑 HostFirmwareSettings
资源的 spec
部分时,您设置的名称/值对必须符合该主机的固件模式。要确保设置有效的名称/值对,请获取主机的 FirmwareSchema
并查看它。
流程
要获得
FirmwareSchema
资源实例列表,请执行以下操作:$ oc get firmwareschema -n openshift-machine-api
要获得特定
FirmwareSchema
实例,请执行:$ oc get firmwareschema <instance_name> -n openshift-machine-api -o yaml
其中
<instance_name>
是HostFirmwareSettings
资源中所述的 schema 实例的名称(请参阅表 3)。
14.6.3.13. 关于 HostFirmwareComponents 资源
Metal3 提供了 HostFirmwareComponents
资源,它描述了 BIOS 和基板管理控制器 (BMC) 固件版本。HostFirmwareComponents
资源包含两个部分:
-
HostFirmwareComponents
spec -
HostFirmwareComponents
状态
14.6.3.13.1. HostFirmwareComponents spec
HostFirmwareComponents
资源的 spec
部分定义主机的 BIOS 和 BMC 版本的所需状态。
参数 | 描述 |
---|---|
updates: component: url: |
|
14.6.3.13.2. HostFirmwareComponents 状态
HostFirmwareComponents
资源的 status
部分返回主机的 BIOS 和 BMC 版本的当前状态。
参数 | 描述 |
---|---|
components: component: initialVersion: currentVersion: lastVersionFlashed: updatedAt: |
|
updates: component: url: |
|
14.6.3.14. 获取 HostFirmwareComponents 资源
HostFirmwareComponents
资源包含 BIOS 的特定固件版本,以及物理主机的基板管理控制器 (BMC)。您必须获取物理主机的 HostFirmwareComponents
资源,才能查看固件版本和状态。
流程
获取
HostFirmwareComponents
资源的详细列表:$ oc get hostfirmwarecomponents -n openshift-machine-api -o yaml
获取
HostFirmwareComponents
资源列表:$ oc get hostfirmwarecomponents -n openshift-machine-api
获取特定主机的
HostFirmwareComponents
资源:$ oc get hostfirmwarecomponents <host_name> -n openshift-machine-api -o yaml
其中
<host_name>
是主机的名称。输出示例
--- apiVersion: metal3.io/v1alpha1 kind: HostFirmwareComponents metadata: creationTimestamp: 2024-04-25T20:32:06Z" generation: 1 name: ostest-master-2 namespace: openshift-machine-api ownerReferences: - apiVersion: metal3.io/v1alpha1 blockOwnerDeletion: true controller: true kind: BareMetalHost name: ostest-master-2 uid: 16022566-7850-4dc8-9e7d-f216211d4195 resourceVersion: "2437" uid: 2038d63f-afc0-4413-8ffe-2f8e098d1f6c spec: updates: [] status: components: - component: bios currentVersion: 1.0.0 initialVersion: 1.0.0 - component: bmc currentVersion: "1.00" initialVersion: "1.00" conditions: - lastTransitionTime: "2024-04-25T20:32:06Z" message: "" observedGeneration: 1 reason: OK status: "True" type: Valid - lastTransitionTime: "2024-04-25T20:32:06Z" message: "" observedGeneration: 1 reason: OK status: "False" type: ChangeDetected lastUpdated: "2024-04-25T20:32:06Z" updates: []
14.6.3.15. 编辑 HostFirmwareComponents 资源
您可以编辑节点的 HostFirmwareComponents
资源。
流程
获取
HostFirmwareComponents
资源的详细列表:$ oc get hostfirmwarecomponents -n openshift-machine-api -o yaml
编辑主机的
HostFirmwareComponents
资源:$ oc edit <host_name> hostfirmwarecomponents -n openshift-machine-api 1
- 1
- 其中
<host_name>
是主机的名称。HostFirmwareComponents
资源将在终端的默认编辑器中打开。
输出示例
--- apiVersion: metal3.io/v1alpha1 kind: HostFirmwareComponents metadata: creationTimestamp: 2024-04-25T20:32:06Z" generation: 1 name: ostest-master-2 namespace: openshift-machine-api ownerReferences: - apiVersion: metal3.io/v1alpha1 blockOwnerDeletion: true controller: true kind: BareMetalHost name: ostest-master-2 uid: 16022566-7850-4dc8-9e7d-f216211d4195 resourceVersion: "2437" uid: 2038d63f-afc0-4413-8ffe-2f8e098d1f6c spec: updates: - name: bios 1 url: https://myurl.with.firmware.for.bios 2 - name: bmc 3 url: https://myurl.with.firmware.for.bmc 4 status: components: - component: bios currentVersion: 1.0.0 initialVersion: 1.0.0 - component: bmc currentVersion: "1.00" initialVersion: "1.00" conditions: - lastTransitionTime: "2024-04-25T20:32:06Z" message: "" observedGeneration: 1 reason: OK status: "True" type: Valid - lastTransitionTime: "2024-04-25T20:32:06Z" message: "" observedGeneration: 1 reason: OK status: "False" type: ChangeDetected lastUpdated: "2024-04-25T20:32:06Z"
- 保存更改并退出编辑器。
获取主机的机器名称:
$ oc get bmh <host_name> -n openshift-machine name 1
- 1
- 其中
<host_name>
是主机的名称。机器名称会出现在CONSUMER
字段下。
注解机器将其从机器集中删除:
$ oc annotate machine <machine_name> machine.openshift.io/delete-machine=true -n openshift-machine-api 1
- 1
- 其中
<machine_name>
是要删除的机器的名称。
获取节点列表并计算 worker 节点数量:
$ oc get nodes
获取机器集:
$ oc get machinesets -n openshift-machine-api
扩展机器集:
$ oc scale machineset <machineset_name> -n openshift-machine-api --replicas=<n-1> 1
- 1
- 其中
<machineset_name>
是集群集的名称,<n-1>
是减少的 worker 节点数量。
当主机进入
Available
状态时,扩展 machineset,使HostFirmwareComponents
资源更改生效:$ oc scale machineset <machineset_name> -n openshift-machine-api --replicas=<n> 1
- 1
- 其中
<machineset_name>
是机器集的名称,<n>
是 worker 节点的数量。