8.3. クラスター上のイメージモードについて
				「クラスター上のイメージモードを使用してカスタムレイヤーイメージを適用する」で説明されているように、OpenShift クラスター上のビルドプロセスのイメージモードを使用して MachineOSConfig カスタムリソース (CR) を作成し、カスタムレイヤーイメージをノードに適用できます。
			
				オブジェクトを作成すると、Machine Config Operator (MCO) によって MachineOSBuild オブジェクトとビルダー Pod が作成されます。このプロセスでは、config map などの一時オブジェクトも作成されますが、これらはビルドの完了後にクリーンアップされます。MachineOSBuild オブジェクトと関連する builder-* Pod は、<MachineOSConfig_CR_name>-<hash> という同じ命名スキームを使用します。次に例を示します。
			
MachineOSBuild オブジェクトの例
NAME PREPARED BUILDING SUCCEEDED INTERRUPTED FAILED layered-image-c8765e26ebc87e1e17a7d6e0a78e8bae False False True False False
NAME                                             PREPARED   BUILDING   SUCCEEDED   INTERRUPTED   FAILED
layered-image-c8765e26ebc87e1e17a7d6e0a78e8bae   False      False      True        False         Falseビルダー Pod の例
NAME READY STATUS RESTARTS AGE build-layered-image-c8765e26ebc87e1e17a7d6e0a78e8bae 2/2 Running 0 11m
NAME                                                      READY   STATUS      RESTARTS        AGE
build-layered-image-c8765e26ebc87e1e17a7d6e0a78e8bae      2/2     Running     0               11m
				これらの新しいオブジェクトや machine-os-builder Pod を操作する必要はありません。ただし、これらのリソースは、必要に応じて、すべてトラブルシューティングに使用できます。
			
				ビルドが完了すると、MCO は新しいカスタムレイヤーイメージをリポジトリーにプッシュし、関連付けられているマシン設定プール内のノードにイメージをロールアウトします。新しいカスタムレイヤーイメージのダイジェスト付きイメージプル仕様は、MachineOSConfig オブジェクトで確認できます。これは現在、この MachineOSConfig のアクティブなイメージプル仕様です。
			
ダイジェスト付きイメージプル仕様の例
				非実稼働ノードを含むカスタムマシン設定プールを使用すると、カスタムレイヤーイメージをアクティブなノードにロールアウトせずに、MachineOSBuild オブジェクトをテストして、正しくビルドされることを確認できます。または、ノードのないカスタムマシン設定プールを使用することもできます。MachineOSBuild オブジェクトは、MCO がカスタムレイヤーイメージをデプロイするためのノードがない場合でもビルドされます。
			
コントロールプレーン、ワーカー、カスタムプールなど、クラスター内の任意のマシン設定プールにカスタムレイヤーイメージを適用できます。
シングルノード OpenShift クラスターの場合、カスタムレイヤーイメージをコントロールプレーンノードにのみ適用できます。
				MachineOSConfig オブジェクトに特定の変更を加えると、関連するカスタムレイヤーイメージの自動再ビルドがトリガーされます。「マシン設定プールの一時停止」で説明されているように、カスタムレイヤーイメージが適用されているマシン設定プールを一時停止することで、再ビルドの影響を軽減できます。プールの一時停止中、ビルド完了後に新しくビルドされたイメージを、MCO がノードにロールアウトすることはありません。ただし、プールが一時停止されているかどうかに関係なく、ビルドは実行されます。たとえば、MachineOSCOnfig オブジェクトを削除して置き換える必要がある場合、変更を行う前にマシン設定プールを一時停止すると、関連するノードが MCO によってベースイメージに戻されるのを防ぎ、必要な再起動の回数を減らすことができます。
			
				マシン設定プールを一時停止すると、oc get machineconfigpools で次のステータスが報告されます。
			
