第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 Disruption Budget を使用してアプリケーションを設定している場合は、更新プロセス中に中断が発生する可能性があります。
PodDisruptionBudgetでminAvailableが 1 に設定されている場合、保留中のマシン設定を適用するために、ノードの drain (Pod の退避) が実行され、退避プロセスがブロックされる可能性があります。複数のノードが再起動すると、すべての Pod が 1 つのノードだけで実行される可能性があり、PodDisruptionBudgetフィールドによってノードの drain が防止される可能性があります。
- 更新が完了しなかった場合、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-apiCopy 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 recommendCopy 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.20Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要実稼働クラスターの場合、
stable-*、eus-*またはfast-*チャネルにサブスクライブする必要があります。注記次のマイナーバージョンに移行する準備ができたら、そのマイナーバージョンに対応するチャネルを選択します。更新チャネルの宣言が早ければ早いほど、クラスターはターゲットバージョンへの更新パスをより効果的に推奨できます。クラスターが利用可能なすべての更新を評価し、選択できる最適な更新の推奨事項を提供するまでに、しばらく時間がかかる場合があります。更新の推奨事項は、その時点で利用可能な更新オプションに基づいているため、時間の経過とともに変化する可能性があります。
ターゲットマイナーバージョンへの更新パスが表示されない場合は、次のマイナーバージョンがパスで利用可能になるまで、現在のバージョンの最新のパッチリリースにクラスターを更新し続けます。
更新を適用します。
最新バージョンに更新するには、以下を実行します。
oc adm upgrade --to-latest=true
$ oc adm upgrade --to-latest=true1 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 statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記更新をリアルタイムで監視するには、
watchユーティリティーでoc adm upgrade statusを実行してください。更新が完了したら、クラスターのバージョンが新たなバージョンに更新されていることを確認できます。
oc adm upgrade
$ oc adm upgradeCopy 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 nodesCopy 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 コマンドからステータス情報を切り離し、コントロールプレーンやワーカーノードの更新のステータスなど、クラスターの更新に関する特定の情報を得ることができます。ワーカーノードはコンピュートノードとも呼ばれます。
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 がこのセクションに複数回表示される場合や、まったく表示されない場合があることに注意してください。このセクションは、クラスター Operator の更新が検出された場合にのみ表示されます。更新中、一定期間にわたりクラスター Operator の更新が見られなくても、それは正常です。実行されるすべてのアクションが、観測可能な更新中のクラスター Operator に割り当てられるわけではないからです。-
ワーカーノードの更新: ワーカーノードの更新情報を表示します。ワーカーノードセクションは、クラスターに設定されている各ワーカープールに関する情報の概要を表示する表から始まります。空でないワーカープールの各出力には、そのプールに属するノードに関する更新情報をリスト表示した専用の表が表示されます。クラスターにワーカーノードがない場合、出力にワーカーノードセクションは含まれません。
--details=nodesまたは--details=allを使用すると、ノードの表にすべての行を表示できます。 -
ヘルスインサイト: 進行中の更新に関連する可能性のあるクラスター内の状態とイベントに関する詳細情報を表示します。
--details=healthを使用すると、このセクションの項目を、ドキュメントリンク、より長い形式の説明、詳細情報に関係するクラスターリソースなど、より多くの内容を含む詳細な形式に拡張できます。
oc adm upgrade status コマンドは、現在 Hosted Control Plane クラスターではサポートされていません。
以下は、更新が正常に進行中の場合に表示される出力の例です。
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=mergeCopy to Clipboard Copied! Toggle word wrap Toggle overflow <update-server-url>変数は、更新サーバーの URL を指定します。出力例
clusterversion.config.openshift.io/version patched
clusterversion.config.openshift.io/version patchedCopy to Clipboard Copied! Toggle word wrap Toggle overflow