8.2. 직접 볼륨 마이그레이션을 위한 Rsync 구성


MTC의 직접 볼륨 마이그레이션(DVM)은 두 PV 간의 직접 연결을 통해 Rsync를 사용하여 소스와 대상 영구 볼륨(PV) 간의 파일을 동기화합니다.

Rsync는 파일과 디렉토리를 로컬 및 원격 대상으로 전송할 수 있는 명령줄 도구입니다.

DVM에서 사용하는 rsync 명령은 예상대로 작동하는 클러스터에 최적화되어 있습니다.

MigrationController CR은 Direct Volume Migration에서 rsync_options를 구성하기 위해 다음 변수를 제공합니다.

Expand
Variable유형기본값설명

rsync_opt_bwlimit

int

설정되지 않음

양의 정수로 설정하면 --bwlimit=<int> 옵션이 Rsync 명령에 추가됩니다.

rsync_opt_archive

부울

true

Rsync 명령에서 --archive 옵션을 설정합니다.

rsync_opt_partial

부울

true

Rsync 명령에서 --partial 옵션을 설정합니다.

rsync_opt_delete

부울

true

Rsync 명령에서 --delete 옵션을 설정합니다.

rsync_opt_hardlinks

부울

true

--hard-links 옵션은 Rsync 명령입니다.

rsync_opt_info

string

COPY2

DEL2

REMOVE2

SKIP2

FLIST2

PROGRESS2

STATS2

Rsync Pod에서 자세한 로깅을 활성화합니다.

rsync_opt_extras

string

비어 있는

다른 임의의 옵션을 위해 예약되어 있습니다.

  • 위의 변수를 통해 설정된 옵션은 모든 마이그레이션에 전역적으로 적용됩니다. 운영자가 MigrationController CR을 성공적으로 조정하면 해당 구성은 향후 모든 마이그레이션에 적용됩니다. 진행 중인 모든 마이그레이션은 현재 단계에 따라 업데이트된 설정을 사용할 수 있습니다. 따라서 마이그레이션을 실행하기 전에 설정을 적용하는 것이 좋습니다. 사용자는 필요에 따라 항상 설정을 업데이트할 수 있습니다.
  • rsync_opt_extras 변수를 사용할 때는 주의하세요. 이 변수를 사용하여 전달되는 모든 옵션은 rsync 명령에 추가됩니다. 두 개 이상의 옵션을 지정할 때는 공백을 꼭 추가하세요. 옵션을 지정하는 데 오류가 있으면 마이그레이션이 실패할 수 있습니다. 하지만 향후 마이그레이션을 위해 필요한 만큼 MigrationController CR을 업데이트할 수 있습니다.
  • rsync_opt_info 플래그를 사용자 정의하면 MTC의 진행 보고 기능에 부정적인 영향을 미칠 수 있습니다. 그러나 진행률 보고를 제거하면 성능 이점이 있을 수 있습니다. 이 옵션은 Rsync 작업의 성능이 허용할 수 없는 수준으로 관찰될 때만 사용해야 합니다.
참고

DVM에서 사용하는 기본 구성은 다양한 환경에서 테스트되었습니다. 클러스터가 정상적이고 원활하게 작동한다면 대부분의 프로덕션 사용 사례에서 허용 가능합니다. 이러한 구성 변수는 기본 설정이 작동하지 않고 Rsync 작업이 실패하는 경우에 사용해야 합니다.

8.2.1. Rsync 포드에 대한 리소스 제한 구성

MigrationController CR은 Rsync의 리소스 사용 요구 사항과 제한을 구성하기 위해 다음 변수를 노출합니다.

Expand
Variable유형Default설명

source_rsync_pod_cpu_limits

string

1

소스 rsync 포드의 CPU 제한

source_rsync_pod_memory_limits

string

1Gi

소스 rsync 포드의 메모리 제한

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 포드의 CPU 제한

target_rsync_pod_cpu_requests

string

400m

rsync 포드의 CPU 요청을 타겟으로 합니다.

target_rsync_pod_memory_limits

string

1Gi

대상 rsync 포드의 메모리 제한

target_rsync_pod_memory_requests

string

1Gi

대상 rsync Pod의 메모리 요청

8.2.1.1. Rsync 포드에 대한 추가 그룹 구성

영구 볼륨 클레임(PVC)이 공유 스토리지를 사용하는 경우 Rsync 포드 정의에 보충 그룹을 추가하여 포드가 액세스를 허용하도록 스토리지 액세스를 구성할 수 있습니다.

Expand
Variable유형Default설명

src_supplemental_groups

string

설정되지 않음

소스 Rsync 포드에 대한 보충 그룹의 쉼표로 구분된 목록

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 재시도 구성

MTC(Migration Toolkit for Containers) 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. Rsync를 루트 또는 루트가 아닌 사용자로 실행

OpenShift Container Platform 환경에서는 PodSecurityAdmission 컨트롤러가 기본적으로 활성화되어 있습니다. 이 컨트롤러를 사용하려면 클러스터 관리자가 네임스페이스 레이블을 통해 Pod 보안 표준을 적용해야 합니다. 클러스터의 모든 워크로드는 다음 Pod 보안 표준 수준 중 하나를 실행해야 합니다: privileged , baseline 또는 restricted . 모든 클러스터에는 자체 기본 정책 세트가 있습니다.

