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


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

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

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

MigrationController CR은 다음 변수를 노출하여 직접 볼륨 마이그레이션에서 rsync_options 를 구성합니다.

Expand
Variable유형기본값설명

rsync_opt_bwlimit

int

설정되지 않음

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

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

--hard-links 옵션을 설정하여 Rsync 명령입니다.

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
Variable유형Default설명

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
Variable유형Default설명

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

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 보안 표준을 적용해야 합니다. 클러스터의 모든 워크로드는 privileged,baseline 또는 restricted 라는 다음 Pod 보안 표준 수준 중 하나를 실행해야 합니다. 모든 클러스터에는 자체 기본 정책 세트가 있습니다.

모든 환경에서 데이터 전송을 성공적으로 수행하기 위해 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 설정

MTC(Migration Toolkit for Containers)에서 생성된 모든 MigCluster 리소스에 대해 MigCluster 리소스가 나타내는 클러스터의 Migration Operator 네임스페이스에 migration-cluster-config 라는 ConfigMap 이 생성됩니다. 

migration-cluster-config 를 사용하면 MigCluster 특정 값을 구성할 수 있습니다. Migration Operator는 migration-cluster-config 를 관리합니다. 

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

Expand
Variable유형필수 항목설명

migration_stage_image_fqin

string

없음

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

migration_registry_image_fqin

string

없음

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

rsync_endpoint_type

string

없음

데이터 전송을 위한 끝점 유형(경로,ClusterIP,NodePort)

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_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