出力例
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-a0b404d061a6183cc36d302363422aba True False False 3 3 3 0 4h14m worker rendered-worker-221507009cbcdec0eec8ab3ccd789d18 False False False 2 2 2 0 4h14m
NAME      CONFIG                                              UPDATED   UPDATING   DEGRADED   MACHINECOUNT   READYMACHINECOUNT   UPDATEDMACHINECOUNT   DEGRADEDMACHINECOUNT   AGE
master    rendered-master-a0b404d061a6183cc36d302363422aba    True      False      False      3              3                   3                     0                      4h14m
worker    rendered-worker-221507009cbcdec0eec8ab3ccd789d18    False     False      False      2              2                   2                     0                      4h14m - 1
- workerマシン設定プールは一時停止しています。これは、3 つの- Falseステータスと、- READYMACHINECOUNTが- 0であることからわかります。
変更がロールアウトされたら、マシン設定プールの一時停止を解除できます。
ネットワークの問題や無効なシークレットなどによりビルドが失敗した場合、MCO は、ジョブが失敗する前に、ビルドをさらに 3 回再試行します。MCO は、ビルドの試行ごとに異なるビルド Pod を作成します。ビルド Pod のログを使用すると、ビルドの失敗をトラブルシューティングできます。MCO は、しばらくするとこれらのビルド Pod を自動的に削除することに注意してください。
失敗した MachineOSBuild オブジェクトの例
NAME PREPARED BUILDING SUCCEEDED INTERRUPTED FAILED AGE layered-image-c8765e26ebc87e1e17a7d6e0a78e8bae False False False False True 12m
NAME                                             PREPARED   BUILDING   SUCCEEDED   INTERRUPTED   FAILED   AGE
layered-image-c8765e26ebc87e1e17a7d6e0a78e8bae   False      False      False        False        True     12m
				MachineOSConfig オブジェクトを変更するか、MachineOSConfig オブジェクトにアノテーションを適用することで、カスタムレイヤーイメージを手動で再ビルドできます。詳細は、「クラスター上のカスタムレイヤーイメージの再ビルド」を参照してください。
			
カスタムマシン設定プールを使用してクラスター上のレイヤーイメージをノードに適用した場合は、ノードからカスタムレイヤーイメージを削除し、ベースイメージに戻すことができます。詳細は「クラスター上のレイヤーノードを元に戻す」を参照してください。
MachineOSConfig オブジェクトを編集することで、必要に応じてカスタム上のレイヤーイメージを変更し、追加パッケージのインストール、既存パッケージの削除、リポジトリーの変更、シークレットの更新、またはその他の同様の変更を行うことができます。詳細は、「カスタムレイヤーイメージの変更」を参照してください。
8.3.1. クラスター上のイメージモードにおける既知の制限
クラスター上のレイヤー化機能を使用する場合は、次の制限に注意してください。
- マルチアーキテクチャーコンピュートマシンでは、クラスター上のイメージモードはサポートされていません。
- 
							同じマシン設定プールで複数の MachineOSConfigオブジェクトを使用することはサポートされていません。異なるカスタムレイヤーイメージを使用したいマシン設定プールごとに、個別のMachineOSConfigCR が必要です。
- カスタムレイヤーイメージを使用するマシンセットをスケールアップすると、ノードが 2 回再起動します。1 回目は、ノードがベースイメージを使用して最初に作成されるとき、2 回目はカスタムレイヤーイメージが適用されるときです。
- カスタムレイヤーイメージを持つノードでは、node disruption policy がサポートされません。その結果、次の設定変更によりノードが再起動します。 - 
									/varまたは/etcディレクトリー内の設定ファイルの変更
- systemd サービスの追加または変更
- SSH キーの変更
- 
									ICSP、ITMS、およびIDMSオブジェクトからミラーリングルールの削除
- 
									openshift-confignamespace のuser-ca-bundleconfigmap を更新することによる信頼できる CA の変更
 
- 
									
- 
							カスタムレイヤーイメージの作成に使用するイメージは、プッシュレジストリー内の領域を占有します。レジストリー内の空き領域に常に注意して、必要に応じてイメージを削除してください。イメージを作成した MachineOSBuildオブジェクトを削除することで、クラスター上のカスタムレイヤーイメージをリポジトリーから自動的に削除できます。レジストリープッシュシークレットによって提供される認証情報は、レジストリーからイメージを削除するパーミッションも付与する必要があることに注意してください。詳細は、「クラスター上のカスタムレイヤーイメージの削除」を参照してください。
8.3.2. クラスター上のイメージモードを使用してカスタムレイヤーイメージを適用する
					クラスター上のビルドプロセスを使用してカスタムレイヤーイメージをクラスターに適用するには、次のパラメーターを指定する MachineOSConfig カスタムリソース (CR) を作成します。
				
