This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.2.5. トラブルシューティング
移行用のカスタムリソース (CR) を表示し、ログをダウンロードして失敗した移行の失敗についてのトラブルシューティングを行うことができます。
移行の失敗時にアプリケーションが停止した場合は、データ破損を防ぐために手作業でアプリケーションをロールバックする必要があります。
移行時にアプリケーションが停止しなかった場合には、手動のロールバックは必要ありません。元のアプリケーションがソースクラスター上で依然として実行されているためです。
2.5.1. 移行カスタムリソース (CR) の表示 リンクのコピーリンクがクリップボードにコピーされました!
Cluster Application Migration (CAM) ツールは移行用に以下の CR を作成します。
MigCluster (設定、 CAM クラスター): クラスター定義
MigStorage (設定、CAM クラスター): ストレージ定義
MigPlan (設定、CAM クラスター): 移行計画
MigPlan CR は移行されるソースおよびターゲットクラスター、リポジトリー、および namespace を記述します。これは 0、1 または多数の MigMigration CR に関連付けられます。
MigPlan CR を削除すると、関連付けられた MigMigration CR が削除されます。
BackupStorageLocation (設定、CAM クラスター): Velero バックアップオブジェクトの場所
VolumeSnapshotLocation (設定、CAM クラスター): ボリュームスナップショットの場所
MigMigration (アクション、CAM クラスター): 移行、移行時に作成される
MigMigration CR は、データのステージングまたは移行を実行するたびに作成されます。各 MigMigration CR は MigPlan CR に関連付けられます。
Backup (アクション、ソースクラスター): 移行計画の実行時に、MigMigration CR は各ソースクラスターに 2 つの Velero バックアップ CR を作成します。
- Kubernetes オブジェクトのバックアップ CR #1
- PV データのバックアップ CR #2
Restore (アクション、ターゲットクラスター): 移行計画の実行時に、MigMigration CR はターゲットクラスターに 2 つのリストア CR を作成します。
- PV データのリストア CR #1 (バックアップ CR #2 の使用)
- Kubernetes オブジェクトのリストア CR #2 (バックアップ CR #1 の使用)
手順
CR 名を取得します。
oc get <cr> -n openshift-migration
$ oc get <cr> -n openshift-migration
1 NAME AGE 88435fe0-c9f8-11e9-85e6-5d593ce65e10 6m42s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 表示する移行 CR を指定します。
CR を表示します。
oc describe <cr> 88435fe0-c9f8-11e9-85e6-5d593ce65e10 -n openshift-migration
$ oc describe <cr> 88435fe0-c9f8-11e9-85e6-5d593ce65e10 -n openshift-migration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力は以下の例のようになります。
MigMigration の例
Velero バックアップ CR #2 の例 (PV データ)
Velero リストア CR #2 の例 (Kubernetes リソース)
2.5.2. 移行ログのダウンロード リンクのコピーリンクがクリップボードにコピーされました!
CAM Web コンソールで Velero、Restic、および Migration コントローラーログをダウンロードして、移行の失敗についてのトラブルシューティングを行うことができます。
手順
- CAM Web コンソールにログインします。
- Plans をクリックし、 移行計画の一覧を表示します。
-
Options メニュー
をクリックし (特定の移行計画について)、Logs を選択します。
- Download Logs をクリックし、すべてのクラスターの Migration コントローラー、Velero、および Restic のログをダウンロードします。
特定のログをダウンロードするには、以下を実行します。
ログオプションを指定します。
- Cluster: ソース、ターゲット、または CAM ホストクラスターを選択します。
- Log source: Velero、Restic、または Controller を選択します。
Pod source: Pod 名を選択します (例:
controller-manager-78c469849c-v6wcf
)。選択したログが表示されます。
選択した内容を変更することで、ログ選択の設定をクリアできます。
- Download Selected をクリックし、選択したログをダウンロードします。
オプションで、以下の例にあるように CLI を使用してログにアクセスできます。
oc get pods -n openshift-migration | grep controller oc logs controller-manager-78c469849c-v6wcf -f -n openshift-migration
$ oc get pods -n openshift-migration | grep controller
controller-manager-78c469849c-v6wcf 1/1 Running 0 4h49m
$ oc logs controller-manager-78c469849c-v6wcf -f -n openshift-migration
2.5.3. Restic タイムアウトエラー リンクのコピーリンクがクリップボードにコピーされました!
Restic のタイムアウトにより移行が失敗する場合、以下のエラーが Velero ログに表示されます。
level=error msg="Error backing up item" backup=velero/monitoring error="timed out waiting for all PodVolumeBackups to complete" error.file="/go/src/github.com/heptio/velero/pkg/restic/backupper.go:165" error.function="github.com/heptio/velero/pkg/restic.(*backupper).BackupPodVolumes" group=v1
level=error msg="Error backing up item" backup=velero/monitoring error="timed out waiting for all PodVolumeBackups to complete" error.file="/go/src/github.com/heptio/velero/pkg/restic/backupper.go:165" error.function="github.com/heptio/velero/pkg/restic.(*backupper).BackupPodVolumes" group=v1
restic_timeout
のデフォルト値は 1 時間です。大規模な移行では、この値を大きくすることができます。値を高くすると、エラーメッセージが返されるタイミングが送れる可能性があることに注意してください。
手順
-
OpenShift Container Platform Web コンソールで、Operators
Installed Operators に移動します。 - Cluster Application Migration Operator をクリックします。
- MigrationController タブで、migration-controller をクリックします。
YAML タブで、以下のパラメーター値を更新します。
spec: restic_timeout: 1h
spec: restic_timeout: 1h
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 有効な単位は
h
(時間)、m
(分)、およびs
(秒) です (例:3h30m15s
)。
- Save をクリックします。
2.5.4. 移行の手動ロールバック リンクのコピーリンクがクリップボードにコピーされました!
移行の失敗時にアプリケーションが停止された場合は、PV でのデータの破損を防ぐために手動でこれをロールバックする必要があります。
移行時にアプリケーションが停止しなかった場合には、この手順は必要ありません。元のアプリケーションがソースクラスター上で依然として実行されているためです。
手順
ターゲットクラスター上で、移行したプロジェクトに切り替えます。
oc project <project>
$ oc project <project>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow デプロイされたリソースを取得します。
oc get all
$ oc get all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow デプロイされたリソースを削除し、アプリケーションがターゲットクラスターで実行されておらず、PVC 上にあるデータにアクセスできるようにします。
oc delete <resource_type>
$ oc delete <resource_type>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これを削除せずに DaemonSet を停止するには、YAML ファイルで
nodeSelector
を更新します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- いずれのノードにも存在しない
nodeSelector
値を指定します。
不要なデータが削除されるように、各 PV の回収ポリシーを更新します。移行時に、バインドされた PV の回収ポリシーは
Retain
であり、アプリケーションがソースクラスターから削除される際にデータの損失が生じないようにされます。ロールバック時にこれらの PV を削除できます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
Recycle
またはDelete
を指定します。
ソースクラスターで、移行したプロジェクトに切り替え、そのデプロイされたリソースを取得します。
oc project <project> oc get all
$ oc project <project> $ oc get all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow デプロイされた各リソースのレプリカを開始します。
oc scale --replicas=1 <resource_type>/<resource_name>
$ oc scale --replicas=1 <resource_type>/<resource_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
手順の実行時に変更した場合は、DaemonSet の
nodeSelector
を元の値に更新します。
2.5.5. カスタマーサポートケース用のデータの収集 リンクのコピーリンクがクリップボードにコピーされました!
カスタマーサポートケースを作成する場合、 openshift-migration-must-gather-rhel8
イメージを使用して must-gather
ツールを実行し、クラスターについての情報を収集し、これを Red Hat カスタマーポータルにアップロードできます。
openshift-migration-must-gather-rhel8
イメージは、デフォルトの must-gather
イメージで収集されないログおよびカスタムリソースデータを収集します。
手順
-
must-gather
データを保存するディレクトリーに移動します。 oc adm must-gather
コマンドを実行します。oc adm must-gather --image=registry.redhat.io/rhcam-1-2/openshift-migration-must-gather-rhel8
$ oc adm must-gather --image=registry.redhat.io/rhcam-1-2/openshift-migration-must-gather-rhel8
Copy to Clipboard Copied! Toggle word wrap Toggle overflow must-gather
ツールはクラスター情報を収集し、これをmust-gather.local.<uid>
ディレクトリーに保存します。-
認証キーおよびその他の機密情報を
must-gather
データから削除します。 must-gather.local.<uid>
ディレクトリーの内容を含むアーカイブファイルを作成します。tar cvaf must-gather.tar.gz must-gather.local.<uid>/
$ tar cvaf must-gather.tar.gz must-gather.local.<uid>/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 圧縮ファイルを Red Hat カスタマーポータル上のサポートケースに添付します。
2.5.6. 既知の問題 リンクのコピーリンクがクリップボードにコピーされました!
本リリースには、以下の既知の問題があります。
移行中に、CAM ツールは以下の namespace アノテーションを保持します。
-
openshift.io/sa.scc.mcs
-
openshift.io/sa.scc.supplemental-groups
openshift.io/sa.scc.uid-range
これらのアノテーションは UID 範囲を保持し、コンテナーがターゲットクラスターのファイルシステムのパーミッションを保持できるようにします。移行された UID が、ターゲットクラスターの既存の namespace または今後の namespace 内の UID を重複させるリスクがあります。(BZ#1748440)
-
-
S3 エンドポイントを CAM Web コンソールに追加する場合、
https://
は AWS でのみサポートされます。他の S3 プロバイダーの場合はhttp://
を使用します。 -
AWS バケットが CAM Web コンソールに追加された後に削除される場合、MigStorage CR は更新されないため、そのステータスは
True
のままになります。(BZ#1738564) -
Migration コントローラーが、ターゲットクラスター以外のクラスターで実行されている場合は移行に失敗します。
EnsureCloudSecretPropagated
フェーズはログに記録された警告を出して省略されます。(BZ#1757571) - クラスターのロールバインディングおよび SCC (Security Context Constraints) を含むクラスタースコープのリソースは CAM によって処理されません。アプリケーションがクラスタースコープのリソースを必要とする場合、ターゲットクラスターでそれらを手動で作成する必要があります。(BZ#1759804)
- 移行計画の作成時に、ソースクラスターのストレージクラスが誤って表示されます。(BZ#1777869)
- CAM Web コンソールのクラスターにアクセス不可の場合、これはオープン状態の移行計画のクローズを試行します。(BZ#1758269)
- 移行に失敗すると、移行計画は休止状態の Pod のカスタム PV 設定を保持しません。移行を手動でロールバックし、移行計画を削除し、PV 設定で新たな移行計画を作成する必要があります。(BZ#1784899)