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 が
MigrationController
CR を正常に調整するとすぐに、この設定は今後のすべての移行に対して有効になります。進行中の移行では、現在のステップに応じて、更新された設定を使用できます。したがって、移行を実行する前に設定を適用することが推奨されます。ユーザーは必要に応じていつでも設定を更新できます。 -
rsync_opt_extras
変数は慎重に使用してください。この変数を使用して渡したオプションはすべて、rsync
コマンドに追加されます。複数のオプションを指定する場合は必ず空白を追加してください。オプションの指定にエラーがあると、移行が失敗する可能性があります。ただし、MigrationController
CR は、将来の移行に必要な回数だけ更新できます。 -
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"
spec:
src_supplemental_groups: "1000,2000"
target_supplemental_groups: "2000,3000"
8.2.1.2. Rsync の再試行設定 リンクのコピーリンクがクリップボードにコピーされました!
Migration Toolkit for Containers (MTC) 1.4.3 以降では、失敗した Rsync 操作を再試行する新しい機能が導入されています。
デフォルトでは、移行コントローラーは、すべてのデータがソースボリュームからターゲットボリュームに正常に転送されるか、指定した再試行回数に達するまで、Rsync を再試行します。デフォルトの再試行回数の上限は 20
に設定されています。
ボリュームが大きい場合、再試行回数の上限が 20
では不十分な場合があります。
MigrationController
CR で次の変数を使用して、再試行回数の上限を引き上げることができます。
この例では、再試行回数の上限が 40
に引き上げられます。
8.2.1.3. root または非 root として Rsync を実行する リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform 環境では、PodSecurityAdmission
コントローラーがデフォルトで有効になっています。このコントローラーは、クラスター管理者に、namespace ラベルを使用して Pod セキュリティー標準を適用するよう要求します。クラスター内のワークロードは、すべて privileged
、baseline
、または restricted
のいずれかの Pod セキュリティー標準レベルを実行するよう求められます。すべてのクラスターには、独自のデフォルトポリシーセットがあります。
すべての環境で正常なデータ転送を保証するために、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
のラベルを設定する必要があります。
8.2.1.3.2. Pod セキュリティーアドミッションについて リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform には、Kubernetes Pod のセキュリティーアドミッション が含まれます。グローバルまたは namespace レベルで定義された Pod のセキュリティーアドミッションに準拠していない Pod は、クラスターへの参加が許可されず、実行できません。
グローバルに、privileged
プロファイルが適用され、restricted
プロファイルが警告と監査に使用されます。
Pod のセキュリティーアドミッション設定を namespace レベルで設定することもできます。
デフォルトプロジェクトでワークロードを実行したり、デフォルトプロジェクトへのアクセスを共有したりしないでください。デフォルトのプロジェクトは、コアクラスターコンポーネントを実行するために予約されています。
デフォルトプロジェクトである default
、kube-public
、kube-system
、openshift
、openshift-infra
、openshift-node
、および openshift.io/run-level
ラベルが 0
または 1
に設定されているその他のシステム作成プロジェクトは、高い特権があるとみなされます。Pod セキュリティーアドミッション、Security Context Constraints、クラスターリソースクォータ、イメージ参照解決などのアドミッションプラグインに依存する機能は、高い特権を持つプロジェクトでは機能しません。
8.2.1.3.2.1. Pod のセキュリティーアドミッションモード リンクのコピーリンクがクリップボードにコピーされました!
namespace に対して次の Pod セキュリティーアドミッションモードを設定できます。
Mode | ラベル | 説明 |
---|---|---|
|
| 設定されたプロファイルに準拠していない Pod の受け入れを拒否します。 |
|
| Pod が設定されたプロファイルに準拠していないと、監査イベントをログに記録します。 |
|
| Pod が設定されたプロファイルに準拠していないと警告を表示します。 |
8.2.1.3.2.2. Pod のセキュリティーアドミッションプロファイル リンクのコピーリンクがクリップボードにコピーされました!
各 Pod セキュリティーアドミッションモードを次のプロファイルのいずれかに設定できます。
プロファイル | 説明 |
---|---|
| 最も制限の少ないポリシー。既知の権限昇格が可能になります。 |
| 最小限の制限ポリシー。既知の権限昇格を防止します。 |
| 最も制限的なポリシー。現在の Pod 強化のベストプラクティスに従います。 |
8.2.1.3.2.3. 特権付きの namespace リンクのコピーリンクがクリップボードにコピーされました!
次のシステム namespace は、常に privileged
Pod セキュリティーアドミッションプロファイルに設定されます。
-
default
-
kube-public
-
kube-system
これらの特権付き namespace の Pod セキュリティープロファイルを変更することはできません。
特権付き namespace の設定例
8.2.1.3.3. すべての移行で MigrationController CR をルートまたは非ルートとして設定する リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、Rsync は非ルートとして実行されます。
宛先クラスターで、Rsync をルートとして実行するように MigrationController
CR を設定できます。
手順
MigrationController
CR を次のように設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow この設定は、今後のすべての移行に適用されます。
8.2.1.3.4. 移行ごとにルートまたは非ルートとして MigMigration CR を設定する リンクのコピーリンクがクリップボードにコピーされました!
移行先クラスターでは、MigMigration
CR を設定して、次の非ルートオプションを使用して、ルートまたは非ルートとして Rsync を実行できます。
- 特定のユーザー ID (UID) として
- 特定のグループ ID (GID) として
手順
Rsync をルートとして実行するには、次の例に従って
MigMigration
CR を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Rsync を特定のユーザー ID (UID) または特定のグループ ID (GID) として実行するには、次の例に従って
MigMigration
CR を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.2.2. MigCluster 設定 リンクのコピーリンクがクリップボードにコピーされました!
Migration Toolkit for Containers (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) |