검색

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

download PDF

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

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

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

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

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에 대한 리소스 사용 요구 사항 및 제한을 구성합니다.

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 정의에 추가 그룹을 추가하여 스토리지에 대한 액세스를 구성할 수 있습니다.

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"

8.2.1.2. rsync 재시도 구성

MTC 1.4.3 이상에서는 실패한 Rsync 작업을 다시 시도할 수 있는 새로운 기능이 도입되었습니다.

기본적으로 마이그레이션 컨트롤러는 모든 데이터가 소스에서 대상 볼륨으로 전송되거나 지정된 재시도 횟수가 충족될 때까지 Rsync를 다시 시도합니다. 기본 재시도 제한은 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. Rsync를 루트 또는 루트가 아닌 사용자로 실행

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

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

8.2.1.3.1. 데이터 전송을 위해 루트가 아닌 기본 작업을 수동으로 덮어쓰기

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

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

두 경우 모두 마이그레이션 전에 더 높은 권한으로 워크로드를 실행하는 네임스페이스의 소스 측에 다음 레이블을 설정해야 합니다(실행,감사, 경고).

Pod Security Admission and setting values for labels에 대한 자세한 내용은 Pod 보안 승인 동기화 제어를 참조하십시오.

8.2.1.3.2. 모든 마이그레이션에 대해 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

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

8.2.1.3.3. MigMigration CR을 마이그레이션당 루트 또는 루트가 아닌 사용자로 구성

대상 클러스터에서 다음과 같은 루트가 아닌 옵션을 사용하여 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
  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

8.2.2. MigCluster 설정

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

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

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

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

© 2024 Red Hat, Inc.