10.5. 마이그레이션 컨트롤러 옵션
마이그레이션 계획 제한을 편집하거나, 대규모 마이그레이션 및 성능 향상을 위해 MigrationController
CR(사용자 정의 리소스)에서 캐시된 Kubernetes 클라이언트를 활성화하고, 영구 볼륨 크기 조정을 활성화할 수 있습니다.
10.5.1. 대규모 마이그레이션에 대한 제한 증가
대규모 마이그레이션을 위해 MTC(Migration Toolkit for Containers)로 마이그레이션 오브젝트 및 컨테이너 리소스에 대한 마이그레이션 컨트롤러 제한을 늘릴 수 있습니다.
프로덕션 환경에서 마이그레이션을 수행하기 전에 이러한 변경 사항을 테스트해야 합니다.
프로세스
MigrationController
사용자 지정 (CR) 매니페스트를 편집합니다.$ oc edit migrationcontroller -n openshift-migration
다음 매개 변수를 업데이트합니다.
... mig_controller_limits_cpu: "1" 1 mig_controller_limits_memory: "10Gi" 2 ... mig_controller_requests_cpu: "100m" 3 mig_controller_requests_memory: "350Mi" 4 ... mig_pv_limit: 100 5 mig_pod_limit: 100 6 mig_namespace_limit: 10 7 ...
- 1
MigrationController
CR에서 사용할 수 있는 CPU 수를 지정합니다.- 2
MigrationController
CR에서 사용할 수 있는 메모리 양을 지정합니다.- 3
MigrationController
CR 요청에 사용할 수 있는 CPU 단위 수를 지정합니다.100m
은 0.1 CPU 단위(100 * 1e-3)를 나타냅니다.- 4
MigrationController
CR 요청에 사용할 수 있는 메모리 양을 지정합니다.- 5
- 마이그레이션할 수 있는 영구 볼륨 수를 지정합니다.
- 6
- 마이그레이션할 수 있는 포드 수를 지정합니다.
- 7
- 마이그레이션할 수 있는 네임스페이스 수를 지정합니다.
업데이트된 매개 변수를 사용하여 변경 사항을 확인하는 마이그레이션 계획을 생성합니다.
마이그레이션 계획이
MigrationController
CR 제한을 초과하는 경우 MTC 콘솔은 마이그레이션 계획을 저장할 때 경고 메시지를 표시합니다.
10.5.2. 직접 볼륨 마이그레이션의 영구 볼륨 크기 조정 활성화
대상 클러스터에서 디스크 공간이 부족하지 않도록 직접 볼륨 마이그레이션의 PV(영구 볼륨) 크기 조정을 활성화할 수 있습니다.
PV의 디스크 사용량이 구성된 수준에 도달하면 MigrationController
CR(사용자 정의 리소스)은 PVC(영구 볼륨 클레임)의 요청된 스토리지 용량을 실제 프로비저닝된 용량과 비교합니다. 그런 다음 대상 클러스터에 필요한 공간을 계산합니다.
pv_resizing_threshold
매개 변수는 PV 크기 조정을 사용할 시기를 결정합니다. 기본 임계값은 3%
입니다. 즉 PV의 디스크 사용량이 97%
를 초과하면 PV 크기가 조정됩니다. PV 크기 조정이 디스크 사용량이 낮은 수준에서 발생하도록 이 임계값을 늘릴 수 있습니다.
PVC 용량은 다음 기준에 따라 계산됩니다.
-
PVC의 요청된 스토리지 용량(
spec.resources.requests.storage
)이 실제 프로비저닝된 용량(status.capacity.storage
)과 같지 않으면 더 큰 값이 사용됩니다. - PV가 PVC를 통해 프로비저닝되고 나중에 PV 및 PVC 용량이 더 이상 일치하지 않도록 변경된 경우 더 큰 값이 사용됩니다.
사전 요구 사항
-
MigrationController
CR에서 명령을 실행할 수 있도록 PVC를 실행 중인 하나 이상의 pod에 연결해야 합니다.
프로세스
- 호스트 클러스터에 로그인합니다.
MigrationController
CR의 패치를 적용하여 PV 크기 조정을 활성화합니다.$ oc patch migrationcontroller migration-controller -p '{"spec":{"enable_dvm_pv_resizing":true}}' \ 1 --type='merge' -n openshift-migration
- 1
- PV 크기 조정을 비활성화하려면 값을
false
로 설정합니다.
선택 사항:
pv_resizing_threshold
매개변수를 업데이트하여 임계값을 늘립니다.$ oc patch migrationcontroller migration-controller -p '{"spec":{"pv_resizing_threshold":41}}' \ 1 --type='merge' -n openshift-migration
- 1
- 기본값은
3
입니다.
임계값을 초과하면
MigPlan
CR 상태에 다음 상태 정보 메시지가 표시됩니다.status: conditions: ... - category: Warn durable: true lastTransitionTime: "2021-06-17T08:57:01Z" message: 'Capacity of the following volumes will be automatically adjusted to avoid disk capacity issues in the target cluster: [pvc-b800eb7b-cf3b-11eb-a3f7-0eae3e0555f3]' reason: Done status: "False" type: PvCapacityAdjustmentRequired
참고AWS gp2 스토리지의 경우 gp2에서 볼륨 사용량과 크기를 계산하는 방식 때문에
pv_resizing_threshold
가 42% 이상인 경우 이 메시지가 표시되지 않습니다. (BZ#1973148)
10.5.3. 캐시된 Kubernetes 클라이언트 활성화
마이그레이션 중에 성능이 향상되도록 MigrationController CR
(사용자 정의 리소스)에서 캐시된 Kubernetes 클라이언트를 활성화할 수 있습니다. 서로 다른 지역에 있는 클러스터 간에 마이그레이션하거나 네트워크 지연 시간이 큰 경우 가장 큰 성능 이점이 표시됩니다.
예를 들어 직접 볼륨 마이그레이션에 대한 Rsync 백업이나 Velero 백업 및 복원과 같은 위임된 작업에서는 캐시된 클라이언트의 성능이 향상되지 않습니다.
MigrationController
CR에서 MigCluster
CR과 상호 작용하는 데 필요한 모든 API 리소스를 캐시하므로 캐시된 클라이언트에는 추가 메모리가 필요합니다. 일반적으로 API 서버로 전송되는 요청은 대신 캐시로 이동합니다. 캐시는 업데이트를 위해 API 서버를 모니터링합니다.
캐시된 클라이언트를 활성화한 후 OOMKilled
오류가 발생하면 MigrationController
CR의 메모리 제한과 요청을 늘릴 수 있습니다.
프로세스
다음 명령을 실행하여 캐시된 클라이언트를 활성화합니다.
$ oc -n openshift-migration patch migrationcontroller migration-controller --type=json --patch \ '[{ "op": "replace", "path": "/spec/mig_controller_enable_cache", "value": true}]'
선택 사항: 다음 명령을 실행하여
MigrationController
CR 메모리 제한을 늘립니다.$ oc -n openshift-migration patch migrationcontroller migration-controller --type=json --patch \ '[{ "op": "replace", "path": "/spec/mig_controller_limits_memory", "value": <10Gi>}]'
선택 사항: 다음 명령을 실행하여
MigrationController
CR 메모리 요청을 늘립니다.$ oc -n openshift-migration patch migrationcontroller migration-controller --type=json --patch \ '[{ "op": "replace", "path": "/spec/mig_controller_requests_memory", "value": <350Mi>}]'