8.2. ボリュームの直接移行のための Rsync 設定
MTC のボリュームの直接移行 (DVM) は、Rsync を使用して、2 つの PV 間の直接接続により、ソースとターゲットの永続ボリューム (PV) 間でファイルを同期します。
Rsync は、ファイルやディレクトリーをローカルおよびリモートの宛先に転送できるコマンドラインツールです。
DVM で使用される rsync コマンドは、クラスターが期待どおりに機能するように最適化されています。
MigrationController CR は、ボリュームの直接移行で rsync_options を設定するために、次の変数を公開します。
| 変数 | 型 | デフォルト値 | 説明 |
|---|---|---|---|
|
| int | 設定されていません |
正の整数に設定すると、Rsync コマンドに |
|
| bool |
|
Rsync コマンドの |
|
| bool |
|
Rsync コマンドの |
|
| bool |
|
Rsync コマンドの |
|
| bool |
|
Rsync コマンドの |
|
| string |
| Rsync Pod で詳細なロギングを有効にします。 |
|
| string | 空白 | その他の任意のオプション用に予約されています。 |
-
上記の変数を使用して設定したオプションの設定は、すべての移行に対して グローバル に適用されます。Operator が
MigrationControllerCR を正常に調整するとすぐに、この設定は今後のすべての移行に対して有効になります。進行中の移行では、現在のステップに応じて、更新された設定を使用できます。したがって、移行を実行する前に設定を適用することが推奨されます。ユーザーは必要に応じていつでも設定を更新できます。 -
rsync_opt_extras変数は慎重に使用してください。この変数を使用して渡したオプションはすべて、rsyncコマンドに追加されます。複数のオプションを指定する場合は必ず空白を追加してください。オプションの指定にエラーがあると、移行が失敗する可能性があります。ただし、MigrationControllerCR は、将来の移行に必要な回数だけ更新できます。 -
rsync_opt_infoフラグをカスタマイズすると、MTC の進捗レポート機能に悪影響を与える可能性があります。ただし、進捗レポートを削除すると、パフォーマンス上の利点が得られる場合があります。この方法は、Rsync 操作のパフォーマンスが許容できない場合にのみ使用してください。
DVM で使用されるデフォルト設定は、さまざまな環境でテストされています。クラスターが正常でパフォーマンスが良好であれば、ほとんどの実稼働環境のユースケースで許容されます。これらの設定変数は、デフォルト設定が機能せず、Rsync 操作が失敗した場合に使用する必要があります。
8.2.1. Rsync Pod のリソース制限設定 リンクのコピーリンクがクリップボードにコピーされました!
MigrationController CR は、Rsync のリソース使用に関する要件と制限を設定するために、次の変数を公開します。
| 変数 | 型 | デフォルト | 説明 |
|---|---|---|---|
|
| string |
| ソース rsync Pod の CPU 制限 |
|
| string |
| ソース rsync Pod のメモリー制限 |
|
| string |
| ソース rsync Pod の CPU 要求 |
|
| string |
| ソース rsync Pod のメモリー要求 |
|
| string |
| ターゲット rsync Pod の CPU 制限 |
|
| string |
| ターゲット rsync Pod の CPU 要求 |
|
| string |
| ターゲット rsync Pod のメモリー制限 |
|
| string |
| ターゲット rsync Pod のメモリー要求 |
8.2.1.1. Rsync Pod の補足グループの設定 リンクのコピーリンクがクリップボードにコピーされました!
永続ボリューム要求 (PVC) が共有ストレージを使用している場合、Pod がアクセスを許可するように Rsync Pod 定義に補足グループを追加することで、ストレージへのアクセスを設定できます。
| 変数 | 型 | デフォルト | 説明 |
|---|---|---|---|
|
| string | 設定されていません | ソース Rsync Pod の補足グループのコンマ区切りリスト |
|
| string | 設定されていません | ターゲット Rsync Pod の補足グループのコンマ区切りリスト |
たとえば、MigrationController CR を更新して上記の値を設定できます。
spec:
src_supplemental_groups: "1000,2000"
target_supplemental_groups: "2000,3000"
8.2.1.2. Rsync の再試行設定 リンクのコピーリンクがクリップボードにコピーされました!
MTC 1.4.3 以降では、失敗した Rsync 操作を再試行する新しい機能が導入されました。
デフォルトでは、移行コントローラーは、すべてのデータがソースボリュームからターゲットボリュームに正常に転送されるか、指定した再試行回数に達するまで、Rsync を再試行します。デフォルトの再試行回数の上限は 20 に設定されています。
ボリュームが大きい場合、再試行回数の上限が 20 では不十分な場合があります。
MigrationController CR で次の変数を使用して、再試行回数の上限を引き上げることができます。
apiVersion: migration.openshift.io/v1alpha1
kind: MigrationController
metadata:
name: migration-controller
namespace: openshift-migration
spec:
[...]
rsync_backoff_limit: 40
この例では、再試行回数の上限が 40 に引き上げられます。
8.2.1.3. root または非 root として Rsync を実行する リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform 環境では、PodSecurityAdmission コントローラーがデフォルトで有効になっています。このコントローラーでは、クラスター管理者がネームスペースラベルを使用して Pod セキュリティー標準を適用する必要があります。クラスター内のすべてのワークロードは、次の Pod セキュリティー標準レベルのいずれかを実行することが期待されます: Privileged、Baseline または Restricted。すべてのクラスターには、独自のデフォルトポリシーセットがあります。
すべての環境で正常なデータ転送を保証するために、Migration Toolkit for Containers (MTC) 1.7.5 では Rsync Pod に変更が導入されました。これには、デフォルトで非ルートユーザーとして Rsync Pod を実行することが含まれます。これにより、必ずしもより高い特権を必要としないワークロードでもデータ転送が可能になります。この変更が行われたのは、可能な限り低いレベルの特権でワークロードを実行するのが最善であるためです。
8.2.1.3.1. データ転送におけるデフォルトの非 root 操作の手動オーバーライド リンクのコピーリンクがクリップボードにコピーされました!
ほとんどの場合、非 root ユーザーとして Rsync Pod を実行すると機能しますが、ソース側で root ユーザーとしてワークロードを実行すると、データ転送が失敗することがあります。MTC は、データ転送のデフォルトの非ルート操作を手動でオーバーライドする 2 つの方法を提供します。
- すべての移行の宛先クラスターで Rsync Pod をルートとして実行するように、すべての移行を設定します。
- 移行ごとに宛先クラスターで Rsync Pod をルートとして実行します。
どちらの場合も、移行前に、より高い権限でワークロードを実行している namespace のソース側に、enforce、audit、および warn のラベルを設定する必要があります。
Pod セキュリティーアドミッションとラベルの設定値の詳細は、Pod セキュリティーアドミッションの同期の制御 を参照してください。
8.2.1.3.2. すべての移行で MigrationController CR をルートまたは非ルートとして設定する リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、Rsync は非ルートとして実行されます。
宛先クラスターで、Rsync をルートとして実行するように MigrationController CR を設定できます。
手順
MigrationControllerCR を次のように設定します。apiVersion: migration.openshift.io/v1alpha1 kind: MigrationController metadata: name: migration-controller namespace: openshift-migration spec: [...] migration_rsync_privileged: trueこの設定は、今後のすべての移行に適用されます。
8.2.1.3.3. 移行ごとにルートまたは非ルートとして MigMigration CR を設定する リンクのコピーリンクがクリップボードにコピーされました!
移行先クラスターでは、MigMigration CR を設定して、次の非ルートオプションを使用して、ルートまたは非ルートとして Rsync を実行できます。
- 特定のユーザー ID (UID) として
- 特定のグループ ID (GID) として
手順
Rsync をルートとして実行するには、次の例に従って
MigMigrationCR を設定します。apiVersion: migration.openshift.io/v1alpha1 kind: MigMigration metadata: name: migration-controller namespace: openshift-migration spec: [...] runAsRoot: trueRsync を特定のユーザー ID (UID) または特定のグループ ID (GID) として実行するには、次の例に従って
MigMigrationCR を設定します。apiVersion: migration.openshift.io/v1alpha1 kind: MigMigration metadata: name: migration-controller namespace: openshift-migration spec: [...] runAsUser: 10010001 runAsGroup: 3
8.2.2. MigCluster 設定 リンクのコピーリンクがクリップボードにコピーされました!
MTC で作成されたすべての MigCluster リソースに対して、MigCluster リソースが表すクラスターの Migration Operator の namespace に、migration-cluster-config という名前の ConfigMap が作成されます。
migration-cluster-config を使用すると、MigCluster 固有の値を設定できます。Migration Operator は、migration-cluster-config を管理します。
MigrationController CR で公開されている変数を使用して、ConfigMap のすべての値を設定できます。
| 変数 | 型 | 必須 | 説明 |
|---|---|---|---|
|
| string | いいえ | Stage Pod に使用するイメージ (IndirectVolumeMigration にのみ適用可能) |
|
| string | いいえ | Migration Registry に使用するイメージ |
|
| string | いいえ |
データ転送のエンドポイントのタイプ ( |
|
| string | いいえ | Rsync Pod に使用するイメージ (DirectVolumeMigration にのみ適用) |
|
| bool | いいえ | Rsync Pod を特権付きとして実行するかどうか |
|
| bool | いいえ |
Rsync Pod をスーパー特権コンテナー ( |
|
| string | いいえ | クラスターのサブドメイン |
|
| int | いいえ | Migration Registry Deployment の Readiness タイムアウト (秒単位) |
|
| int | いいえ | Migration Registry Deployment の Liveness タイムアウト (秒単位) |
|
| string | いいえ | MigCluster で公開されたレジストリーを検証するためのサブパス (例: /v2) |