6.3.2. ブートイメージの更新
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 クラスターでのみ利用可能で、Cluster CAPI Operator が管理するクラスターではサポートされていません。
Google Cloud クラスターのブートイメージ更新機能は、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
クラスターで使用されている現在のブートイメージを表示するには、マシンセットを調べます。
ブートイメージ参照を含むマシンセット例
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フィールドの構造はプラットフォームごとに異なるため、マシンセット内でブートイメージが表現される方法はプラットフォームによって異なります。
ブートイメージを更新するようにクラスターを設定すると、マシンセットで参照されるブートイメージはクラスターの現在のバージョンと一致します。
前提条件
-
フィーチャーゲートを使用して
TechPreviewNoUpgrade機能セットを有効にしている。詳細は、「関連情報」セクションの「フィーチャーゲートを使用した機能の有効化」を参照してください。
手順
次のコマンドを実行して、
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: - resource: machinesets apiGroup: machine.openshift.io selection: mode: All2 オプション: 特定のマシンセットのブートイメージ更新機能を設定します。
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
検証
次のコマンドを実行してブートイメージのバージョンを取得します。
$ 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/rhcos-416-92-202402201450-0-gcp-x86-641 # ...- 1
- このブートイメージは、現在の OpenShift Container Platform バージョンと同じです。
6.3.2.1. ブートイメージ更新の無効化 リンクのコピーリンクがクリップボードにコピーされました!
ブートイメージ管理機能を無効にすることで、Machine Config Operator (MCO) が対象となるマシンセットのブートイメージを管理または更新しなくなります。たとえば、変更したくないカスタムブートイメージを使用するために、ワーカーノードに対してこの機能を無効化できます。
新しいブートイメージバージョンでいくつかのノードが作成された後にこの機能を無効にすると、既存のノードは現在のブートイメージを保持します。この機能をオフにしても、ノードまたはマシンセットは元々インストールされたブートイメージにロールバックされません。マシンセットは、機能が有効になったときに存在していたブートイメージバージョンを保持し、今後クラスターが新しい OpenShift Container Platform バージョンにアップグレードされても再度更新されません。
手順
MachineConfigurationオブジェクトを編集して、ブートイメージ更新を無効にします。$ oc edit MachineConfiguration clustermachineManagersパラメーターを空の配列にします。apiVersion: operator.openshift.io/v1 kind: MachineConfiguration metadata: name: cluster namespace: openshift-machine-config-operator spec: # ... managedBootImages: machineManagers: []machineManagersの下にリストされているパラメーターを削除し、[]文字を追加してブートイメージの更新を無効にします。