16.3.3. Lifecycle Agent を使用したイメージベースアップグレードの Rollback ステージへの移行
Lifecycle Agent は、再起動後、initMonitorTimeoutSeconds フィールドで指定された時間内にアップグレードが完了しない場合、自動的にロールバックを開始します。以下の例を参照してください。
apiVersion: lca.openshift.io/v1
kind: ImageBasedUpgrade
metadata:
name: upgrade
spec:
stage: Idle
seedImageRef:
version: 4.15.2
image: <seed_container_image>
autoRollbackOnFailure: {}
# initMonitorTimeoutSeconds: <initMonitorTimeoutSeconds>
# ...
ここでは、以下のようになります。
<initMonitorTimeoutSeconds>-
オプション: ロールバックする時間枠 (秒単位)。最初の再起動後、この時間枠内にアップグレードが完了しないと、ロールバックが実行されます。定義されていない場合、または
0に設定されている場合、Lifecycle Agent はデフォルト値の1800秒 (30 分) を使用します。
アップグレード後に解決できない問題が発生した場合は、手動で変更を元に戻すことができます。
前提条件
-
cluster-admin権限を持つユーザーとしてハブクラスターにログインしている。 - 元の stateroot 上のコントロールプレーン証明書が有効であることを確認した。証明書の有効期限が切れている場合は、「コントロールプレーン証明書の期限切れの状態からのリカバリー」を参照してください。
たとえば、テスト目的で最近インストールしたシングルノードの OpenShift クラスターをアップグレードする場合、ロールバックできる期間は 24 時間以内という制限があります。ImageBasedUpgrade カスタムリソースの rollbackAvailabilityExpiration フィールドを確認することで、ロールバック時間を検証できます。
手順
Rollback ステージに移行するには、次のコマンドを実行して、
ImageBasedUpgradeCR のstageフィールドの値をRollbackにパッチします。$ oc patch imagebasedupgrades.lca.openshift.io upgrade -p='{"spec": {"stage": "Rollback"}}' --type=mergeLifecycle Agent は、以前にインストールされたバージョンの OpenShift Container Platform を使用してクラスターを再起動し、アプリケーションを復元します。
変更内容を確認した後、次のコマンドを実行して
ImageBasedUpgradeCR のstageフィールドの値をIdleにパッチすることで、ロールバックを完了します。$ oc patch imagebasedupgrades.lca.openshift.io upgrade -p='{"spec": {"stage": "Idle"}}' --type=merge -n openshift-lifecycle-agent警告ロールバック後に
アイドル状態に移行すると、Lifecycle Agent は、失敗したアップグレードのトラブルシューティングに使用できるリソースをクリーンアップします。