- ビルドする Containerfile
- ビルドを関連付けるマシン設定プール
- 最終的なイメージをプッシュおよびプルする場所
- 使用するプッシュシークレットとプルシークレット
					各マシン設定プールに対して、MachineOSConfig CR を 1 つだけ作成できます。
				
前提条件
- 
							リポジトリーからベースオペレーティングシステムイメージをプルするために Machine Config Operator (MCO) が必要とするプルシークレットが openshift-machine-config-operatornamespace にある。デフォルトでは、MCO はクラスターのグローバルプルシークレットを使用し、これをopenshift-machine-config-operatornamespace に同期します。プルシークレットを OpenShift Container Platform グローバルプルシークレットに追加することも、別のプルシークレットを使用することもできます。グローバルプルシークレットの変更は、「グローバルクラスターのプルシークレットの更新」を参照してください。
- MCO が新しいカスタムレイヤーイメージをプッシュするために必要なレジストリーのプッシュシークレットがある。シークレットによって提供される認証情報は、レジストリーからイメージを削除するパーミッションも付与する必要があります。 注記- 非接続環境では、非接続クラスターがイメージをプッシュするレジストリーにアクセスできることを確認します。イメージのミラーリングはイメージのプルにのみ適用されます。 
- ノードがレジストリーから新しいカスタムレイヤーイメージをプルするために必要なプルシークレットがあります。これは、イメージをリポジトリーにプッシュするために使用するシークレットとは異なるシークレットである必要があります。
- Containerfile を設定する方法をよく理解している。Containerfile の作成方法は、このドキュメントの範囲外です。
- オプション: カスタムレイヤーイメージを適用するノード用に、別のマシン設定プールがある。ノード用のカスタムマシン設定プールを持つことの利点の 1 つは、必要に応じて簡単にベースイメージに戻すことができることです。詳細は「クラスター上のレイヤーノードを元に戻す」を参照してください。
手順
- MachineOSconfigオブジェクトを作成します。- 以下のような YAML ファイルを作成します。 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- MachineConfigCR に必要な- machineconfiguration.openshift.io/v1API を指定します。
- 2
- MachineOSConfigオブジェクトの名前を指定します。この名前は、関連付けられているマシン設定プールの名前と一致する必要があります。この名前は、他のクラスター上のイメージモードリソースで使用されます。このドキュメントの例では、- layered-imageという名前を使用します。
- 3
- カスタムレイヤーイメージをデプロイするノードに関連付けられているマシン設定プールの名前を指定します。このドキュメントの例では、layered-imageマシン設定プールを使用します。
- 4
- カスタムレイヤーイメージを設定するための Containerfile を指定します。
- 5
- この Containerfile をビルドするアーキテクチャーをARM64、AMD64、PPC64LE、S390X、またはNoArchから指定します。デフォルトはNoArchで、任意のアーキテクチャーに適用できる Containerfile を定義します。
- 6
- 使用する Image Builder の名前を指定します。これは、イメージビルドを管理しているjobオブジェクトへの参照であるJobである必要があります。
- 7
- オプション: MCO がレジストリーからベースオペレーティングシステムイメージをプルするために必要なプルシークレットの名前を指定します。デフォルトでは、グローバルプルシークレットが使用されます。
- 8
- 新しくビルドされたカスタムレイヤーイメージをプッシュするイメージレジストリーを指定します。これは、host[:port][/namespace]/nameまたはsvc_name.namespace.svc[:port]/repository/name:<tag>形式で、クラスターがアクセスできる任意のレジストリーにすることができます。この例では、内部 OpenShift Container Platform レジストリーを使用します。クラスターがミラーレジストリーを使用するように適切に設定されている場合は、ミラーレジストリーを指定できます。
- 9
- MCO が新しくビルドされたカスタムレイヤーイメージをそのレジストリーにプッシュするために必要なプッシュシークレットの名前を指定します。
 
