第3章 クラスターの更新の実行
3.1. CLI を使用したクラスターの更新 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift CLI (oc
) を使用して、OpenShift Container Platform クラスターでマイナーバージョンおよびパッチの更新を実行できます。
3.1.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
-
admin
権限を持つユーザーとしてクラスターにアクセスできる。RBAC の使用によるパーミッションの定義および適用 を参照してください。 - 更新が失敗し、クラスターを以前の状態に復元する 必要がある場合に、最新の etcd バックアップ があること。
- Pod の障害が原因で永続ボリュームを復元する必要がある場合に備えて、最新の Container Storage Interface (CSI)ボリュームスナップショット がある。
- RHEL7 ワーカーは、RHEL8 または RHCOS ワーカーに置き換えられます。Red Hat は、RHEL7 から RHEL8 への RHEL ワーカーのインプレース更新をサポートしていません。このようなホストは、オペレーティングシステムをクリーンインストールして置き換える必要があります。
- Operator Lifecycle Manager (OLM) を通じて以前にインストールされたすべての Operator を、ターゲットリリースと互換性のあるバージョンに更新している。Operator を更新することで、デフォルトのソフトウェアカタログが、クラスターの更新時に現行のマイナーバージョンから次のマイナーバージョンに切り替わる際、確実に有効な更新パスがあるようにします。互換性を確認する方法や、必要に応じて インストールされた Operator を更新する方法についての 詳細は、インストールされた Operator の更新 を参照してください。
- すべてのマシン設定プール (MCP) が実行中であり、一時停止していないことを確認します。一時停止した MCP に関連付けられたノードは、更新プロセス中にスキップされます。カナリアロールアウト更新ストラテジーを実行している場合は、MCP を一時停止できる。
- クラスターが手動で維持された認証情報を使用している場合は、新しいリリース用にクラウドプロバイダーリソースを更新します。これがクラスターの要件かどうかを判断する方法などの詳細は、手動で維持された認証情報でクラスターを更新する準備 を参照してください。
-
クラスターで次のマイナーバージョンへの更新ができるように、すべての
Upgradeable=False
条件に対応してください。アラートは、アップグレードできない 1 つ以上のクラスター Operator がある場合に Cluster Settings ページの上部に表示されます。引き続き、現在使用しているマイナーリリースについて、次に利用可能なパッチ更新に更新できます。 -
Operator を実行している場合、または Pod 中断バジェットを使用してアプリケーションを設定している場合は、更新プロセス中に中断が発生する可能性があります。
PodDisruptionBudget
でminAvailable
が 1 に設定されている場合、保留中のマシン設定を適用するためにノードがドレインされ、エビクションプロセスがブロックされる可能性があります。複数のノードが再起動された場合に、すべての Pod が 1 つのノードでのみ実行される可能性があり、PodDisruptionBudget
フィールドはノードのドレインを防ぐことができます。
- 更新が完了しなかった場合、Cluster Version Operator (CVO) は、更新の調整を試みている間、ブロックしているコンポーネントのステータスを報告します。クラスターの以前のバージョンへのロールバックはサポートされていません。更新が完了しない場合は、Red Hat サポートにお問い合わせください。
-
unsupportedConfigOverrides
セクションを使用して Operator の設定を変更することはサポートされておらず、クラスターの更新をブロックする可能性があります。クラスターを更新する前に、この設定を削除する必要があります。
3.1.2. MachineHealthCheck リソースの一時停止 リンクのコピーリンクがクリップボードにコピーされました!
更新プロセスで、クラスター内のノードが一時的に利用できなくなる可能性があります。ワーカーノードの場合、MachineHealthCheck
リソースにより、このようなノードは正常ではないと識別され、それらが再起動される場合があります。このようなノードの再起動を回避するには、クラスターを更新する前にすべての MachineHealthCheck
リソースを一時停止します。
一部の MachineHealthCheck
リソースは一時停止する必要がない場合があります。MachineHealthCheck
リソースが回復不可能な条件に依存している場合は、その MHC を一時停止する必要はありません。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。
手順
一時停止する利用可能なすべての
MachineHealthCheck
リソースをリスト表示するには、以下のコマンドを実行します。oc get machinehealthcheck -n openshift-machine-api
$ oc get machinehealthcheck -n openshift-machine-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow マシンヘルスチェックを一時停止するには、
cluster.x-k8s.io/paused=""
アノテーションをMachineHealthCheck
リソースに追加します。以下のコマンドを実行します。oc -n openshift-machine-api annotate mhc <mhc-name> cluster.x-k8s.io/paused=""
$ oc -n openshift-machine-api annotate mhc <mhc-name> cluster.x-k8s.io/paused=""
Copy to Clipboard Copied! Toggle word wrap Toggle overflow アノテーション付きの
MachineHealthCheck
リソースは以下の YAML ファイルのようになります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要クラスターの更新後にマシンヘルスチェックを再開します。チェックを再開するには、以下のコマンドを実行して
MachineHealthCheck
リソースから pause アノテーションを削除します。oc -n openshift-machine-api annotate mhc <mhc-name> cluster.x-k8s.io/paused-
$ oc -n openshift-machine-api annotate mhc <mhc-name> cluster.x-k8s.io/paused-
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.3. 単一ノードの OpenShift Container Platform の更新 リンクのコピーリンクがクリップボードにコピーされました!
コンソールまたは CLI のいずれかを使用して、単一ノードの OpenShift Container Platform クラスターを更新またはアップグレードできます。
ただし、以下の制限事項に注意してください。
-
他にヘルスチェックを実行するノードがないので、
MachineHealthCheck
リソースを一時停止する時に課される前提条件は必要ありません。 - etcd バックアップを使用した単一ノードの OpenShift Container Platform クラスターの復元は、正式にはサポートされていません。ただし、更新に失敗した場合は、etcd バックアップを実行することが推奨されます。コントロールプレーンが正常である場合には、バックアップを使用してクラスターを以前の状態に復元できる場合があります。
単一ノードの OpenShift Container Platform クラスターを更新するには、ダウンタイムが必要です。更新には、自動再起動も含まれる可能性があります。ダウンタイムの時間は、以下のシナリオのように更新ペイロードによって異なります。
- 更新ペイロードに再起動が必要なオペレーティングシステムの更新が含まれる場合には、ダウンタイムは、クラスター管理およびユーザーのワークロードに大きく影響します。
- 更新に含まれるマシン設定の変更で、再起動の必要がない場合には、ダウンタイムは少なくなり、クラスター管理およびユーザーワークロードへの影響は低くなります。この場合、クラスターに、ワークロードの再スケジューリングするノードが他にないため、単一ノードの OpenShift Container Platform でノードのドレイン (解放) のステップが省略されます。
- 更新ペイロードにオペレーティングシステムの更新またはマシン設定の変更が含まれていない場合は、API が短時間してすぐに解決します。
更新パッケージのバグなどの制約があり、再起動後に単一ノードが再起動されないことがあります。この場合、更新は自動的にロールバックされません。
3.1.4. CLI を使用したクラスターの更新 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift CLI (oc
) を使用して、クラスターの更新を確認および要求できます。
利用可能な OpenShift Container Platform アドバイザリーおよび更新は、カスタマーポータルの エラータ のセクションを参照してください。
前提条件
-
仕様している更新バージョンのバージョンに一致する OpenShift CLI (
oc
) をインストールしている。 -
cluster-admin
権限を持つユーザーとしてクラスターにログインしている。 -
すべての
MachineHealthCheck
リソースを一時停止している。
手順
利用可能な更新を確認し、適用する必要のある更新のバージョン番号をメモします。
oc adm upgrade recommend
$ oc adm upgrade recommend
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記-
この--
version
フラグを使用して、特定のバージョンが更新に推奨されているかどうかを判断できます。推奨される更新がない場合でも、既知の問題がある更新がまだ利用できる可能性があります。 -
Control Plane Only
の更新を実行する方法の詳細情報は、関連情報セクションに記載されている コントロールプレーンのみの更新を実行するための準備 ページを参照してください。
-
この--
組織の要件に基づいて、適切な更新チャネルを設定します。たとえば、チャネルを
stable-4.13
またはfast-4.13
に設定できます。チャネルの詳細は、追加リソースセクションにリストされている 更新チャネルとリリースについて を参照してください。oc adm upgrade channel <channel>
$ oc adm upgrade channel <channel>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow たとえば、チャネルを
stable-4.20
に設定するには、以下を実行します。oc adm upgrade channel stable-4.20
$ oc adm upgrade channel stable-4.20
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要実稼働クラスターの場合、
stable-*
、eus-*
またはfast-*
チャネルにサブスクライブする必要があります。注記次のマイナーバージョンに移行する準備ができたら、そのマイナーバージョンに対応するチャネルを選択します。更新チャネルの宣言が早ければ早いほど、クラスターはターゲットバージョンへの更新パスをより効果的に推奨できます。クラスターは、利用可能なすべての可能な更新プログラムを評価し、最適な更新プログラムの推奨事項を選択するために、しばらく時間がかかる場合があります。更新の推奨事項は、その時点で利用可能な更新オプションに基づいているため、時間の経過とともに変化する可能性があります。
ターゲットマイナーバージョンへの更新パスが表示されない場合は、次のマイナーバージョンがパスで利用可能になるまで、現在のバージョンの最新のパッチリリースにクラスターを更新し続けます。
更新を適用します。
最新バージョンに更新するには、以下を実行します。
oc adm upgrade --to-latest=true
$ oc adm upgrade --to-latest=true
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 特定のバージョンに更新するには、以下を実行します。
oc adm upgrade --to=<version>
$ oc adm upgrade --to=<version>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1 1
<version
> は、oc adm upgrade recommend
コマンドの出力から取得した更新バージョンです。クラスター管理者が潜在的な既知のリスクを評価し、それが現在のクラスターに受け入れられると判断した場合、管理者は次のコマンドを実行して安全ガードを放棄し、更新に進むことができます。
oc adm upgrade --allow-not-recommended --to <version>
$ oc adm upgrade --allow-not-recommended --to <version>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要oc adm upgrade --help
を使用する場合、--force
のオプションがリストされています。これは、強く非推奨 とされています。--force
オプションを使用すると、リリースの検証や前提条件のチェックなど、クラスター側の保護機能をバイパスしてしまうためです。--force
を使用しても、更新が成功することは保証されません。ガードをバイパスすると、クラスターが危険にさらされます。
オプション:次のコマンドを実行して、Cluster Version Operator のステータスを確認します。
oc adm upgrade status
$ oc adm upgrade status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記更新をリアルタイムで監視するには、
watch
ユーティリティーでoc adm upgrade status
を実行します。更新が完了したら、クラスターのバージョンが新たなバージョンに更新されていることを確認できます。
oc adm upgrade
$ oc adm upgrade
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターを次のマイナーバージョン (バージョン X.y から X.(y+1) など) に更新する場合は、新しい機能に依存するワークロードをデプロイする前に、ノードが更新されていることを確認することが推奨されます。
oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.5. oc adm upgrade status を使用したクラスター更新ステータス リンクのコピーリンクがクリップボードにコピーされました!
クラスターの更新時に、oc adm upgrade
コマンドは更新のステータスに関する制限された情報を返します。クラスター管理者は oc adm upgrade status
コマンドを使用してステータス情報を oc adm upgrade
コマンドから切り離し、コントロールプレーンとワーカーノードの更新のステータスなど、クラスターの更新に関する特定の情報を返すことができます。worker はコンピュートとも呼ばれます。
oc adm upgrade status
コマンドは読み取り専用で、クラスターの状態は変更されません。
oc adm upgrade status
コマンドは、バージョン 4.12 から最新のサポートされているリリースまでのクラスターに使用できます。
oc adm upgrade status
コマンドは、3 つのセクション(コントロールプレーンの更新、ワーカーノードの更新、およびヘルスインサイト)を出力します。
コントロールプレーン の更新: クラスターの更新に関する詳細を表示します。これには、高レベルの評価、完了ステータス、期間の推定時間、またはクラスター Operator の正常性が含まれます。このセクションには、コントロールプレーンノードの更新情報が記載された表も表示されます。
コントロールプレーンの更新セクションには、
--details=operators
フラグまたは--details-all
フラグが使用されている場合に、更新中のクラスター Operator をリストする追加のテーブルも表示できます。OpenShift Container Platform の非同期分散性質により、更新中にこのセクションに Operator を複数回表示される場合や、全く表示されない場合があることに注意してください。このセクションは、Cluster Operator の更新が確認された場合にのみ表示されます。通常、特定の期間に Cluster Operator の更新がないことを確認するのは、通常です。実行されたすべてのアクションが監視可能な更新 Cluster Operator に割り当てられるわけではありません。-
ワーカーノートの更新: ワーカーノードの更新情報を表示します。ワーカーノードセクションは、クラスターに設定される各ワーカープールに関する情報の概要を表示する表で始まります。空でないワーカープールの出力には、そのプールに属するノードに関する専用のテーブルリストの更新情報が表示されます。クラスターにワーカーノードがない場合、出力にはワーカーノードセクションは含まれません。ノードテーブルにはすべての行を表示するには、
--details=nodes
または--details=all
を使用します。 -
ヘルス Insights: 進行中の更新に関連する可能性のあるクラスターに存在する状態とイベントに関する洞察を表示します。use--
details=health
を使用して、このセクションの項目を、ドキュメントリンク、より長いフォームの説明、または洞察に関連するクラスターリソースなど、より詳細な形式に展開できます。
oc adm upgrade status
コマンドは、現在ホストされたコントロールプレーンクラスターではサポートされていません。
以下は、更新の進捗が正常に進行することを示す出力の例です。
3.1.6. CLI を使用した更新サーバーの変更 リンクのコピーリンクがクリップボードにコピーされました!
更新サーバーの変更は任意です。OpenShift Update Service (OSUS) がローカルにインストールされ、設定されている場合は、更新時にローカルサーバーを使用できるようにサーバーの URL を upstream
として設定する必要があります。upstream
のデフォルト値は https://api.openshift.com/api/upgrades_info/v1/graph
です。
手順
クラスターバージョンで
upstream
パラメーター値を変更します。oc patch clusterversion/version --patch '{"spec":{"upstream":"<update-server-url>"}}' --type=merge
$ oc patch clusterversion/version --patch '{"spec":{"upstream":"<update-server-url>"}}' --type=merge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <update-server-url>
変数は、更新サーバーの URL を指定します。出力例
clusterversion.config.openshift.io/version patched
clusterversion.config.openshift.io/version patched
Copy to Clipboard Copied! Toggle word wrap Toggle overflow