10.2. 실시간 마이그레이션 구성
마이그레이션 프로세스가 클러스터를 압도하지 않도록 실시간 마이그레이션 설정을 구성할 수 있습니다.
실시간 마이그레이션 정책을 구성하여 VM(가상 머신) 그룹에 다른 마이그레이션 구성을 적용할 수 있습니다.
10.2.1. 실시간 마이그레이션 설정
다음 실시간 마이그레이션 설정을 구성할 수 있습니다.
10.2.1.1. 실시간 마이그레이션 제한 및 타임아웃 구성
openshift-cnv
네임스페이스에 있는 HyperConverged
CR(사용자 정의 리소스)을 업데이트하여 클러스터의 실시간 마이그레이션 제한 및 타임아웃을 구성합니다.
프로세스
HyperConverged
CR을 편집하고 필요한 실시간 마이그레이션 매개변수를 추가합니다.$ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
설정 파일 예
apiVersion: hco.kubevirt.io/v1beta1 kind: HyperConverged metadata: name: kubevirt-hyperconverged namespace: openshift-cnv spec: liveMigrationConfig: bandwidthPerMigration: 64Mi 1 completionTimeoutPerGiB: 800 2 parallelMigrationsPerCluster: 5 3 parallelOutboundMigrationsPerNode: 2 4 progressTimeout: 150 5
- 1
- 각 마이그레이션의 대역폭 제한입니다. 여기서 값은 초당 바이트 수입니다. 예를 들어,
2048Mi
값은 2048MiB/s를 의미합니다. 기본값:0
, 이는 무제한입니다. - 2
- 이 시점에 메모리 GiB당 초 단위로 마이그레이션이 완료되지 않으면 마이그레이션이 취소됩니다. 예를 들어 메모리가 6GiB인 VM은 4800초 내에 마이그레이션이 완료되지 않으면 시간 초과됩니다.
Migration Method
가BlockMigration
인 경우 마이그레이션 디스크의 크기가 계산에 포함됩니다. - 3
- 클러스터에서 병렬로 실행되고 있는 마이그레이션의 수입니다. 기본값:
5
. - 4
- 노드당 최대 아웃바운드 마이그레이션의 수입니다. 기본값: 2.
- 5
- 이 시간(초) 내에 메모리 복사를 진행하지 못하면 마이그레이션이 취소됩니다. 기본값:
150
.
해당 키/값 쌍을 삭제하고 파일을 저장하여 spec.liveMigrationConfig
필드의 기본값을 복원할 수 있습니다. 예를 들어 progressTimeout: <value>
를 삭제하여 기본 progressTimeout: 150
을 복원합니다.
10.2.2. 실시간 마이그레이션 정책
실시간 마이그레이션 정책을 생성하여 VM 또는 프로젝트 레이블로 정의된 VM 그룹에 다른 마이그레이션 구성을 적용할 수 있습니다.
웹 콘솔 을 사용하여 실시간 마이그레이션 정책을 생성할 수 있습니다.
10.2.2.1. 명령줄을 사용하여 실시간 마이그레이션 정책 생성
명령줄을 사용하여 실시간 마이그레이션 정책을 생성할 수 있습니다. kubevirt는 라벨 조합을 사용하여 선택한 VM(가상 머신)에 실시간 마이그레이션 정책을 적용합니다.
-
VM 레이블(예:
크기
,os
또는gpu
) -
우선순위
,대역폭
또는hpc-workload
와 같은 프로젝트 라벨
정책이 특정 VM 그룹에 적용되려면 VM 그룹의 모든 레이블이 정책 레이블과 일치해야 합니다.
VM에 여러 실시간 마이그레이션 정책이 적용되는 경우 일치하는 라벨이 가장 많은 정책이 우선합니다.
여러 정책이 이 기준을 충족하는 경우 정책은 일치하는 레이블 키의 알파벳 순서에 따라 정렬되며 해당 순서의 첫 번째 정책이 우선합니다.
프로세스
실시간 마이그레이션 정책을 적용할 VM 오브젝트를 편집하고 해당 VM 레이블을 추가합니다.
리소스의 YAML 구성을 엽니다.
$ oc edit vm <vm_name>
구성의
.spec.template.metadata.labels
섹션에서 필요한 레이블 값을 조정합니다. 예를 들어 VM을 마이그레이션 정책의 목적으로프로덕션
VM으로 표시하려면kubevirt.io/environment: production
행을 추가합니다.apiVersion: migrations.kubevirt.io/v1alpha1 kind: VirtualMachine metadata: name: <vm_name> namespace: default labels: app: my-app environment: production spec: template: metadata: labels: kubevirt.io/domain: <vm_name> kubevirt.io/size: large kubevirt.io/environment: production # ...
- 구성을 저장하고 종료합니다.
해당 라벨을 사용하여
MigrationPolicy
오브젝트를 구성합니다. 다음 예제에서는production
로 레이블이 지정된 모든 VM에 적용되는 정책을 구성합니다.apiVersion: migrations.kubevirt.io/v1alpha1 kind: MigrationPolicy metadata: name: <migration_policy> spec: selectors: namespaceSelector: 1 hpc-workloads: "True" xyz-workloads-type: "" virtualMachineInstanceSelector: 2 kubevirt.io/environment: "production"
다음 명령을 실행하여 마이그레이션 정책을 생성합니다.
$ oc create migrationpolicy -f <migration_policy>.yaml