- MachineOSConfigオブジェクトを作成します。- oc create -f <filename>.yaml - $ oc create -f <filename>.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- MachineOSBuildオブジェクトが作成されて- READY状態になったら、必要に応じて、新しいカスタムレイヤーイメージを使用するノードのノード仕様を変更します。- 次のコマンドを実行して、 - MachineOSBuildオブジェクトの準備ができていることを確認します。- oc get machineosbuild - $ oc get machineosbuild- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - SUCCEEDED値が- Trueになったら、ビルドは完了です。- MachineOSBuildオブジェクトが準備完了状態であることを示す出力例- NAME PREPARED BUILDING SUCCEEDED INTERRUPTED FAILED AGE layered-image-ad5a3cad36303c363cf458ab0524e7c0-builder False False True False False 43s - NAME PREPARED BUILDING SUCCEEDED INTERRUPTED FAILED AGE layered-image-ad5a3cad36303c363cf458ab0524e7c0-builder False False True False False 43s- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- MachineOSConfigオブジェクトで指定したマシン設定プールのラベルを追加して、カスタムレイヤーイメージをデプロイするノードを編集します。- oc label node <node_name> 'node-role.kubernetes.io/<mcp_name>=' - $ oc label node <node_name> 'node-role.kubernetes.io/<mcp_name>='- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - ここでは、以下のようになります。 - node-role.kubernetes.io/<mcp_name>=
- カスタムレイヤーイメージをデプロイするノードを特定するノードセレクターを指定します。
 - 変更を保存すると、MCO がノードをドレインし、スケジューリング対象から外して再起動します。再起動後、ノードは新しいカスタムレイヤーイメージを使用します。 
 
検証
- 次のコマンドを実行して、新しい Pod の準備ができていることを確認します。 - oc get pods -n openshift-machine-config-operator - $ oc get pods -n openshift-machine-config-operator- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - NAME READY STATUS RESTARTS AGE build-layered-image-ad5a3cad36303c363cf458ab0524e7c0-hxrws 2/2 Running 0 2m40s # ... machine-os-builder-6fb66cfb99-zcpvq 1/1 Running 0 2m42s - NAME READY STATUS RESTARTS AGE build-layered-image-ad5a3cad36303c363cf458ab0524e7c0-hxrws 2/2 Running 0 2m40s- 1 - # ... machine-os-builder-6fb66cfb99-zcpvq 1/1 Running 0 2m42s- 2 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、レイヤービルドの現在のステージを確認します。 - oc get machineosbuilds - $ oc get machineosbuilds- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - NAME PREPARED BUILDING SUCCEEDED INTERRUPTED FAILED AGE layered-image-ad5a3cad36303c363cf458ab0524e7c0 False True False False False 12m - NAME PREPARED BUILDING SUCCEEDED INTERRUPTED FAILED AGE layered-image-ad5a3cad36303c363cf458ab0524e7c0 False True False False False 12m- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- MachineOSBuildの名前は、- <MachineOSConfig_CR_name>-<hash>という形式で付けられます。
 
- 次のコマンドを実行して、 - MachineOSConfigオブジェクトに新しいカスタムレイヤーイメージへの参照が含まれていることを確認します。- oc describe machineosconfig <object_name> - $ oc describe machineosconfig <object_name>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - ダイジェスト付きイメージプル仕様の例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 新しいカスタムレイヤーイメージのダイジェスト付きイメージプル仕様。
 
