4.6. Bare Metal Operator を使用した設定
ベアメタルホストに OpenShift Container Platform をデプロイする場合、プロビジョニングの前後にホストに変更を加える必要がある場合があります。これには、ホストのハードウェア、ファームウェア、ファームウェアの詳細の検証が含まれます。また、ディスクのフォーマットや、変更可能なファームウェア設定の変更も含まれます。
Bare Metal Operator (BMO) を使用して、クラスター内のベアメタルホストをプロビジョニング、管理、検査できます。BMO は次の操作を完了できます。
- 特定のイメージを使用したクラスターへのベアメタルホストのプロビジョニング
- ホストをオンまたはオフにします。
- ホストのハードウェアの詳細を検査し、ベアメタルホストへ報告する
- ホストのファームウェアを特定のバージョンにアップグレードまたはダウングレードする
- ファームウェアを検査し、BIOS を設定します。
- ホストをプロビジョニングする前または後に、ホストのディスクの内容をクリーンアップします。
BMO はこれらのタスクを完了するために次のリソースを使用します。
-
BareMetalHost -
HostFirmwareSettings -
FirmwareSchema -
HostFirmwareComponents -
HostUpdatePolicy
BMO は、各ベアメタルホストを BareMetalHost カスタムリソース定義のインスタンスにマッピングすることにより、クラスター内の物理ホストのインベントリーを維持します。各 BareMetalHost リソースには、ハードウェア、ソフトウェア、およびファームウェアの詳細が含まれています。BMO は、クラスター内のベアメタルホストを継続的に検査して、各 BareMetalHost リソースが対応するホストのコンポーネントを正確に詳述していることを確認します。
BMO は、HostFirmwareSettings リソース、FirmwareSchema リソース、および HostFirmwareComponents リソースを使用して、ファームウェア仕様の詳細を指定し、ベアメタルホストのファームウェアをアップグレードまたはダウングレードします。
BMO は、Ironic API サービスを使用してクラスター内のベアメタルホストと接続します。Ironic サービスは、ホスト上のベースボード管理コントローラー (BMC) を使用して、マシンと接続します。
BMO の HostUpdatePolicy を使用すると、ホストのプロビジョニング後に、ベアメタルホストのファームウェア設定、BMC 設定、または BIOS 設定へのライブ更新を有効または無効にできます。デフォルトでは、BMO はライブ更新を無効にします。
4.6.1. Bare Metal Operator のアーキテクチャー リンクのコピーリンクがクリップボードにコピーされました!
Bare Metal Operator (BMO) は、次のリソースを使用して、クラスター内のベアメタルホストをプロビジョニング、管理、検査します。次の図は、これらのリソースのアーキテクチャーを示しています。
BareMetalHost
BareMetalHost リソースは、物理ホストとそのプロパティーを定義します。ベアメタルホストをクラスターにプロビジョニングするときは、そのホストの BareMetalHost リソースを定義する必要があります。ホストの継続的な管理のために、BareMetalHost リソースの情報を確認したり、この情報を更新したりできます。
BareMetalHost リソースには、次のようなプロビジョニング情報が含まれます。
- オペレーティングシステムのブートイメージやカスタム RAM ディスクなどのデプロイメント仕様
- プロビジョニング状態
- ベースボード管理コントローラー (BMC) アドレス
- 目的の電源状態
BareMetalHost リソースには、次のようなハードウェア情報が含まれます。
- CPU 数
- NIC の MAC アドレス
- ホストのストレージデバイスのサイズ
- 現在の電源状態
HostFirmwareSettings
HostFirmwareSettings リソースを使用して、ホストのファームウェア設定を取得および管理できます。ホストが Available 状態に移行すると、Ironic サービスはホストのファームウェア設定を読み取り、HostFirmwareSettings リソースを作成します。BareMetalHost リソースと HostFirmwareSettings リソースの間には 1 対 1 のマッピングがあります。
HostFirmwareSettings リソースを使用して、ホストのファームウェア仕様を調べたり、ホストのファームウェア仕様を更新したりできます。
HostFirmwareSettings リソースの spec フィールドを編集するときは、ベンダーファームウェアに固有のスキーマに従う必要があります。このスキーマは、読み取り専用の FirmwareSchema リソースで定義されます。
FirmwareSchema
ファームウェア設定は、ハードウェアベンダーやホストモデルによって異なります。FirmwareSchema リソースは、各ホストモデル上の各ファームウェア設定のタイプおよび制限が含まれる読み取り専用リソースです。データは、Ironic サービスを使用して BMC から直接取得されます。FirmwareSchema リソースを使用すると、HostFirmwareSettings リソースの spec フィールドに指定できる有効な値を特定できます。
スキーマが同じであれば、FirmwareSchema リソースは多くの BareMetalHost リソースに適用できます。
HostFirmwareComponents
Metal3 は、BIOS およびベースボード管理コントローラー (BMC) ファームウェアのバージョンを記述する HostFirmwareComponents リソースを提供します。HostFirmwareComponents リソースの spec フィールドを編集することで、ホストのファームウェアを特定のバージョンにアップグレードまたはダウングレードできます。これは、特定のファームウェアバージョンに対してテストされた検証済みパターンを使用してデプロイする場合に便利です。
HostUpdatePolicy
HostUpdatePolicy リソースを使用すると、ベアメタルホストのファームウェア設定、BMC 設定、または BIOS 設定のライブ更新を有効または無効にできます。デフォルトでは、各ベアメタルホストの HostUpdatePolicy リソースにより、ホストへの更新がプロビジョニング中だけに制限されます。ホストをプロビジョニングした後、ファームウェア設定、BMC 設定、または BIOS 設定を更新する場合は、ホストの HostUpdatePolicy リソースを変更する必要があります。
4.6.2. BareMetalHost リソースについて リンクのコピーリンクがクリップボードにコピーされました!
Metal3 で、物理ホストとそのプロパティーを定義する BareMetalHost リソースの概念が導入されました。BareMetalHost リソースには、2 つのセクションが含まれます。
-
BareMetalHostspec -
BareMetalHoststatus
4.6.2.1. BareMetalHost spec リンクのコピーリンクがクリップボードにコピーされました!
BareMetalHost リソースの spec セクションは、ホストの必要な状態を定義します。
| パラメーター | 説明 |
|---|---|
|
|
プロビジョニングおよびプロビジョニング解除時の自動クリーニングを有効または無効にするインターフェイス。 |
|
|
|
| ホストのプロビジョニングに使用する NIC の MAC アドレス。 |
|
|
ホストのブートモード。デフォルトは |
|
|
ホストを使用している別のリソースへの参照。別のリソースが現在ホストを使用していない場合は、空になることがあります。たとえば、 |
|
| ホストの特定に役立つ、人間が提供した文字列。 |
|
| ホストのプロビジョニングとプロビジョニング解除が外部で管理されるかどうかを示すブール値。設定される場合:
|
|
|
ベアメタルホストの BIOS 設定に関する情報が含まれます。現在、
|
|
|
|
| ネットワーク設定データおよびその namespace が含まれるシークレットへの参照。したがって、ホストが起動してネットワークをセットアップする前にホストに接続することができます。 |
|
|
ホストの電源を入れる ( |
| (オプション) ベアメタルホストの RAID 設定に関する情報が含まれます。指定しない場合は、現在の設定を保持します。 注記 OpenShift Container Platform 4.19 は、BMC のインストールドライブ上で以下のハードウェア RAID をサポートします。
OpenShift Container Platform 4.19 は、インストールドライブ上のソフトウェア RAID をサポートしていません。 次の構成設定を参照してください。
ドライバーが RAID に対応していないことを示すエラーメッセージが表示された場合は、 |
|
|
4.6.2.2. BareMetalHost status リンクのコピーリンクがクリップボードにコピーされました!
BareMetalHost status は、ホストの現在の状態を表し、テスト済みの認証情報、現在のハードウェアの詳細などの情報が含まれます。
| パラメーター | 説明 |
|---|---|
|
| シークレットおよびその namespace の参照で、システムが動作中と検証できるベースボード管理コントローラー (BMC) 認証情報のセットが保持されています。 |
|
| プロビジョニングバックエンドが報告する最後のエラーの詳細 (ある場合)。 |
|
| ホストがエラー状態になった原因となった問題のクラスを示します。エラータイプは以下のとおりです。
|
|
|
| BIOS ファームウェア情報が含まれます。たとえば、ハードウェアベンダーおよびバージョンなどです。 |
|
|
| ホストのメモリー容量 (MiB 単位)。 |
|
|
|
ホストの |
|
| ホストのステータスの最終更新時のタイムスタンプ。 |
|
| サーバーのステータス。ステータスは以下のいずれかになります。
|
|
| ホストの電源が入っているかどうかを示すブール値。 |
|
|
|
| プロビジョニングバックエンドに送信された BMC 認証情報の最後のセットを保持するシークレットおよびその namespace への参照。 |
4.6.3. BareMetalHost リソースの取得 リンクのコピーリンクがクリップボードにコピーされました!
BareMetalHost リソースには、物理ホストのプロパティーが含まれます。物理ホストのプロパティーをチェックするには、その BareMetalHost リソースを取得する必要があります。
手順
BareMetalHostリソースの一覧を取得します。$ oc get bmh -n openshift-machine-api -o yaml注記oc getコマンドで、bmhの長い形式として、baremetalhostを使用できます。ホストのリストを取得します。
$ 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"
4.6.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'-
4.6.5. BareMetalHost リソースを削除する際の遅延のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
Bare Metal Operator (BMO) が BareMetalHost リソースを削除すると、Ironic はクリーニングと呼ばれるプロセスでベアメタルホストのプロビジョニングを解除します。クリーニングが失敗すると、Ironic はクリーニングプロセスを 3 回再試行します。これが遅延の原因となります。クリーニングプロセスが成功せず、ベアメタルホストのプロビジョニングステータスが deleting 状態のまま無期限に残る原因となります。このような場合は、次の手順に従ってクリーニングプロセスを無効にしてください。
BareMetalHost リソースからファイナライザーを削除しないでください。
手順
- クリーニングプロセスが失敗して再開された場合は、完了するまで待機します。これには約 5 分かかる場合があります。
-
プロビジョニングステータスが deleting 状態のままの場合は、
BareMetalHostリソースを変更し、automatedCleaningModeフィールドをdisabledに設定して、クリーニングプロセスを無効にします。
詳細は、「BareMetalHost リソースの編集」を参照してください。
4.6.6. ブータブルでない ISO をベアメタルノードにアタッチする リンクのコピーリンクがクリップボードにコピーされました!
DataImage リソースを使用すると、ブータブルでない汎用の ISO 仮想メディアイメージを、プロビジョニングされたノードにアタッチできます。リソースを適用すると、起動後にオペレーティングシステムから ISO イメージにアクセスできるようになります。これは、オペレーティングシステムをプロビジョニングした後、ノードが初めて起動する前にノードを設定する場合に便利です。
前提条件
- この機能をサポートするために、ノードが Redfish またはそれから派生したドライバーを使用している。
-
ノードが
ProvisionedまたはExternallyProvisioned状態である。 -
nameが、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
- namespace が
BareMetalHostリソースの namespace と一致するように<node_namespace>を置き換えます。たとえば、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"
4.6.7. 共有 NIC の NC-SI と DisablePowerOff の設定 リンクのコピーリンクがクリップボードにコピーされました!
Network Controller Sideband Interface (NC-SI) により、ベースボード管理コントローラー (BMC) は、Redfish、IPMI、ベンダー固有のインターフェイスなどのプロトコルを使用して、管理トラフィック用のシステムネットワークインターフェイスカード (NIC) をホストと共有できるようになります。DisablePowerOff 機能は、ハードな電源オフを防ぎ、ソフトリブートを行うことで BMC との接続を維持します。
前提条件
- NC-SI 対応のハードウェアと NIC。
- IP アドレスとネットワーク接続が設定された BMC。
- BMC への管理アクセス。
-
cluster-admin特権で OpenShift クラスターにアクセスする。
手順
- 共有 NIC に対して NC-SI を有効にするように BMC を設定します。
次のいずれかのコマンドを実行し、Redfish または IPMI を使用して BMC の接続を確認します。
$ curl -k https://<bmc_ip>/redfish/v1/Systems/1$ ipmitool -I lanplus -H <bmc_ip> -U <user> -P <pass> power statusopenshift-machine-apinamespace のBareMetalHostリソースを編集して、DisablePowerOff機能を有効にします。apiVersion: metal3.io/v1alpha1 kind: BareMetalHost metadata: name: example-host namespace: openshift-machine-api spec: online: true bmc: address: <protocol>://<bmc_ip>/<bmc_address_format> credentialsName: bmc-secret disablePowerOff: trueサポートされているプロトコルと BMC アドレス形式の詳細は、「BMC アドレス指定」セクションを参照してください。
次のコマンドを実行して変更を適用します。
$ oc apply -f <filename>.yaml
検証
次のコマンドを実行して、
BareMetalHostのステータスを確認します。$ oc get baremetalhost example-host -n openshift-machine-api -o yamlspecセクションにdisablePowerOff: trueがあることを確認します。- ノード Pod を再起動してリブートをテストし、BMC 接続がアクティブなままであることを確認します。
-
BareMetalHost.spec.online=falseの設定を試みます。電源オフが無効であることを示すエラーが表示されて失敗するはずです。
4.6.8. HostFirmwareSettings リソースについて リンクのコピーリンクがクリップボードにコピーされました!
HostFirmwareSettings リソースを使用して、ホストの BIOS 設定を取得および管理できます。ホストが Available 状態に移行すると、Ironic はホストの BIOS 設定を読み取り、HostFirmwareSettings リソースを作成します。リソースには、ベースボード管理コントローラー (BMC) から返される完全な BIOS 設定が含まれます。BareMetalHost リソースの firmware フィールドは、ベンダーに依存しない 3 つのフィールドを返しますが、HostFirmwareSettings リソースは、通常ホストごとにベンダー固有のフィールドの多数の BIOS 設定で構成されます。
HostFirmwareSettings リソースには、以下の 2 つのセクションが含まれます。
-
HostFirmwareSettingsspec -
HostFirmwareSettingsstatus
ファームウェア設定の読み取りと変更は、ベンダーに依存しない Redfish プロトコル、Fujitsu iRMC、または HP iLO ベースのドライバーでのみサポートされます。
4.6.8.1. HostFirmwareSettings spec リンクのコピーリンクがクリップボードにコピーされました!
HostFirmwareSettings リソースの spec セクションは、ホストの BIOS の必要な状態を定義し、デフォルトでは空です。Ironic は spec.settings セクションの設定を使用して、ホストが Preparing 状態の場合、ベースボード管理コントローラー (BMC) を更新します。FirmwareSchema リソースを使用して、無効な名前と値のペアをホストに送信しないようにします。詳細は、「FirmwareSchema リソースについて」を参照してください。
例
spec:
settings:
ProcTurboMode: Disabled
- 1
- 前述の例では、
spec.settingsセクションには、ProcTurboModeBIOS 設定をDisabledに設定する名前/値のペアが含まれます。
status セクションに一覧表示される整数パラメーターは文字列として表示されます。たとえば、"1" と表示されます。spec.settings セクションで整数を設定する場合、値は引用符なしの整数として設定する必要があります。たとえば、1 と設定します。
4.6.8.2. HostFirmwareSettings status リンクのコピーリンクがクリップボードにコピーされました!
status は、ホストの BIOS の現在の状態を表します。
| パラメーター | 説明 |
|---|---|
|
|
|
ファームウェア設定の
|
|
|
4.6.9. HostFirmwareSettings リソースの取得 リンクのコピーリンクがクリップボードにコピーされました!
HostFirmwareSettings リソースには、物理ホストのベンダー固有の BIOS プロパティーが含まれます。物理ホストの BIOS プロパティーをチェックするには、その HostFirmwareSettings リソースを取得する必要があります。
手順
次のコマンドを実行して、
HostFirmwareSettingsリソースの詳細なリストを取得します。$ oc get hfs -n openshift-machine-api -o yaml注記oc getコマンドで、hfsの長い形式としてhostfirmwaresettingsを使用できます。次のコマンドを実行して、
HostFirmwareSettingsリソースのリストを取得します。$ oc get hfs -n openshift-machine-api次のコマンドを実行して、特定のホストの
HostFirmwareSettingsリソースを取得します。$ oc get hfs <host_name> -n openshift-machine-api -o yamlここで、
<host_name>はホストの名前です。
4.6.10. プロビジョニング済みホストの HostFirmwareSettings リソースの編集 リンクのコピーリンクがクリップボードにコピーされました!
プロビジョニング済みホストの HostFirmwareSettings 仕様を変更するには、次の操作を実行します。
-
ホストの
HostFirmwareSettingsリソースを編集します。 - マシンセットからホストを削除します。
- マシンセットをスケールダウンします。
- マシンセットをスケールアップして変更を反映させます。
ホストが provisioned 状態にある場合にのみ、ホストを編集できます (読み取り専用の値を除く)。externally provisioned 状態のホストは編集できません。
手順
次のコマンドを実行して、
HostFirmwareSettingsリソースのリストを取得します。$ oc get hfs -n openshift-machine-api次のコマンドを実行して、ホストの
HostFirmwareSettingsリソースを編集します。$ oc edit hfs <hostname> -n openshift-machine-api<hostname>はプロビジョニングされたホストの名前です。HostFirmwareSettingsリソースは、ターミナルのデフォルトエディターで開きます。次のコマンドを実行して、
spec.settingsセクションに名前と値のペアを追加します。例
spec: settings: name: value1 - 1
FirmwareSchemaリソースを使用して、ホストで利用可能な設定を特定します。読み取り専用の値は設定できません。
- 変更を保存し、エディターを終了します。
次のコマンドを実行して、ホストのマシン名を取得します。
$ oc get bmh <hostname> -n openshift-machine name<hostname>はホストの名前です。ターミナルのCONSUMERフィールドの下にマシン名が表示されます。次のコマンドを実行して、マシンにアノテーションを付けてマシンセットから削除します。
$ oc annotate machine <machine_name> machine.openshift.io/delete-machine=true -n openshift-machine-apiここで、
<machine_name>は削除するマシンの名前です。次のコマンドを実行して、ノードのリストを取得し、ワーカーノードの数をカウントします。
$ oc get nodes次のコマンドを実行してマシンセットを取得します。
$ oc get machinesets -n openshift-machine-api次のコマンドを実行して、マシンセットをスケールします。
$ oc scale machineset <machineset_name> -n openshift-machine-api --replicas=<n-1><machineset_name>はマシンセットの名前です。<n-1>は減少させたワーカーノードの数です。ホストが
Available状態になったら、次のコマンドを実行してマシンセットをスケールアップし、HostFirmwareSettingsリソースの変更を反映します。$ oc scale machineset <machineset_name> -n openshift-machine-api --replicas=<n><machineset_name>はマシンセットの名前です。<n>はワーカーノードの数です。
4.6.11. HostFirmwareSettings リソースへのライブ更新の実行 リンクのコピーリンクがクリップボードにコピーされました!
ワークロードの実行を開始した後、HostFirmareSettings リソースに対してライブ更新を実行できます。ライブ更新では、ホストのプロビジョニング解除と再プロビジョニングはトリガーされません。
ホストのライブ更新はテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、以下のリンクを参照してください。
前提条件
-
HostUpdatePolicyリソースのfirmwareSettingsパラメーターがonRebootに設定されている。
手順
次のコマンドを実行して、
HostFirmwareSettingsリソースを更新します。$ oc patch hostfirmwaresettings <hostname> --type merge -p \1 '{"spec": {"settings": {"<name>": "<value>"}}}'2 注記ハードウェアがサポートする設定と、更新できる設定および値を確認するには、
FirmwareSchemaリソースを取得します。読み取り専用の値を更新することはできません。また、FirmwareSchemaリソースを更新することもできません。oc edit <hostname> hostfirmwaresettings -n openshift-machine-apiコマンドを使用してHostFirmwareSettingsリソースを更新することもできます。次のコマンドを実行して、ノードをスケジューリング対象から外してドレインします。
$ oc drain <node_name> --force1 - 1
<node_name>はノード名に置き換えてください。
次のコマンドを実行して、ホストの電源を 5 分間オフにします。
$ oc patch bmh <hostname> --type merge -p '{"spec": {"online": false}}'このステップにより、デーモンセットまたはコントローラーが、ホスト上で実行されている可能性のあるインフラストラクチャー Pod をオフラインとしてマークし、残りのホストが受信リクエストを処理するようになります。
5 分後、次のコマンドを実行してホストの電源をオンにします。
$ oc patch bmh <hostname> --type merge -p '{"spec": {"online": true}}'サービス操作が開始し、Bare Metal Operator (BMO) が
BareMetalHostのoperationalStatusパラメーターをservicingに設定します。BMO は、リソースを更新した後、operationalStatusパラメーターをOKに更新します。エラーが発生した場合、BMO はoperationalStatusパラメーターをerrorに更新し、操作を再試行します。Ironic が更新を完了し、ホストが起動したら、次のコマンドを実行してノードをスケジューリング対象に戻します。
$ oc uncordon <node_name>
4.6.12. HostFirmware Settings リソースが有効であることの確認 リンクのコピーリンクがクリップボードにコピーされました!
ユーザーが spec.settings セクションを編集して HostFirmwareSetting (HFS) リソースに変更を加えると、Bare Metal Operator (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リソースに準拠するよう値を更新する必要があります。
4.6.13. FirmwareSchema リソースについて リンクのコピーリンクがクリップボードにコピーされました!
BIOS 設定は、ハードウェアベンダーやホストモデルによって異なります。FirmwareSchema リソースは、各ホストモデル上の各 BIOS 設定のタイプおよび制限が含まれる読み取り専用リソースです。データは BMC から Ironic に直接取得されます。FirmwareSchema を使用すると、HostFirmwareSettings リソースの spec フィールドに指定できる有効な値を特定できます。FirmwareSchema リソースには、その設定および制限から派生する一意の識別子があります。同じホストモデルは同じ FirmwareSchema 識別子を使用します。HostFirmwareSettings の複数のインスタンスが同じ FirmwareSchema を使用する可能性が高いです。
| パラメーター | 説明 |
|---|---|
|
|
4.6.14. 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リソース (表 3 を参照) に記載されているスキーマインスタンスの名前です。
4.6.15. HostFirmwareComponents リソースについて リンクのコピーリンクがクリップボードにコピーされました!
Metal3 は、BIOS およびベースボード管理コントローラー (BMC) ファームウェアのバージョンを記述する HostFirmwareComponents リソースを提供します。HostFirmwareComponents リソースには 2 つのセクションが含まれています。
-
HostFirmwareComponentsspec -
HostFirmwareComponentsstatus
4.6.15.1. HostFirmwareComponents spec リンクのコピーリンクがクリップボードにコピーされました!
HostFirmwareComponents リソースの spec セクションでは、ホストの BIOS および BMC バージョンの目的の状態を定義します。
| パラメーター | 説明 |
|---|---|
|
|
4.6.15.2. HostFirmwareComponents status リンクのコピーリンクがクリップボードにコピーされました!
HostFirmwareComponents リソースの status セクションは、ホストの BIOS および BMC バージョンの現在のステータスを返します。
| パラメーター | 説明 |
|---|---|
|
|
|
|
4.6.16. 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: []
4.6.17. プロビジョニング済みホストの HostFirmwareComponents リソースの編集 リンクのコピーリンクがクリップボードにコピーされました!
プロビジョニング済みホストの HostFirmwareComponents リソースを編集できます。
手順
次のコマンドを実行して、
HostFirmwareComponentsリソースの詳細なリストを取得します。$ oc get hostfirmwarecomponents -n openshift-machine-api -o yaml次のコマンドを実行して、
HostFirmwareComponentsリソースを編集します。$ oc edit <hostname> hostfirmwarecomponents -n openshift-machine-api1 - 1
<hostname>はホストの名前です。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: bios1 url: https://myurl.with.firmware.for.bios2 - name: bmc3 url: https://myurl.with.firmware.for.bmc4 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 name1 - 1
- ここで、
<host_name>はホストの名前です。ターミナルのCONSUMERフィールドの下にマシン名が表示されます。
次のコマンドを実行して、マシンにアノテーションを付けてマシンセットから削除します。
$ oc annotate machine <machine_name> machine.openshift.io/delete-machine=true -n openshift-machine-api1 - 1
- ここで、
<machine_name>は削除するマシンの名前です。
次のコマンドを実行して、ノードのリストを取得し、ワーカーノードの数をカウントします。
$ 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>は減少させたワーカーノードの数です。
ホストが
Available状態になったら、次のコマンドを実行してマシンセットをスケールアップし、HostFirmwareComponentsリソースの変更を反映します。$ oc scale machineset <machineset_name> -n openshift-machine-api --replicas=<n>1 - 1
<machineset_name>はマシンセットの名前です。<n>はワーカーノードの数です。
4.6.18. HostFirmwareComponents リソースへのライブ更新の実行 リンクのコピーリンクがクリップボードにコピーされました!
すでにプロビジョニングされているホスト上の HostFirmwareComponents リソースに対してライブ更新を実行できます。ライブ更新では、ホストのプロビジョニング解除と再プロビジョニングはトリガーされません。
ホストのライブ更新はテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、以下のリンクを参照してください。
実稼働ホストではライブ更新を実行しないでください。BIOS のライブ更新はテスト目的で実行できます。特に以前の世代のハードウェアでは、テスト目的で OpenShift Container Platform 4.19 上の BMC にライブ更新を実行することは推奨しません。
前提条件
-
HostUpdatePolicyリソースのfirmwareUpdatesパラメーターがonRebootに設定されている。
手順
次のコマンドを実行して、
HostFirmwareComponentsリソースを更新します。$ oc patch hostfirmwarecomponents <hostname> --type merge -p \1 '{"spec": {"updates": [{"component": "<type>", \2 "url": "<url>"}]}}'3 注記oc edit <hostname> hostfirmwarecomponents -n openshift-machine-apiコマンドを使用してリソースを更新することもできます。次のコマンドを実行して、ノードをスケジューリング対象から外してドレインします。
$ oc drain <node_name> --force1 - 1
<node_name>はノード名に置き換えてください。
次のコマンドを実行して、ホストの電源を 5 分間オフにします。
$ oc patch bmh <hostname> --type merge -p '{"spec": {"online": false}}'このステップにより、デーモンセットまたはコントローラーが、ノード上で実行されている可能性のあるインフラストラクチャー Pod をオフラインとしてマークし、残りのノードが受信リクエストを処理するようになります。
5 分後、次のコマンドを実行してホストの電源をオンにします。
$ oc patch bmh <hostname> --type merge -p '{"spec": {"online": true}}'サービス操作が開始し、Bare Metal Operator (BMO) が
BareMetalHostのoperationalStatusパラメーターをservicingに設定します。BMO は、リソースを更新した後、operationalStatusパラメーターをOKに更新します。エラーが発生した場合、BMO はoperationalStatusパラメーターをerrorに更新し、操作を再試行します。次のコマンドを実行してノードをスケジューリング対象に戻します。
$ oc uncordon <node_name>
4.6.19. HostUpdatePolicy リソースについて リンクのコピーリンクがクリップボードにコピーされました!
HostUpdatePolicy リソースを使用すると、各ベアメタルホストのファームウェア設定、BMC 設定、またはファームウェア設定へのライブ更新の適用を有効または無効にできます。デフォルトでは、すでにプロビジョニングされたベアメタルホストへのライブ更新は、Operator によって無効にされます。
HostUpdatePolicy 仕様
HostUpdatePolicy リソースの spec セクションには、次の 2 つの設定があります。
firmwareSettings-
この設定は、
HostFirmwareSettingsリソースに対応するものです。 firmwareUpdates-
この設定は、
HostFirmwareComponentsリソースに対応するものです。
値を onPreparing に設定すると、ホストを更新できるのがプロビジョニング中だけになります。これがデフォルト設定です。値を onReboot に設定すると、リソースを適用してベアメタルホストを再起動することで、プロビジョニング済みホストを更新できます。その後、HostFirmwareSettings または HostFirmwareComponents リソースを編集する手順に従います。
HostUpdatePolicy リソースの例
apiVersion: metal3.io/v1alpha1
kind: HostUpdatePolicy
metadata:
name: <hostname>
namespace: openshift-machine-api
spec:
firmwareSettings: <setting>
firmwareUpdates: <setting>
4.6.20. HostUpdatePolicy リソースの設定 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、HostUpdatePolicy はライブ更新を無効にします。ライブ更新を有効にするには、次の手順に従います。
HostUpdatePolicy リソースの設定はテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、以下のリンクを参照してください。
手順
次のコマンドを実行して、
HostUpdatePolicyリソースを作成します。$ vim hup.yaml任意のテキストエディターを使用できます。
HostUpdatePolicy リソースの例
apiVersion: metal3.io/v1alpha1 kind: HostUpdatePolicy metadata: name: <hostname>1 namespace: openshift-machine-api spec: firmwareSettings: onReboot firmwareUpdates: onReboot- 1
<hostname>はホスト名に置き換えます。
-
hup.yamlファイルへの変更を保存します。 以下のコマンドを実行してポリシーを適用します。
$ oc apply -f hup.yaml