6.10. ブートイメージ管理
Google Cloud および Amazon Web Services (AWS) クラスターの場合、デフォルトでは、Machine Config Operator (MCO) がノードのスケールアップに使用されるブートイメージを管理および更新します。つまり、デフォルトでは、クラスターをアップグレードするたびに、MCO によってブートイメージが更新されます。
VMware vSphere では、ブートイメージ管理をテクノロジープレビュー機能として有効にできます。
その他のすべてのプラットフォームでは、MCO はクラスターの更新ごとにブートイメージを更新しません。
vSphere でのブートイメージ管理は、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat テクノロジープレビュー機能のサポート範囲の詳細は、次のリンクを参照してください。
6.10.1. ブートイメージ管理について リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、Google Cloud および Amazon Web Services (AWS) クラスターの場合、クラスターを更新するたびに、Machine Config Operator (MCO) がクラスター内のマシンセットのブートイメージを更新します。
VMware vSphere では、ブートイメージ管理をテクノロジープレビュー機能として有効にできます。この機能を有効にする方法は、「ブートイメージ管理の有効化」を参照してください。
vSphere でのブートイメージ管理は、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat テクノロジープレビュー機能のサポート範囲の詳細は、次のリンクを参照してください。
ブートイメージ管理機能は、必要に応じて無効にできます。この機能が無効になっていると、ブートイメージはクラスターで更新されなくなります。たとえば、この機能を無効にすると、クラスターが元々 OpenShift Container Platform 4.16 で作成されていた場合、クラスターがそれ以降のバージョンであっても、MCO がノードの作成に使用するブートイメージは同じ 4.16 バージョンになります。
ただし、古いブートイメージを使用すると、次の問題が発生する可能性があります。
- ノードの起動に余分に時間がかかる
- 証明書の有効期限の問題が発生する
- バージョンスキューの問題が発生する
この機能を無効にする方法は、「ブートイメージ管理の無効化」を参照してください。この機能を無効にした場合は、いつでも再有効化できます。詳細は、「ブートイメージ管理の有効化」を参照してください。
ブートイメージ管理を設定する機能は、Google Cloud クラスターと AWS クラスターでのみ使用できます。Cluster CAPI Operator によって管理されるクラスターではサポートされません。
機能を無効化した後、または再有効化した後のクラスターの動作は、次のシナリオを含め、変更を行ったタイミングによって異なります。
新しい OpenShift Container Platform バージョンに更新する前にこの機能を無効にすると、次のようになります。
- マシンセットで使用されるブートイメージのバージョンは、機能が無効にされたときと同じ OpenShift Container Platform バージョンのままになります。
- ノードをスケールアップすると、新しいノードは同じ OpenShift Container Platform バージョンを使用します。
新しい OpenShift Container Platform バージョンに更新した後にこの機能を無効にすると、次のようになります。
- マシンセットで使用されるブートイメージバージョンは、更新された OpenShift Container Platform バージョンと一致するように更新されます。
- ノードをスケールアップすると、新しいノードは更新された OpenShift Container Platform バージョンを使用します。
- 新しい OpenShift Container Platform バージョンに更新すると、マシンセット内のブートイメージのバージョンは、現在のバージョンのままとなり、クラスターとともに更新されません。
機能を無効にした後に有効にすると、次のようになります。
- マシンセットで使用されるブートイメージバージョンが異なる場合は、現在の OpenShift Container Platform バージョンに更新されます。
- ノードをスケールアップすると、新しいノードはクラスター内の現在の OpenShift Container Platform バージョンを使用します。
ブートイメージはノードがスケールアップされるときにのみ使用されるため、この機能は既存のノードには影響しません。
クラスターで使用されている現在のブートイメージを表示するには、プラットフォームに応じて次のいずれかの方法を使用します。
Google Cloud および AWS の場合は、マシンセットを調べることができます。
注記マシンセット内のブートイメージの場所と形式は、プラットフォームによって異なります。ただし、ブートイメージは常に
spec.template.spec.providerSpec.パラメーターにリスト表示されます。ブートイメージ参照が含まれる Google Cloud マシンセットの例
apiVersion: machine.openshift.io/v1beta1 kind: MachineSet metadata: name: ci-ln-hmy310k-72292-5f87z-worker-a namespace: openshift-machine-api spec: # ... template: # ... spec: # ... providerSpec: # ... value: disks: - autoDelete: true boot: true image: projects/rhcos-cloud/global/images/rhcos-412-85-202203181601-0-gcp-x86-641 # ...- 1
- このブートイメージは、クラスターの現在のバージョンに関係なく、最初にインストールされた OpenShift Container Platform バージョン (この例では OpenShift Container Platform 4.12) と同じです。
providerSpecフィールドの構造はプラットフォームごとに異なるため、マシンセット内でブートイメージが表現される方法はプラットフォームによって異なります。
ブートイメージ参照を含む AWS マシンセットの例
apiVersion: machine.openshift.io/v1beta1 kind: MachineSet metadata: name: ci-ln-hmy310k-72292-5f87z-worker-a namespace: openshift-machine-api spec: # ... template: # ... spec: # ... providerSpec: value: ami: id: ami-0e8fd9094e487d1ff # ...VMware vSphere の場合は、ノードへの
oc debugセッションを開き、rpm-ostree statusコマンドを使用して、影響を受けるノードを調べます。sh-5.1# rpm-ostree statusブートイメージ参照を含む AWS ノードの例
State: idle Deployments: * ostree-unverified-registry:quay.io/my-registry/... Digest: sha256:...
ブートイメージ管理を有効にするマシンセットのいずれかが Ignition バージョン 2.2.0 に基づく *-user-data シークレットを使用している場合、この機能を有効にすると、Machine Config Operator によって Ignition バージョンが 3.4.0 に変換されます。OpenShift Container Platform バージョン 4.5 以下では、Ignition バージョン 2.2.0 が使用されます。この変換が失敗すると、MCO またはクラスターのパフォーマンスが低下する可能性があります。oc get ClusterOperator machine-config コマンドの出力に、err: converting ignition stub failed: failed to parse Ignition config を含むエラーメッセージが追加されました。この問題を修正するには、次の一般的な手順を実行します。
- ブートイメージ管理機能を無効にします。詳細は、「ブートイメージ管理の無効化」を参照してください。
-
Ignition バージョン 3.2.0 を使用するには、
*-user-dataシークレットを手動で更新します。 - ブートイメージ管理機能を有効にします。詳細は、「ブートイメージ管理の有効化」を参照してください。
6.10.2. ブートイメージ管理の無効化 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、Google Cloud および Amazon Web Services (AWS) クラスターの場合、クラスターを更新するたびに、Machine Config Operator (MCO) がクラスター内のマシンセットのブートイメージを管理および更新します。VMware vSphere では、ブートイメージ管理をテクノロジープレビュー機能として有効にできます。
MachineConfiguration オブジェクトを編集することで、クラスターのブートイメージ管理機能を無効化できます。無効化すると、Machine Config Operator (MCO) はクラスター内のブートイメージを管理しなくなり、クラスターの更新ごとにブートイメージを更新しなくなります。
この機能を無効にしても、ノードまたはマシンセットは元々インストールされたブートイメージにロールバックされません。マシンセットは、機能が無効化されたときに存在していたブートイメージバージョンを保持し、今後クラスターが新しい OpenShift Container Platform バージョンにアップグレードされても更新されません。この機能は既存のノードには影響しません。
この機能を無効にした後、いつでも再有効化できます。詳細は、「更新されたブートイメージの有効化」を参照してください。
手順
MachineConfigurationオブジェクトを編集して、一部またはすべてのマシンセットのブートイメージ管理機能を無効化します。$ oc edit MachineConfiguration clusterオプション: すべてのマシンセットの機能を無効にします。
apiVersion: operator.openshift.io/v1 kind: MachineConfiguration metadata: name: cluster namespace: openshift-machine-config-operator spec: # ... managedBootImages:1 machineManagers: - apiGroup: machine.openshift.io2 resource: machinesets3 selection: mode: None4
検証
影響を受けるノードが
READY状態に戻ったら、マシン設定オブジェクトを表示して、ブートイメージ管理機能の現在の状態を確認します。$ oc get machineconfiguration cluster -o yamlブートイメージ参照を含むマシンセット例
kind: MachineConfiguration metadata: name: cluster # ... status: conditions: - lastTransitionTime: "2025-05-01T20:11:49Z" message: Reconciled 2 of 4 MAPI MachineSets | Reconciled 0 of 0 CAPI MachineSets | Reconciled 0 of 0 CAPI MachineDeployments reason: BootImageUpdateConfigurationUpdated status: "True" type: BootImageUpdateProgressing - lastTransitionTime: "2025-05-01T19:30:13Z" message: 0 Degraded MAPI MachineSets | 0 Degraded CAPI MachineSets | 0 CAPI MachineDeployments reason: BootImageUpdateConfigurationUpdated status: "False" type: BootImageUpdateDegraded managedBootImagesStatus: machineManagers: - apiGroup: machine.openshift.io resource: machinesets selection: mode: All影響を受けるノードが
READY状態に戻ったら、次のいずれかの方法を使用して現在のブートイメージを確認します。Google Cloud および AWS の場合、次のコマンドを実行してブートイメージのバージョンを取得します。マシンセット内のブートイメージの場所と形式は、プラットフォームによって異なります。ただし、ブートイメージは常に
spec.template.spec.providerSpec.パラメーターにリスト表示されます。$ oc get machinesets <machineset_name> -n openshift-machine-api -o yamlブートイメージ参照を含むマシンセット例
apiVersion: machine.openshift.io/v1beta1 kind: MachineSet metadata: labels: machine.openshift.io/cluster-api-cluster: ci-ln-77hmkpt-72292-d4pxp update-boot-image: "true" name: ci-ln-77hmkpt-72292-d4pxp-worker-a namespace: openshift-machine-api spec: # ... template: # ... spec: # ... providerSpec: # ... value: disks: - autoDelete: true boot: true image: projects/rhcos-cloud/global/images/<boot_image>1 # ...- 1
- このブートイメージは、現在の OpenShift Container Platform バージョンと同じです。
VMware vSphere の場合は、影響を受けるノードからブートイメージのバージョンを取得します。
次のようなコマンドを実行して、ノードへの
oc debugセッションを開きます。$ oc debug node/<node_name>次のコマンドを実行して、デバッグシェル内のルートディレクトリーとして
/hostを設定します。sh-5.1# chroot /hostrpm-ostree statusコマンドを実行して、カスタムレイヤーイメージが使用されていることを確認します。sh-5.1# rpm-ostree status出力例
State: idle Deployments: * ostree-unverified-registry:quay.io/my-registry/... Digest: sha256:...
6.10.3. ブートイメージ管理の有効化 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、Google Cloud および Amazon Web Services (AWS) クラスターの場合、クラスターを更新するたびに、Machine Config Operator (MCO) がクラスター内のマシンセットのブートイメージを更新します。
ブートイメージ管理機能を無効化してブートイメージが更新されないようにした場合は、MachineConfiguration オブジェクトを編集し、機能を再有効化できます。
VMware vSphere では、ブートイメージ管理をテクノロジープレビュー機能として有効にできます。
vSphere でのブートイメージ管理は、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat テクノロジープレビュー機能のサポート範囲の詳細は、次のリンクを参照してください。
この機能を有効化すると、ブートイメージが現在の OpenShift Container Platform バージョンに更新されます。今後クラスターが新しい OpenShift Container Platform バージョンに再度更新されると、ブートイメージも再度更新されます。機能の有効化後に作成された新しいノードは、更新されたブートイメージを使用します。この機能は既存のノードには影響しません。
前提条件
vSphere の場合、クラスターで
TechPreviewNoUpgrade機能セットを有効にします。詳細は、「フィーチャーゲートを使用した機能の有効化」を参照してください。注記TechPreviewNoUpgrade機能セットを有効にすると元に戻すことができなくなり、マイナーバージョンの更新ができなくなります。これらの機能セットは、実稼働クラスターでは推奨されません。MachineConfigurationオブジェクトのmanagedBootImagesStatusスタンザが表示されるまで待ちます。apiVersion: operator.openshift.io/v1 kind: MachineConfiguration metadata: name: cluster # ... status: # ... managedBootImagesStatus: machineManagers: - apiGroup: machine.openshift.io resource: machinesets selection: mode: None
手順
clusterという名前のMachineConfigurationオブジェクトを編集して、一部またはすべてのマシンセットのブートイメージ管理機能を有効化します。$ oc edit MachineConfiguration clusterオプション: すべてのマシンセットに対してブートイメージ管理機能を有効化します。
apiVersion: operator.openshift.io/v1 kind: MachineConfiguration metadata: name: cluster namespace: openshift-machine-config-operator spec: # ... managedBootImages:1 machineManagers: - apiGroup: machine.openshift.io2 resource: machinesets3 selection: mode: All4 オプション: 特定のマシンセットに対してブートイメージ管理機能を有効化します。
apiVersion: operator.openshift.io/v1 kind: MachineConfiguration metadata: name: cluster namespace: openshift-machine-config-operator spec: # ... managedBootImages:1 machineManagers: - apiGroup: machine.openshift.io2 resource: machinesets3 selection: mode: Partial4 partial: machineResourceSelector: matchLabels: region: "east"ヒントマシンセットに適切なラベルが存在しない場合は、次のようなコマンドを実行してキーと値のペアを追加します。
$ oc label machineset.machine ci-ln-hmy310k-72292-5f87z-worker-a region="east" -n openshift-machine-api
検証
影響を受けるノードが
READY状態に戻ったら、マシン設定オブジェクトを表示して、ブートイメージ管理機能の現在の状態を確認します。$ oc get machineconfiguration cluster -o yamlブートイメージ参照を含むマシンセット例
kind: MachineConfiguration metadata: name: cluster # ... status: conditions: - lastTransitionTime: "2025-05-01T20:11:49Z" message: Reconciled 2 of 4 MAPI MachineSets | Reconciled 0 of 0 CAPI MachineSets | Reconciled 0 of 0 CAPI MachineDeployments reason: BootImageUpdateConfigurationUpdated status: "True" type: BootImageUpdateProgressing - lastTransitionTime: "2025-05-01T19:30:13Z" message: 0 Degraded MAPI MachineSets | 0 Degraded CAPI MachineSets | 0 CAPI MachineDeployments reason: BootImageUpdateConfigurationUpdated status: "False" type: BootImageUpdateDegraded managedBootImagesStatus: machineManagers: - apiGroup: machine.openshift.io resource: machinesets selection: mode: All影響を受けるノードが
READY状態に戻ったら、次のいずれかの方法を使用して現在のブートイメージを確認します。Google Cloud および AWS の場合、次のコマンドを実行してブートイメージのバージョンを取得します。マシンセット内のブートイメージの場所と形式は、プラットフォームによって異なります。ただし、ブートイメージは常に
spec.template.spec.providerSpec.パラメーターにリスト表示されます。$ oc get machinesets <machineset_name> -n openshift-machine-api -o yamlブートイメージ参照を含むマシンセット例
apiVersion: machine.openshift.io/v1beta1 kind: MachineSet metadata: labels: machine.openshift.io/cluster-api-cluster: ci-ln-77hmkpt-72292-d4pxp update-boot-image: "true" name: ci-ln-77hmkpt-72292-d4pxp-worker-a namespace: openshift-machine-api spec: # ... template: # ... spec: # ... providerSpec: # ... value: disks: - autoDelete: true boot: true image: projects/rhcos-cloud/global/images/<boot_image>1 # ...- 1
- このブートイメージは、現在の OpenShift Container Platform バージョンと同じです。
VMware vSphere の場合は、影響を受けるノードからブートイメージのバージョンを取得します。
次のようなコマンドを実行して、ノードへの
oc debugセッションを開きます。$ oc debug node/<node_name>次のコマンドを実行して、デバッグシェル内のルートディレクトリーとして
/hostを設定します。sh-5.1# chroot /hostrpm-ostree statusコマンドを実行して、カスタムレイヤーイメージが使用されていることを確認します。sh-5.1# rpm-ostree status出力例
State: idle Deployments: * ostree-unverified-registry:quay.io/my-registry/... Digest: sha256:...