- 適切なノードが新しいカスタムレイヤーイメージを使用していることを確認します。 - 次のコマンドを実行して、コントロールプレーンノードのデバッグセッションをルートとして開始します。 - oc debug node/<node_name> - $ oc debug node/<node_name>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- /hostをデバッグシェル内のルートディレクトリーとして設定します。- chroot /host - sh-4.4# chroot /host- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- rpm-ostree statusコマンドを実行して、カスタムレイヤーイメージが使用されていることを確認します。- rpm-ostree status - sh-5.1# rpm-ostree status- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - ... - # ... Deployments: * ostree-unverified-registry:image-registry.openshift-image-registry.svc:5000/openshift-machine-config-operator/os-images@sha256:3c8fc667adcb432ce0c83581f16086afec08a961dd28fed69bb6bad6db0a0754 Digest: sha256:3c8fc667adcb432ce0c83581f16086afec08a961dd28fed69bb6bad6db0a0754- 1 - Version: 419.94.202502100215-0 (2025-02-12T19:20:44Z)- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 新しいカスタムレイヤーイメージのダイジェスト付きイメージプル仕様。
 
 
8.3.3. クラスター上のカスタムレイヤーイメージの変更
					必要に応じて、クラスター上のカスタムレイヤーイメージを変更できます。これにより、追加のパッケージをインストールしたり、既存のパッケージを削除したり、プルまたはプッシュリポジトリーを変更したり、シークレットを更新したり、その他の同様の変更を行ったりすることができます。また、MachineOSConfig オブジェクトを編集したり、MachineOSConfig オブジェクトを作成した YAML ファイルに変更を適用したり、その目的のために新しい YAML ファイルを作成したりできます。
				
					MachineOSConfig オブジェクト YAML を変更して適用するか、新しい YAML ファイルを作成すると、MachineOSConfig オブジェクト自体に直接行った変更が YAML によって上書きされます。
				
					MachineOSConfig オブジェクトに特定の変更を加えると、関連するカスタムレイヤーイメージの自動再ビルドがトリガーされます。「マシン設定プールの一時停止」で説明されているように、カスタムレイヤーイメージが適用されているマシン設定プールを一時停止することで、再ビルドの影響を軽減できます。プールの一時停止中、ビルド完了後に新しくビルドされたイメージを、MCO がノードにロールアウトすることはありません。ただし、プールが一時停止されているかどうかに関係なく、ビルドは実行されます。たとえば、MachineOSCOnfig オブジェクトを削除して置き換える必要がある場合、変更を行う前にマシン設定プールを一時停止すると、関連するノードが MCO によってベースイメージに戻されるのを防ぎ、必要な再起動の回数を減らすことができます。
				
					マシン設定プールを一時停止すると、oc get machineconfigpools で次のステータスが報告されます。
				
出力例
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-a0b404d061a6183cc36d302363422aba True False False 3 3 3 0 4h14m worker rendered-worker-221507009cbcdec0eec8ab3ccd789d18 False False False 2 2 2 0 4h14m
NAME      CONFIG                                              UPDATED   UPDATING   DEGRADED   MACHINECOUNT   READYMACHINECOUNT   UPDATEDMACHINECOUNT   DEGRADEDMACHINECOUNT   AGE
master    rendered-master-a0b404d061a6183cc36d302363422aba    True      False      False      3              3                   3                     0                      4h14m
worker    rendered-worker-221507009cbcdec0eec8ab3ccd789d18    False     False      False      2              2                   2                     0                      4h14m - 1
- workerマシン設定プールは一時停止しています。これは、3 つの- Falseステータスと、- READYMACHINECOUNTが- 0であることからわかります。
変更がロールアウトされたら、マシン設定プールの一時停止を解除できます。
前提条件
- 
							MachineOSConfigオブジェクトを作成して、クラスター上のイメージモードを選択している。
手順
- オブジェクトを変更して、関連するカスタムレイヤーイメージを更新します。 - MachineOSConfigオブジェクトを編集して、カスタムレイヤーイメージを変更します。次の例では、カスタムレイヤーイメージを使用してインストールされたツリーパッケージがすでにあるノードに、- rngdデーモンを追加します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 変更を保存すると、MCO がノードをドレインし、スケジューリング対象から外して再起動します。再起動後、ノードはクラスターベースの Red Hat Enterprise Linux CoreOS (RHCOS) イメージを使用します。シークレットだけを変更した場合、新しいビルドがトリガーされず、再起動も実行されません。 
 
検証
- 次のコマンドを使用して、新しい - MachineOSBuildオブジェクトが作成されたことを確認します。- oc get machineosbuild - $ oc get machineosbuild- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - NAME PREPARED BUILDING SUCCEEDED INTERRUPTED FAILED AGE layered-image-a5457b883f5239cdcb71b57e1a30b6ef False False True False False 4d17h layered-image-f91f0f5593dd337d89bf4d38c877590b False True False False False 2m41s - NAME PREPARED BUILDING SUCCEEDED INTERRUPTED FAILED AGE layered-image-a5457b883f5239cdcb71b57e1a30b6ef False False True False False 4d17h layered-image-f91f0f5593dd337d89bf4d38c877590b False True False False False 2m41s- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- BUILDING列の- True値は、- MachineOSBuildオブジェクトがビルド中であることを示します。- SUCCEEDED列に- Trueが表示されたら、ビルドは完了です。
 