모든 환경에서 데이터 전송을 성공적으로 수행하기 위해 MTC(Migration Toolkit for Containers) 1.ECDHE에서는 기본적으로 Rsync Pod를 루트가 아닌 사용자로 실행하는 등 Rsync Pod에 변경 사항을 도입했습니다. 이렇게 하면 더 높은 권한이 필요하지 않은 워크로드에도 데이터 전송이 가능합니다. 이러한 변경은 가능한 한 가장 낮은 수준의 권한으로 워크로드를 실행하는 것이 가장 좋기 때문에 이루어졌습니다.

대부분의 경우 Rsync Pod를 루트가 아닌 사용자로 실행해도 소스 측에서 워크로드를 루트 사용자로 실행할 때 데이터 전송이 실패할 수 있습니다. MTC는 데이터 전송을 위해 루트가 아닌 기본 작업을 수동으로 재정의하는 두 가지 방법을 제공합니다.

  • 모든 마이그레이션에 대해 대상 클러스터에서 Rsync Pod를 루트로 실행하도록 모든 마이그레이션을 구성합니다.
  • 마이그레이션당 대상 클러스터에서 Rsync Pod를 루트로 실행합니다.

두 경우 모두 마이그레이션하기 전에 권한이 높은 워크로드를 실행하는 네임스페이스의 소스 측에 다음 레이블을 설정해야 합니다. 즉, enforce, audit, warn을 적용합니다.

8.2.1.3.2. Pod 보안 승인 정보

OpenShift Container Platform에는 Kubernetes Pod 보안 승인이 포함됩니다. 전역적으로 정의되거나 네임스페이스 수준에서 정의되지 않은 Pod 보안 승인은 클러스터에 허용되지 않으며 실행할 수 없습니다.

전역적으로 privileged 있는 프로필이 적용되며, restricted 프로필은 경고 및 감사에 사용됩니다.

네임스페이스 수준에서 Pod 보안 승인 설정을 구성할 수도 있습니다.

중요

기본 프로젝트에서 워크로드를 실행하거나 기본 프로젝트에 대한 액세스를 공유하지 마세요. 기본 프로젝트는 핵심 클러스터 구성 요소를 실행하기 위해 예약되어 있습니다.

다음 기본 프로젝트는 높은 권한이 있는 것으로 간주됩니다. default, kube-public, kube-system, openshift, openshift-infra, openshift-nodeopenshift.io/run-level 레이블이 0 또는 1 로 설정된 기타 시스템 생성 프로젝트입니다. Pod 보안 승인, 보안 컨텍스트 제약 조건, 클러스터 리소스 할당량 및 이미지 참조 확인과 같은 승인 플러그인에 의존하는 기능은 높은 권한 있는 프로젝트에서 작동하지 않습니다.

8.2.1.3.2.1. Pod 보안 승인 모드

네임스페이스에 대해 다음 Pod 보안 승인 모드를 구성할 수 있습니다.

Expand
표 8.1. Pod 보안 승인 모드
모드레이블설명

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. 권한이 있는 네임스페이스

다음 시스템 네임스페이스는 항상 privileged 있는 Pod 보안 승인 프로필로 설정됩니다.

  • default
  • kube-public
  • kube-system

이러한 권한 있는 네임스페이스의 Pod 보안 프로필을 변경할 수 없습니다.

권한이 있는 네임스페이스 구성의 예

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

기본적으로 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

    이 구성은 향후 모든 마이그레이션에 적용됩니다.

대상 클러스터에서 다음과 같은 루트가 아닌 옵션을 사용하여 Rsync를 루트 또는 루트가 아닌 사용자로 실행하도록 MigMigration CR을 구성할 수 있습니다.

  • 특정 사용자 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를 특정 UID(User ID) 또는 특정 그룹 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 네임스페이스에 migration-cluster-config 라는 ConfigMap이 생성됩니다. 

migration-cluster-config를 사용하면 MigCluster 특정 값을 구성할 수 있습니다. 마이그레이션 운영자는 migration-cluster-config를 관리합니다. 

MigrationController CR에 노출된 변수를 사용하여 ConfigMap 의 모든 값을 구성할 수 있습니다.

Expand
Variable유형필수 항목설명

migration_stage_image_fqin

string

없음

Stage Pod에 사용할 이미지(IndirectVolumeMigration에만 적용 가능)

migration_registry_image_fqin

string

없음

마이그레이션 레지스트리에 사용할 이미지

rsync_endpoint_type

string

없음

데이터 전송을 위한 엔드포인트 유형( Route , ClusterIP , NodePort )

rsync_transfer_image_fqin

string

없음

Rsync Pod에 사용할 이미지(DirectVolumeMigration에만 적용 가능)

migration_rsync_privileged

부울

없음

Rsync Pod를 특권 모드로 실행할지 여부

migration_rsync_super_privileged

부울

없음

Rsync Pod를 최고 권한 컨테이너( spc_t SELinux 컨텍스트)로 실행할지 여부

cluster_subdomain

string

없음

클러스터의 하위 도메인

migration_registry_readiness_timeout

int

없음

마이그레이션 레지스트리 배포에 대한 준비 시간 초과(초)

migration_registry_liveness_timeout

int

없음

마이그레이션 레지스트리 배포에 대한 활성 시간 초과(초)

exposed_registry_validation_path

string

없음

MigCluster에서 노출된 레지스트리를 검증하기 위한 하위 경로(예: /v2)

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat