第5章 ブートイメージ更新
Machine Config Operator (MCO) は、ブートイメージを使用して Red Hat Enterprise Linux CoreOS (RHCOS) ノードを起動します。デフォルトでは、ブートイメージは OpenShift Container Platform によって管理されません。
そのため、クラスター内のブートイメージはクラスターとともに更新されません。たとえば、クラスターが元々 OpenShift Container Platform 4.12 で作成されていた場合、クラスターがノードを作成するために使用するブートイメージは、クラスターがそれ以降のバージョンであっても、同じ 4.12 バージョンになります。クラスターが後で 4.13 以降にアップグレードされた場合、新しいノードは同じ 4.12 イメージを使用してスケーリングを継続します。
このプロセスにより、以下の問題が発生する可能性があります。
- ノードの起動に余分に時間がかかる
- 証明書の有効期限の問題が発生する
- バージョンスキューの問題が発生する
これらの問題を回避するには、クラスターを更新するたびにブートイメージも更新するようにクラスターを設定できます。MachineConfiguration
オブジェクトを変更することで、この機能を有効にできます。現在、ブートイメージを更新する機能は、Google Cloud Platform (GCP) および Amazon Web Services (AWS) クラスターでのみ利用できます。Cluster CAPI Operator によって管理されるクラスターではサポートされません。
マシンセットでデフォルトのユーザーデータシークレット (worker-user-data
という名前) を使用していない場合、または worker-user-data
シークレットを変更した場合は、管理されたブートイメージの更新を使用しないでください。これは、Machine Config Operator (MCO) が、シークレットの管理バージョンを使用するようにマシンセットを更新するためです。管理されたブートイメージ機能を使用すると、マシンセットオブジェクトに保存されているシークレットをカスタマイズする機能が失われます。
クラスターで使用されている現在のブートイメージを表示するには、マシンセットを調べます。
ブートイメージ参照を含むマシンセット例
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-64 # ...
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-64
# ...
- 1
- このブートイメージは、クラスターの現在のバージョンに関係なく、最初にインストールされた OpenShift Container Platform バージョン (この例では OpenShift Container Platform 4.12) と同じです。
providerSpec
フィールドの構造はプラットフォームごとに異なるため、マシンセット内でブートイメージが表現される方法はプラットフォームによって異なります。
ブートイメージを更新するようにクラスターを設定すると、マシンセットで参照されるブートイメージはクラスターの現在のバージョンと一致します。
5.1. ブートイメージ更新の設定
デフォルトでは、ブートイメージは OpenShift Container Platform によって管理されません。MachineConfiguration
オブジェクトを変更することで、クラスターを更新するたびにブートイメージが更新されるようにクラスターを設定できます。
現在、ブートイメージを更新する機能は、Google Cloud Platform (GCP) および Amazon Web Services (AWS) クラスターでのみ利用できます。Cluster CAPI Operator によって管理されるクラスターではサポートされません。
手順
次のコマンドを実行して、
cluster
という名前のMachineConfiguration
オブジェクトを編集し、ブートイメージの更新を有効にします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc edit MachineConfiguration cluster
$ oc edit MachineConfiguration cluster
オプション: すべてのマシンセットのブートイメージ更新機能を設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: operator.openshift.io/v1 kind: MachineConfiguration metadata: name: cluster namespace: openshift-machine-config-operator spec: # ... managedBootImages: machineManagers: - resource: machinesets apiGroup: machine.openshift.io selection: mode: All
apiVersion: operator.openshift.io/v1 kind: MachineConfiguration metadata: name: cluster namespace: openshift-machine-config-operator spec: # ... managedBootImages:
1 machineManagers: - resource: machinesets apiGroup: machine.openshift.io selection: mode: All
2 オプション: 特定のマシンセットのブートイメージ更新機能を設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: operator.openshift.io/v1 kind: MachineConfiguration metadata: name: cluster namespace: openshift-machine-config-operator spec: # ... managedBootImages: machineManagers: - resource: machinesets apiGroup: machine.openshift.io selection: mode: Partial partial: machineResourceSelector: matchLabels: update-boot-image: "true"
apiVersion: operator.openshift.io/v1 kind: MachineConfiguration metadata: name: cluster namespace: openshift-machine-config-operator spec: # ... managedBootImages:
1 machineManagers: - resource: machinesets apiGroup: machine.openshift.io selection: mode: Partial partial: machineResourceSelector: matchLabels: update-boot-image: "true"
2 ヒント適切なラベルがマシンセットに存在しない場合は、以下のようなコマンドを実行してキーと値のペアを追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc label machineset.machine ci-ln-hmy310k-72292-5f87z-worker-a update-boot-image=true -n openshift-machine-api
$ oc label machineset.machine ci-ln-hmy310k-72292-5f87z-worker-a update-boot-image=true -n openshift-machine-api
検証
マシン設定オブジェクトを表示して、ブートイメージ更新の現在の状態を確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get machineconfiguration cluster -n openshift-machine-api -o yaml
$ oc get machineconfiguration cluster -n openshift-machine-api -o yaml
ブートイメージ参照を含むマシンセット例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kind: MachineConfiguration metadata: name: cluster # ... status: conditions: - lastTransitionTime: "2024-09-09T13:51:37Z" message: Reconciled 1 of 2 MAPI MachineSets | Reconciled 0 of 0 CAPI MachineSets | Reconciled 0 of 0 CAPI MachineDeployments reason: BootImageUpdateConfigurationAdded status: "True" type: BootImageUpdateProgressing - lastTransitionTime: "2024-09-09T13:51:37Z" message: 0 Degraded MAPI MachineSets | 0 Degraded CAPI MachineSets | 0 CAPI MachineDeployments reason: BootImageUpdateConfigurationAdded status: "False" type: BootImageUpdateDegraded
kind: MachineConfiguration metadata: name: cluster # ... status: conditions: - lastTransitionTime: "2024-09-09T13:51:37Z"
1 message: Reconciled 1 of 2 MAPI MachineSets | Reconciled 0 of 0 CAPI MachineSets | Reconciled 0 of 0 CAPI MachineDeployments reason: BootImageUpdateConfigurationAdded status: "True" type: BootImageUpdateProgressing - lastTransitionTime: "2024-09-09T13:51:37Z"
2 message: 0 Degraded MAPI MachineSets | 0 Degraded CAPI MachineSets | 0 CAPI MachineDeployments reason: BootImageUpdateConfigurationAdded status: "False" type: BootImageUpdateDegraded
次のコマンドを実行してブートイメージのバージョンを取得します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get machinesets <machineset_name> -n openshift-machine-api -o yaml
$ oc get machinesets <machineset_name> -n openshift-machine-api -o yaml
ブートイメージ参照を含むマシンセット例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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> # ...
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 バージョンと同じです。
関連情報