- 次のコマンドを使用して、新しいマシン設定がノードにロールアウトされる様子を確認できます。 - oc get machineconfigpools - $ oc get machineconfigpools- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-a0b404d061a6183cc36d302363422aba True False False 3 3 3 0 3h38m worker rendered-worker-221507009cbcdec0eec8ab3ccd789d18 False True False 2 2 2 0 3h38m - NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-a0b404d061a6183cc36d302363422aba True False False 3 3 3 0 3h38m worker rendered-worker-221507009cbcdec0eec8ab3ccd789d18 False True False 2 2 2 0 3h38m- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- UPDATED列の- FALSE値は、- MachineOSBuildオブジェクトがビルド中であることを示します。- UPDATED列に- FALSEが表示される場合、ノードへの新しいカスタムレイヤーイメージのロールアウトが完了しています。
 
- ノードが - Ready状態に戻ったら、変更が適用されたことを確認します。- 次のコマンドを実行して、ノードへの - oc debugセッションを開きます。- oc debug node/<node_name> - $ oc debug node/<node_name>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、デバッグシェル内のルートディレクトリーとして - /hostを設定します。- chroot /host - sh-5.1# chroot /host- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 適切なコマンドを使用して、変更が適用されたことを確認します。次の例は、 - rngdデーモンがインストールされたことを示しています。- rpm -qa |grep rng-tools - sh-5.1# rpm -qa |grep rng-tools- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - rng-tools-6.17-3.fc41.x86_64 - rng-tools-6.17-3.fc41.x86_64- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - rngd -v - sh-5.1# rngd -v- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - rngd 6.16 - rngd 6.16- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
関連情報
8.3.4. クラスター上のカスタムレイヤーイメージの再ビルド
					クラスター上のカスタムレイヤーイメージを再ビルドする必要がある場合は、MachineOSConfig オブジェクトを変更するか、MachineOSConfig オブジェクトにアノテーションを追加することができます。これら両方のアクションにより、オブジェクトの自動再ビルドがトリガーされます。たとえば、Containerfile を変更した場合や、マシン設定内の osimageurl の場所を更新する必要がある場合は、再ビルドを実行できます。
				
					アノテーションを追加すると、Machine Config Operator (MCO) は現在の MachineOSBuild オブジェクトを削除し、その代わりに新しいオブジェクトを作成します。ビルドプロセスが完了すると、MCO は自動的にアノテーションを削除します。
				
前提条件
- 
							MachineOSConfigオブジェクトを作成して、クラスター上のイメージモードを選択している。
手順
- 次のコマンドを使用して、 - MachineOSConfigオブジェクトを編集し、- machineconfiguration.openshift.io/rebuildアノテーションを追加します。- oc edit MachineOSConfig <object_name> - $ oc edit MachineOSConfig <object_name>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - MachineOSConfigオブジェクトの例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- このアノテーションを追加すると、カスタムレイヤーイメージの再ビルドがトリガーされます。
 
検証
- 次のコマンドを使用して、 - MachineOSBuildオブジェクトがビルドされていることを確認します。- oc get machineosbuild - $ oc get machineosbuild- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - NAME PREPARED BUILDING SUCCEEDED INTERRUPTED FAILED AGE layered-image-d6b929a29c6dbfa8e4007c8069a2fd08 False True False False False 2m41s - NAME PREPARED BUILDING SUCCEEDED INTERRUPTED FAILED AGE layered-image-d6b929a29c6dbfa8e4007c8069a2fd08 False True False False False 2m41s- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- BUILDING列の- True値は、- MachineOSBuildオブジェクトがビルド中であることを示します。
 
- 次のコマンドを使用して、 - MachineOSConfigオブジェクトを編集し、MCO が- machineconfiguration.openshift.io/rebuildアノテーションを削除したことを確認します。- oc edit MachineOSConfig <object_name> - $ oc edit MachineOSConfig <object_name>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - MachineOSConfigオブジェクトの例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
8.3.5. クラスター上のカスタムレイヤーイメージを元に戻す
カスタムマシン設定プール (MCP) 内のノードにクラスター上のレイヤーイメージを適用した場合は、ノードからカスタムレイヤーイメージを削除して、ベースイメージに戻すことができます。
ノードを元に戻すには、ノードからカスタムマシン設定プールラベルを削除して、カスタム MCP からノードを削除します。ラベルを削除すると、Machine Config Operator (MCO) はクラスターベースの Red Hat Enterprise Linux CoreOS (RHCOS) イメージを使用してノードを再起動し、カスタムレイヤードイメージをオーバーライドします。
ラベルを削除する前に、ノードが別の MCP に関連付けられていることを確認してください。
前提条件
- 
							MachineOSConfigオブジェクトを作成して、クラスター上のイメージモードを選択している。
- 
							カスタムマシン設定プール内のノードに MachineOSConfigオブジェクトを適用している。
手順
- 次のコマンドを使用して、ノードからラベルを削除します。 - oc label node/<node_name> node-role.kubernetes.io/<mcp_name>- - $ oc label node/<node_name> node-role.kubernetes.io/<mcp_name>-- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 変更を保存すると、MCO がノードをドレインし、スケジューリング対象から外して再起動します。再起動後、ノードはクラスターベースの Red Hat Enterprise Linux CoreOS (RHCOS) イメージを使用します。 
検証
- 次のチェックのいずれかを実行することで、カスタムレイヤーイメージが削除されたことを確認します。 - ワーカーマシン設定プールが以前のマシン設定で更新されていることを確認します。 - oc get mcp - $ oc get mcp- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE layered rendered-layered-e8c8bc1de69777325003e80bc0c04b82 True False False 0 0 0 0 4h20m master rendered-master-50d7bc27ee8b9ca2250383f0647ade7f True False False 3 3 3 0 5h39m worker rendered-worker-e8c8bc1de69777325003e80bc0c04b82 True False False 3 3 3 0 5h39m - NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE layered rendered-layered-e8c8bc1de69777325003e80bc0c04b82 True False False 0 0 0 0 4h20m- 1 - master rendered-master-50d7bc27ee8b9ca2250383f0647ade7f True False False 3 3 3 0 5h39m worker rendered-worker-e8c8bc1de69777325003e80bc0c04b82 True False False 3 3 3 0 5h39m- 2 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- ノードをチェックして、ノードのスケジューリングが無効になっていることを確認します。これは、変更が適用されていることを示しています。 - oc get nodes - $ oc get nodes- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- ノードが - Ready状態に戻ったら、ノードが基本イメージを使用していることを確認します。- ノードへの - oc debugセッションを開きます。以下に例を示します。- oc debug node/ip-10-0-155-125.us-west-1.compute.internal - $ oc debug node/ip-10-0-155-125.us-west-1.compute.internal- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- /hostをデバッグシェル内のルートディレクトリーとして設定します。- chroot /host - sh-4.4# chroot /host- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- rpm-ostree statusコマンドを実行して、ベースイメージが使用中であることを確認します。- rpm-ostree status - sh-4.4# rpm-ostree status- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - State: idle Deployments: * ostree-unverified-registry:registry.build05.ci.openshift.org/ci-ln-qd0hmqk/stable@sha256:a8bd32573f787f6d1c23e1d669abbefd1e31339826d06e750c0ca632ad6c414f Digest: sha256:a8bd32573f787f6d1c23e1d669abbefd1e31339826d06e750c0ca632ad6c414f Version: 419.96.202501202201-0 (2025-01-20T22:06:13Z)- State: idle Deployments: * ostree-unverified-registry:registry.build05.ci.openshift.org/ci-ln-qd0hmqk/stable@sha256:a8bd32573f787f6d1c23e1d669abbefd1e31339826d06e750c0ca632ad6c414f Digest: sha256:a8bd32573f787f6d1c23e1d669abbefd1e31339826d06e750c0ca632ad6c414f Version: 419.96.202501202201-0 (2025-01-20T22:06:13Z)- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
 
8.3.6. クラスター上のカスタムレイヤーイメージの削除
					カスタムレイヤーイメージがレジストリー内で過剰なスペースを占有しないようにするには、イメージを作成した MachineOSBuild オブジェクトを削除することで、クラスター上のカスタムレイヤーイメージをリポジトリーから自動的に削除できます。
				
					MachineOSBuild オブジェクトに追加したレジストリープッシュシークレットによって提供される認証情報は、レジストリーからイメージを削除するパーミッションを付与する必要があります。削除パーミッションが付与されていない場合、MachineOSBuild オブジェクトを削除してもイメージは削除されません。
				
					カスタムレイヤーイメージがノードで現在使用中であるか、またはノードに要求されている場合、そのイメージは削除されません。この状態は、MachineOSConfig オブジェクトの作成時にノードへ追加される、machineconfiguration.openshift.io/currentImage または machineconfiguration.openshift.io/desiredImage アノテーションによって示されます。