8.2. ボリュームの直接移行のための Rsync 設定


MTC のボリュームの直接移行 (DVM) は、Rsync を使用して、2 つの PV 間の直接接続により、ソースとターゲットの永続ボリューム (PV) 間でファイルを同期します。

Rsync は、ファイルやディレクトリーをローカルおよびリモートの宛先に転送できるコマンドラインツールです。

DVM で使用される rsync コマンドは、クラスターが期待どおりに機能するように最適化されています。

MigrationController CR は、ボリュームの直接移行で rsync_options を設定するために、次の変数を公開します。

Expand
変数デフォルト値説明

rsync_opt_bwlimit

int

設定されていません

正の整数に設定すると、Rsync コマンドに --bwlimit=<int> オプションが追加されます。

rsync_opt_archive

bool

true

Rsync コマンドの --archive オプションを設定します。

rsync_opt_partial

bool

true

Rsync コマンドの --partial オプションを設定します。

rsync_opt_delete

bool

true

Rsync コマンドの --delete オプションを設定します。

rsync_opt_hardlinks

bool

true

Rsync コマンドの --hard-links オプションを設定します。

rsync_opt_info

string

COPY2

DEL2

REMOVE2

SKIP2

FLIST2

PROGRESS2

STATS2

Rsync Pod で詳細なロギングを有効にします。

rsync_opt_extras

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 のリソース使用に関する要件と制限を設定するために、次の変数を公開します。

Expand
変数デフォルト説明

source_rsync_pod_cpu_limits

string

1

ソース rsync Pod の CPU 制限

source_rsync_pod_memory_limits

string

1Gi

ソース rsync Pod のメモリー制限

source_rsync_pod_cpu_requests

string

400m

ソース rsync Pod の CPU 要求

source_rsync_pod_memory_requests

string

1Gi

ソース rsync Pod のメモリー要求

target_rsync_pod_cpu_limits

string

1

ターゲット rsync Pod の CPU 制限

target_rsync_pod_cpu_requests

string

400m

ターゲット rsync Pod の CPU 要求

target_rsync_pod_memory_limits

string

1Gi

ターゲット rsync Pod のメモリー制限

target_rsync_pod_memory_requests

string

1Gi

ターゲット rsync Pod のメモリー要求

8.2.1.1. Rsync Pod の補足グループの設定

永続ボリューム要求 (PVC) が共有ストレージを使用している場合、Pod がアクセスを許可するように Rsync Pod 定義に補足グループを追加することで、ストレージへのアクセスを設定できます。

Expand
変数デフォルト説明

src_supplemental_groups

string

設定されていません

ソース Rsync Pod の補足グループのコンマ区切りリスト

target_supplemental_groups

string

設定されていません

ターゲット Rsync Pod の補足グループのコンマ区切りリスト

たとえば、MigrationController CR を更新して上記の値を設定できます。

spec:
  src_supplemental_groups: "1000,2000"
  target_supplemental_groups: "2000,3000"
Copy to Clipboard Toggle word wrap

8.2.1.2. Rsync の再試行設定

Migration Toolkit for Containers (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
Copy to Clipboard Toggle word wrap

この例では、再試行回数の上限が 40 に引き上げられます。

8.2.1.3. root または非 root として Rsync を実行する

OpenShift Container Platform 環境では、PodSecurityAdmission コントローラーがデフォルトで有効になっています。このコントローラーは、クラスター管理者に、namespace ラベルを使用して Pod セキュリティー標準を適用するよう要求します。クラスター内のワークロードは、すべて privilegedbaseline、または 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 のソース側に、enforceaudit、および warn のラベルを設定する必要があります。

8.2.1.3.2. Pod セキュリティーアドミッションについて

OpenShift Container Platform には、Kubernetes Pod のセキュリティーアドミッション が含まれます。グローバルまたは namespace レベルで定義された Pod のセキュリティーアドミッションに準拠していない Pod は、クラスターへの参加が許可されず、実行できません。

グローバルに、privileged プロファイルが適用され、restricted プロファイルが警告と監査に使用されます。

Pod のセキュリティーアドミッション設定を namespace レベルで設定することもできます。

重要

デフォルトプロジェクトでワークロードを実行したり、デフォルトプロジェクトへのアクセスを共有したりしないでください。デフォルトのプロジェクトは、コアクラスターコンポーネントを実行するために予約されています。

デフォルトプロジェクトである defaultkube-publickube-systemopenshiftopenshift-infraopenshift-node、および openshift.io/run-level ラベルが 0 または 1 に設定されているその他のシステム作成プロジェクトは、高い特権があるとみなされます。Pod セキュリティーアドミッション、Security Context Constraints、クラスターリソースクォータ、イメージ参照解決などのアドミッションプラグインに依存する機能は、高い特権を持つプロジェクトでは機能しません。

8.2.1.3.2.1. Pod のセキュリティーアドミッションモード

namespace に対して次の Pod セキュリティーアドミッションモードを設定できます。

Expand
表8.1 Pod のセキュリティーアドミッションモード
Modeラベル説明

enforce

pod-security.kubernetes.io/enforce

設定されたプロファイルに準拠していない Pod の受け入れを拒否します。

audit

pod-security.kubernetes.io/audit

Pod が設定されたプロファイルに準拠していないと、監査イベントをログに記録します。

warn

pod-security.kubernetes.io/warn

Pod が設定されたプロファイルに準拠していないと警告を表示します。

8.2.1.3.2.2. Pod のセキュリティーアドミッションプロファイル

各 Pod セキュリティーアドミッションモードを次のプロファイルのいずれかに設定できます。

Expand
表8.2 Pod のセキュリティーアドミッションプロファイル
プロファイル説明

privileged

最も制限の少ないポリシー。既知の権限昇格が可能になります。

baseline

最小限の制限ポリシー。既知の権限昇格を防止します。

restricted

最も制限的なポリシー。現在の Pod 強化のベストプラクティスに従います。

8.2.1.3.2.3. 特権付きの namespace

次のシステム namespace は、常に privileged Pod セキュリティーアドミッションプロファイルに設定されます。

  • default
  • kube-public
  • kube-system

これらの特権付き namespace の Pod セキュリティープロファイルを変更することはできません。

特権付き namespace の設定例

apiVersion: v1
kind: Namespace
metadata:
  labels:
    openshift.io/cluster-monitoring: "true"
    pod-security.kubernetes.io/enforce: privileged
    pod-security.kubernetes.io/audit: privileged
    pod-security.kubernetes.io/warn: privileged
  name: "<mig_namespace>"
# ...
Copy to Clipboard Toggle word wrap

8.2.1.3.3. すべての移行で MigrationController CR をルートまたは非ルートとして設定する

デフォルトでは、Rsync は非ルートとして実行されます。

宛先クラスターで、Rsync をルートとして実行するように MigrationController CR を設定できます。

手順

  • MigrationController CR を次のように設定します。

    apiVersion: migration.openshift.io/v1alpha1
    kind: MigrationController
    metadata:
      name: migration-controller
      namespace: openshift-migration
    spec:
      [...]
      migration_rsync_privileged: true
    Copy to Clipboard Toggle word wrap

    この設定は、今後のすべての移行に適用されます。

8.2.1.3.4. 移行ごとにルートまたは非ルートとして MigMigration CR を設定する

移行先クラスターでは、MigMigration CR を設定して、次の非ルートオプションを使用して、ルートまたは非ルートとして Rsync を実行できます。

  • 特定のユーザー ID (UID) として
  • 特定のグループ ID (GID) として

手順

  1. Rsync をルートとして実行するには、次の例に従って MigMigration CR を設定します。

    apiVersion: migration.openshift.io/v1alpha1
    kind: MigMigration
    metadata:
      name: migration-controller
      namespace: openshift-migration
    spec:
      [...]
      runAsRoot: true
    Copy to Clipboard Toggle word wrap
  2. Rsync を特定のユーザー ID (UID) または特定のグループ ID (GID) として実行するには、次の例に従って MigMigration CR を設定します。

    apiVersion: migration.openshift.io/v1alpha1
    kind: MigMigration
    metadata:
      name: migration-controller
      namespace: openshift-migration
    spec:
      [...]
      runAsUser: 10010001
      runAsGroup: 3
    Copy to Clipboard Toggle word wrap

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 のすべての値を設定できます。

Expand
変数必須説明

migration_stage_image_fqin

string

いいえ

Stage Pod に使用するイメージ (IndirectVolumeMigration にのみ適用可能)

migration_registry_image_fqin

string

いいえ

Migration Registry に使用するイメージ

rsync_endpoint_type

string

いいえ

データ転送のエンドポイントのタイプ (RouteClusterIPNodePort)

rsync_transfer_image_fqin

string

いいえ

Rsync Pod に使用するイメージ (DirectVolumeMigration にのみ適用)

migration_rsync_privileged

bool

いいえ

Rsync Pod を特権付きとして実行するかどうか

migration_rsync_super_privileged

bool

いいえ

Rsync Pod をスーパー特権コンテナー (spc_t SELinux コンテキスト) として実行するかどうか

cluster_subdomain

string

いいえ

クラスターのサブドメイン

migration_registry_readiness_timeout

int

いいえ

Migration Registry Deployment の Readiness タイムアウト (秒単位)

migration_registry_liveness_timeout

int

いいえ

Migration Registry Deployment の Liveness タイムアウト (秒単位)

exposed_registry_validation_path

string

いいえ

MigCluster で公開されたレジストリーを検証するためのサブパス (例: /v2)

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat