第3章 クラスターの更新の実行
3.1. CLI を使用したクラスターの更新 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift CLI (oc) を使用して、OpenShift Container Platform クラスターでマイナーバージョンおよびパッチの更新を実行できます。
3.1.1. 単一ノードの OpenShift Container Platform の更新 リンクのコピーリンクがクリップボードにコピーされました!
コンソールまたは CLI のいずれかを使用して、シングルノードの OpenShift Container Platform クラスターを更新できます。
ただし、以下の制限事項に注意してください。
-
他にヘルスチェックを実行するノードがないので、
MachineHealthCheckリソースを一時停止する時に課される前提条件は必要ありません。 - etcd バックアップを使用した単一ノードの OpenShift Container Platform クラスターの復元は、正式にはサポートされていません。ただし、更新に失敗した場合は、etcd バックアップを実行することが推奨されます。コントロールプレーンが正常である場合には、バックアップを使用してクラスターを以前の状態に復元できる場合があります。
単一ノードの OpenShift Container Platform クラスターを更新するには、ダウンタイムが必要です。更新には、自動再起動も含まれる可能性があります。ダウンタイムの時間は、以下のシナリオのように更新ペイロードによって異なります。
- 更新ペイロードに再起動が必要なオペレーティングシステムの更新が含まれる場合には、ダウンタイムは、クラスター管理およびユーザーのワークロードに大きく影響します。
- 更新に含まれるマシン設定の変更で、再起動の必要がない場合には、ダウンタイムは少なくなり、クラスター管理およびユーザーワークロードへの影響は低くなります。この場合、クラスターに、ワークロードの再スケジューリングするノードが他にないため、単一ノードの OpenShift Container Platform でノードのドレイン (解放) のステップが省略されます。
- 更新ペイロードにオペレーティングシステムの更新またはマシン設定の変更が含まれていない場合は、API が短時間してすぐに解決します。
更新パッケージのバグなどの制約があり、再起動後に単一ノードが再起動されないことがあります。この場合、更新は自動的にロールバックされません。
3.1.2. クラスター更新の前提条件 リンクのコピーリンクがクリップボードにコピーされました!
CLI を使用してクラスターを更新する前に、以下の前提条件を満たす必要があります。
-
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.3. MachineHealthCheck リソースの一時停止 リンクのコピーリンクがクリップボードにコピーされました!
更新プロセスで、クラスター内のノードが一時的に利用できなくなる可能性があります。ワーカーノードの場合、MachineHealthCheck リソースは、そのようなノードを異常と判断して再起動する可能性があります。ワーカーノードの再起動を回避するには、クラスターを更新する前に、すべての MachineHealthCheck リソースを一時停止する必要があります。
一部の MachineHealthCheck リソースは一時停止する必要がない場合があります。MachineHealthCheck リソースが回復不可能な条件に依存している場合は、その MHC を一時停止する必要はありません。
前提条件
-
OpenShift CLI (
oc) がインストールされている。
手順
次のコマンドを実行して、一時停止したい利用可能な
MachineHealthCheckリソースをすべてリスト表示します。$ oc get machinehealthcheck -n openshift-machine-api各
MachineHealthCheckリソースに対して、次のコマンドを実行してマシンのヘルスチェックを一時停止します。$ oc -n openshift-machine-api annotate mhc <mhc_name> cluster.x-k8s.io/paused=""アノテーション付きの
MachineHealthCheckリソースは以下の YAML ファイルのようになります。apiVersion: machine.openshift.io/v1beta1 kind: MachineHealthCheck metadata: name: example namespace: openshift-machine-api annotations: cluster.x-k8s.io/paused: "" spec: selector: matchLabels: role: worker unhealthyConditions: - type: "Ready" status: "Unknown" timeout: "300s" - type: "Ready" status: "False" timeout: "300s" maxUnhealthy: "40%" status: currentHealthy: 5 expectedMachines: 5重要クラスターの更新後にマシンヘルスチェックを再開します。チェックを再開するには、以下のコマンドを実行して
MachineHealthCheckリソースから pause アノテーションを削除します。$ oc -n openshift-machine-api annotate mhc <mhc-name> cluster.x-k8s.io/paused-
3.1.4. CLI を使用したクラスターの更新 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift CLI (oc) を使用して、クラスターの更新を確認および要求できます。
利用可能な OpenShift Container Platform アドバイザリーおよび更新は、カスタマーポータルの エラータ のセクションを参照してください。
前提条件
-
更新したバージョンに対応するバージョンの OpenShift CLI(
oc) をインストールしました。 -
あなたは
cluster-admin特権を持つユーザーとしてクラスターにログインしています。 -
MachineHealthCheck のすべてのリソースが一時停止されました。
手順
利用可能なアップデートを確認し、適用したいアップデートのバージョン番号をメモするには、次のコマンドを実行してください。
$ oc adm upgrade recommend出力例
Failing=True: Reason: ClusterOperatorNotAvailable Message: Cluster operator monitoring is not available ... Upstream update service: https://api.integration.openshift.com/api/upgrades_info/graph Channel: candidate-4.16 (available channels: candidate-4.16, candidate-4.17, candidate-4.18, eus-4.16, fast-4.16, fast-4.17, stable-4.16, stable-4.17) Updates to 4.16: VERSION ISSUES 4.16.32 no known issues relevant to this cluster 4.16.30 no known issues relevant to this cluster And 2 older 4.16 updates you can see with '--show-outdated-releases' or '--version VERSION'.注記-
--versionフラグを使用すると、特定のバージョンが更新先として推奨されているかどうかを判断できます。推奨される更新がない場合でも、既知の問題がある更新がまだ利用できる可能性があります。 - コントロールプレーンのみの アップデートを実行する方法の詳細は、コントロールプレーンのみのアップデートの実行を参照してください。
-
組織の要件に基づいて、次のコマンドを実行して適切な更新チャネルを設定してください。たとえば、チャネルを
stable-4.13またはfast-4.13に設定できます。チャネルの詳細は、更新チャネルとリリースについてを参照してください。$ oc adm upgrade channel <channel>コマンドの例
$ oc adm upgrade channel stable-4.20重要実稼働クラスターの場合、
stable-*、eus-*またはfast-*チャネルにサブスクライブする必要があります。注記次のマイナーバージョンに移行する準備ができたら、そのマイナーバージョンに対応するチャネルを選択します。更新チャネルを早く宣言すればするほど、クラスターはターゲットバージョンへの更新パスをより効果的に推奨できるようになります。クラスターが利用可能なすべての更新を評価し、選択できる最適な更新の推奨事項を提供するまでに、しばらく時間がかかる場合があります。更新の推奨事項は、その時点で利用可能な更新オプションに基づいているため、時間の経過とともに変化する可能性があります。
ターゲットマイナーバージョンへの更新パスが表示されない場合は、次のマイナーバージョンがパスで利用可能になるまで、現在のバージョンの最新のパッチリリースにクラスターを更新し続けます。
更新を適用します。
最新バージョンにアップデートするには、次のコマンドを実行してください。
$ oc adm upgrade --to-latest=true特定のバージョンにアップデートするには、次のコマンドを実行してください。
$ oc adm upgrade --to=<version><version> を、oc adm upgrade recommendコマンドの出力から取得した更新バージョンに置き換えてください。重要oc adm upgrade --helpコマンドを使用すると、--forceフラグのオプションが表示されます。これは、強く非推奨 とされています。--forceオプションを使用すると、リリースの検証や前提条件のチェックなど、クラスター側の保護機能をバイパスしてしまうためです。--forceフラグを使用しても、アップデートが必ず成功するとは限りません。ガードをバイパスすると、クラスターが危険にさらされます。
クラスター管理者が潜在的な既知のリスクを評価し、そのリスクが現在のクラスターにおいて許容可能であると判断した場合、管理者は安全保護を解除し、次のコマンドを実行して更新を続行できます。
$ oc adm upgrade --allow-not-recommended --to <version>オプション: 次のコマンドを実行して、Cluster Version Operator のステータスを確認します。
$ oc adm upgrade status注記更新をリアルタイムで監視するには、
watchユーティリティーでoc adm upgrade statusを実行してください。アップデートが完了したら、次のコマンドを実行して、クラスターのバージョンが新しいバージョンに更新されていることを確認してください。
$ oc adm upgrade出力例
Cluster version is <version> Upstream is unset, so the cluster will use an appropriate default. Channel: stable-<version> (available channels: candidate-<version>, eus-<version>, fast-<version>, stable-<version>) No updates available. You may force an update to a specific release image, but doing so might not be supported and might result in downtime or data loss.クラスターを次のマイナーバージョン (バージョン Xy から X.(y+1) など) にアップデートする場合は、新機能に依存するワークロードをデプロイする前に、ノードが更新されていることを確認してください。以下のコマンドを実行します。
$ oc get nodes出力例
NAME STATUS ROLES AGE VERSION ip-10-0-168-251.ec2.internal Ready master 82m v1.33.4 ip-10-0-170-223.ec2.internal Ready master 82m v1.33.4 ip-10-0-179-95.ec2.internal Ready worker 70m v1.33.4 ip-10-0-182-134.ec2.internal Ready worker 70m v1.33.4 ip-10-0-211-16.ec2.internal Ready master 82m v1.33.4 ip-10-0-250-100.ec2.internal Ready worker 69m v1.33.4
3.1.5. oc adm upgrade status を使用したクラスター更新ステータス リンクのコピーリンクがクリップボードにコピーされました!
クラスターの更新時に、oc adm upgrade コマンドが返す更新のステータスに関する情報は限定的です。クラスター管理者は、oc adm upgrade status コマンドを使用して、制御プレーンとワーカーノードの更新状況など、クラスターの更新に関する特定の情報を取得できます。ワーカーノードはコンピュートノードとも呼ばれます。
oc adm upgrade status コマンドは読み取り専用で、クラスターの状態は変更されません。
oc adm upgrade status コマンドは、バージョン 4.12 以降のクラスターで使用できます。
oc adm upgrade status コマンドは、コントロールプレーンの更新、ワーカーノードの更新、およびヘルスインサイトの 3 つのセクションを出力します。
- コントロールプレーンのアップデート
更新中のクラスター制御プレーンに関する詳細を表示し、高レベルの評価、完了ステータス、所要時間の見積もり、またはクラスター Operator の状態を示します。このセクションには、コントロールプレーンノードの更新情報を含む表も表示されます。
コントロールプレーンの更新セクションでは、
--details=Operatorsまたは--details-allフラグが使用されている場合、更新されるクラスターオペレータのリストを表示する追加のテーブルも表示できます。OpenShift Container Platform は非同期かつ分散型という特性を持っているため、更新中に Operator がこのセクションに複数回表示される場合や、まったく表示されない場合があることに注意してください。このセクションは、クラスター Operator が更新中であることが確認された場合にのみ表示されます。更新処理中は、一定期間、更新クラスター Operator が表示されないことがありますが、これは正常な動作です。実行されるすべてのアクションが、監視可能な更新クラスター Operator に割り当てられるとは限りません。- 作業員向けメモの更新
-
ワーカーノードの更新情報を表示します。ワーカーノードセクションは、クラスターに設定されている各ワーカープールに関する情報の概要を表示する表から始まります。空でないワーカープールの各出力には、そのプールに属するノードに関する更新情報をリスト表示した専用の表が表示されます。クラスターにワーカーノードが存在しない場合、出力にはワーカーノードのセクションは含まれません。
--details=nodesまたは--details=allフラグを使用すると、ノードテーブルにすべての行を表示できます。 - 健康に関する洞察
-
進行中の更新に関連する可能性のある、クラスター内に存在する状態やイベントに関する洞察を表示します。
--details=healthフラグを使用すると、このセクションの項目を、ドキュメントへのリンク、より詳細なフォームの説明、インサイトに関連するクラスターリソースなど、より多くのコンテンツを含む、より詳細な形式に展開できます。
oc adm upgrade status コマンドは、現在 Hosted Control Plane クラスターではサポートされていません。
以下は、更新が正常に進行中の場合に表示される出力の例です。
= Control Plane =
Assessment: Progressing
Target Version: 4.17.1 (from 4.17.0)
Updating: machine-config
Completion: 97% (32 operators updated, 1 updating, 0 waiting)
Duration: 54m (Est. Time Remaining: <10m)
Operator Status: 32 Healthy, 1 Unavailable
Control Plane Nodes
NAME ASSESSMENT PHASE VERSION EST MESSAGE
ip-10-0-53-40.us-east-2.compute.internal Progressing Draining 4.17.0 +10m
ip-10-0-30-217.us-east-2.compute.internal Outdated Pending 4.17.0 ?
ip-10-0-92-180.us-east-2.compute.internal Outdated Pending 4.17.0 ?
= Worker Upgrade =
WORKER POOL ASSESSMENT COMPLETION STATUS
worker Progressing 0% (0/2) 1 Available, 1 Progressing, 1 Draining
infra Progressing 50% (1/2) 1 Available, 1 Progressing, 1 Draining
Worker Pool Nodes: Worker
NAME ASSESSMENT PHASE VERSION EST MESSAGE
ip-10-0-4-159.us-east-2.compute.internal Progressing Draining 4.17.0 +10m
ip-10-0-99-40.us-east-2.compute.internal Outdated Pending 4.17.0 ?
Worker Pool Nodes: infra
NAME ASSESSMENT PHASE VERSION EST MESSAGE
ip-10-0-4-159-infra.us-east-2.compute.internal Progressing Draining 4.17.0 +10m
ip-10-0-20-162.us-east-2.compute.internal Completed Updated 4.17.1 -
= Update Health =
SINCE LEVEL IMPACT MESSAGE
54m4s Info None Update is proceeding well
3.1.6. CLI を使用した更新サーバーの変更 リンクのコピーリンクがクリップボードにコピーされました!
クラスターが更新パスに関する情報を取得するために使用する更新サーバーを変更できます。
更新サーバーの変更は任意です。OpenShift Update Service (OSUS) がローカルにインストールされ、設定されている場合は、更新時にローカルサーバーを使用できるようにサーバーの URL を upstream として設定する必要があります。upstream のデフォルト値は https://api.openshift.com/api/upgrades_info/v1/graph です。
手順
クラスターバージョンの
アップストリームパラメーター値を変更するには、次のコマンドを実行します。$ oc patch clusterversion/version --patch '{"spec":{"upstream":"<update_server_url>"}}' --type=merge<update_server_url> をアップデートサーバーの URL に置き換えてください。出力例
clusterversion.config.openshift.io/version patched