3.2. virtctl 및 libguestfs CLI 툴 사용
virtctl
명령줄 툴을 사용하여 OpenShift Virtualization 리소스를 관리할 수 있습니다.
libguestfs
명령줄 툴을 사용하여 VM(가상 머신) 디스크 이미지에 액세스하고 수정할 수 있습니다. virtctl libguestfs
명령을 사용하여 libguestfs
를 배포합니다.
3.2.1. virtctl 설치
RHEL(Red Hat Enterprise Linux) 9, Linux, Windows 및 MacOS 운영 체제에 virtctl
을 설치하려면 virtctl
바이너리 파일을 다운로드하여 설치합니다.
RHEL 8에 virtctl
을 설치하려면 OpenShift Virtualization 리포지토리를 활성화한 다음 kubevirt-virtctl
패키지를 설치합니다.
3.2.1.1. RHEL 9, Linux, Windows 또는 macOS에 virtctl 바이너리 설치
OpenShift Container Platform 웹 콘솔에서 운영 체제의 virtctl
바이너리를 다운로드한 다음 설치할 수 있습니다.
프로세스
-
웹 콘솔의 가상화
개요 페이지로 이동합니다. -
Download virtctl 링크를 클릭하여 운영 체제의
virtctl
바이너리를 다운로드합니다. install
virtctl
:RHEL 9 및 기타 Linux 운영 체제의 경우:
아카이브 파일의 압축을 풉니다.
$ tar -xvf <virtctl-version-distribution.arch>.tar.gz
다음 명령을 실행하여
virtctl
바이너리를 실행할 수 있도록 합니다.$ chmod +x <path/virtctl-file-name>
virtctl
바이너리를PATH
환경 변수의 디렉터리로 이동합니다.다음 명령을 실행하여 경로를 확인할 수 있습니다.
$ echo $PATH
KUBECONFIG
환경 변수를 설정합니다.$ export KUBECONFIG=/home/<user>/clusters/current/auth/kubeconfig
Windows의 경우:
- 아카이브 파일의 압축을 풉니다.
-
추출된 폴더 계층 구조로 이동하고
virtctl
실행 파일을 두 번 클릭하여 클라이언트를 설치합니다. virtctl
바이너리를PATH
환경 변수의 디렉터리로 이동합니다.다음 명령을 실행하여 경로를 확인할 수 있습니다.
C:\> path
macOS의 경우:
- 아카이브 파일의 압축을 풉니다.
virtctl
바이너리를PATH
환경 변수의 디렉터리로 이동합니다.다음 명령을 실행하여 경로를 확인할 수 있습니다.
echo $PATH
3.2.1.2. RHEL 8에 virtctl RPM 설치
OpenShift Virtualization 리포지토리를 활성화하고 kubevirt-virtctl
패키지를 설치하여 RHEL(Red Hat Enterprise Linux) 8에 virtctl
RPM 패키지를 설치할 수 있습니다.
사전 요구 사항
- 클러스터의 각 호스트는 RHSM(Red Hat Subscription Manager)에 등록되어 있어야 하며 유효한 OpenShift Container Platform 서브스크립션이 있어야 합니다.
프로세스
subscription-manager
CLI 툴을 사용하여 다음 명령을 실행하여 OpenShift Virtualization 리포지토리를 활성화합니다.# subscription-manager repos --enable cnv-4.15-for-rhel-8-x86_64-rpms
다음 명령을 실행하여
kubevirt-virtctl
패키지를 설치합니다.# yum install kubevirt-virtctl
3.2.2. virtctl 명령
virtctl
클라이언트는 OpenShift Virtualization 리소스를 관리하는 명령줄 유틸리티입니다.
VM(가상 머신) 명령은 별도로 지정하지 않는 한 VMI(가상 머신 인스턴스)에도 적용됩니다.
3.2.2.1. virtctl information 명령
virtctl
information 명령을 사용하여 virtctl
클라이언트에 대한 정보를 봅니다.
명령 | 설명 |
---|---|
|
|
|
|
| 특정 명령의 옵션 목록을 확인합니다. |
|
|
3.2.2.2. VM 정보 명령
virtctl
을 사용하여 VM(가상 머신) 및 VMI(가상 머신 인스턴스)에 대한 정보를 볼 수 있습니다.
명령 | 설명 |
---|---|
| 게스트 머신에서 사용 가능한 파일 시스템을 확인합니다. |
| 게스트 머신의 운영 체제에 대한 정보를 봅니다. |
| 게스트 머신에서 로그인한 사용자를 확인합니다. |
3.2.2.3. VM 매니페스트 생성 명령
virtctl create
명령을 사용하여 가상 머신, 인스턴스 유형 및 기본 설정에 대한 매니페스트를 생성할 수 있습니다.
명령 | 설명 |
---|---|
|
|
| VM 매니페스트를 생성하여 VM의 이름을 지정합니다. |
| 기존 클러스터 전체 인스턴스 유형을 사용하는 VM 매니페스트를 생성합니다. |
| 기존 네임스페이스 인스턴스 유형을 사용하는 VM 매니페스트를 생성합니다. |
| 클러스터 전체 인스턴스 유형에 대한 매니페스트를 생성합니다. |
| 네임스페이스가 지정된 인스턴스 유형에 대한 매니페스트를 생성합니다. |
| 클러스터 전체 VM 기본 설정에 대한 매니페스트를 생성하여 기본 설정 이름을 지정합니다. |
| 네임스페이스가 지정된 VM 기본 설정에 대한 매니페스트를 생성합니다. |
3.2.2.4. VM 관리 명령
virtctl
VM(가상 머신) 관리 명령을 사용하여 VM(가상 머신) 및 VMI(가상 머신 인스턴스)를 관리하고 마이그레이션합니다.
명령 | 설명 |
---|---|
| VM을 시작합니다. |
| 일시 중지된 상태에서 VM을 시작합니다. 이 옵션을 사용하면 VNC 콘솔에서 부팅 프로세스를 중단할 수 있습니다. |
| VM을 중지합니다. |
| VM을 강제로 중지합니다. 이 옵션을 사용하면 데이터 불일치 또는 데이터 손실이 발생할 수 있습니다. |
| VM 일시 중지. 머신 상태는 메모리에 유지됩니다. |
| VM 일시 중지를 해제합니다. |
| VM 마이그레이션. |
| VM 마이그레이션을 취소합니다. |
| VM을 다시 시작합니다. |
3.2.2.5. VM 연결 명령
virtctl
연결 명령을 사용하여 포트를 노출하고 VM(가상 머신) 및 VMI(가상 머신 인스턴스)에 연결합니다.
명령 | 설명 |
---|---|
| VM의 직렬 콘솔에 연결합니다. |
| VM의 지정된 포트를 전달하고 서비스를 노드의 지정된 포트에 노출하는 서비스를 생성합니다.
예: |
| 시스템에서 VM으로 파일을 복사합니다. 이 명령은 SSH 키 쌍의 개인 키를 사용합니다. VM은 공개 키를 사용하여 구성해야 합니다. |
| VM에서 시스템으로 파일을 복사합니다. 이 명령은 SSH 키 쌍의 개인 키를 사용합니다. VM은 공개 키를 사용하여 구성해야 합니다. |
| VM을 사용하여 SSH 연결을 엽니다. 이 명령은 SSH 키 쌍의 개인 키를 사용합니다. VM은 공개 키를 사용하여 구성해야 합니다. |
| VM의 VNC 콘솔에 연결합니다.
|
| 포트 번호를 표시하고 VNC 연결을 통해 뷰어를 사용하여 VM에 수동으로 연결합니다. |
| 해당 포트를 사용할 수 있는 경우 지정된 포트에서 프록시를 실행할 포트 번호를 지정합니다. 포트 번호를 지정하지 않으면 프록시는 임의의 포트에서 실행됩니다. |
3.2.2.6. VM 내보내기 명령
virtctl vmexport
명령을 사용하여 VM, VM 스냅샷 또는 PVC(영구 볼륨 클레임)에서 내보낸 볼륨을 생성, 다운로드 또는 삭제합니다. 특정 매니페스트에는 OpenShift Virtualization에서 사용할 수 있는 형식으로 디스크 이미지를 가져오기 위해 엔드포인트에 대한 액세스 권한을 부여하는 헤더 시크릿도 포함되어 있습니다.
명령 | 설명 |
---|---|
|
|
|
|
|
선택 사항:
|
|
|
| 기존 내보내기에 대한 매니페스트를 검색합니다. 매니페스트에는 헤더 보안이 포함되지 않습니다. |
| VM 예제에 대한 VM 내보내기를 생성하고 매니페스트를 검색합니다. 매니페스트에는 헤더 보안이 포함되지 않습니다. |
| VM 스냅샷 예에 대한 VM 내보내기를 생성하고 매니페스트를 검색합니다. 매니페스트에는 헤더 보안이 포함되지 않습니다. |
| 기존 내보내기에 대한 매니페스트를 검색합니다. 매니페스트에는 헤더 보안이 포함됩니다. |
| 기존 내보내기에 대한 매니페스트를 json 형식으로 검색합니다. 매니페스트에는 헤더 보안이 포함되지 않습니다. |
| 기존 내보내기에 대한 매니페스트를 검색합니다. 매니페스트에는 헤더 보안이 포함되어 있으며 지정된 파일에 씁니다. |
3.2.2.7. VM 메모리 덤프 명령
virtctl memory-dump
명령을 사용하여 PVC에 VM 메모리 덤프를 출력할 수 있습니다. 기존 PVC를 지정하거나 --create-claim
플래그를 사용하여 새 PVC를 생성할 수 있습니다.
사전 요구 사항
-
PVC 볼륨 모드는
FileSystem
이어야 합니다. PVC는 메모리 덤프를 포함할 수 있을 만큼 커야 합니다.
PVC 크기를 계산하는 공식은
(VMMemorySize + 100Mi) * FileSystemOverhead
입니다. 여기서100Mi
는 메모리 덤프 오버헤드입니다.다음 명령을 실행하여
HyperConverged
사용자 정의 리소스에서 핫 플러그 기능 게이트를 활성화해야 합니다.$ oc patch hyperconverged kubevirt-hyperconverged -n openshift-cnv \ --type json -p '[{"op": "add", "path": "/spec/featureGates", \ "value": "HotplugVolumes"}]'
메모리 덤프 다운로드
virtctl vmexport download
명령을 사용하여 메모리 덤프를 다운로드해야 합니다.
$ virtctl vmexport download <vmexport_name> --vm|pvc=<object_name> \ --volume=<volume_name> --output=<output_file>
명령 | 설명 |
---|---|
|
VM의 메모리 덤프를 PVC에 저장합니다. 메모리 덤프 상태가 선택 사항:
|
|
동일한 PVC를 사용하여 이 명령은 이전 메모리 덤프를 덮어씁니다. |
| 메모리 덤프 제거. 대상 PVC를 변경하려면 메모리 덤프를 수동으로 제거해야 합니다.
이 명령은 VM과 PVC 간의 연결을 제거하여 메모리 덤프가 |
3.2.2.8. 핫플러그 및 핫 플러그 해제 명령
virtctl
을 사용하여 실행 중인 VM(가상 머신) 및 VMI(가상 머신 인스턴스)에서 리소스를 추가하거나 제거합니다.
명령 | 설명 |
---|---|
| 데이터 볼륨 또는 PVC(영구 볼륨 클레임)를 핫플러그합니다. 선택 사항:
|
| 가상 디스크 핫 플러그를 해제합니다. |
| Linux 브리지 네트워크 인터페이스를 핫 플러그로 연결합니다. |
| Linux 브리지 네트워크 인터페이스를 핫 플러그 해제합니다. |
3.2.2.9. 이미지 업로드 명령
virtctl image-upload
명령을 사용하여 VM 이미지를 데이터 볼륨에 업로드합니다.
명령 | 설명 |
---|---|
| VM 이미지를 이미 존재하는 데이터 볼륨에 업로드합니다. |
| 요청된 크기의 새 데이터 볼륨에 VM 이미지를 업로드합니다. |
3.2.3. virtctl을 사용하여 libguestfs 배포
virtctl guestfs
명령을 사용하여 libguestfs-tools
및 연결된 PVC(영구 볼륨 클레임)를 사용하여 대화형 컨테이너를 배포할 수 있습니다.
절차
libguestfs-tools
를 사용하여 컨테이너를 배포하려면 PVC를 마운트하고 쉘을 연결하려면 다음 명령을 실행합니다.$ virtctl guestfs -n <namespace> <pvc_name> 1
- 1
- PVC 이름은 필수 인수입니다. 이를 포함하지 않으면 오류 메시지가 표시됩니다.
3.2.3.1. libguestfs 및 virtctl guestfs 명령
Libguestfs
툴을 사용하면 VM(가상 머신) 디스크 이미지에 액세스하고 수정할 수 있습니다. libguestfs
툴을 사용하여 게스트의 파일을 보고 편집하고, 가상 시스템을 복제 및 빌드하며, 디스크를 포맷하고 크기를 조정할 수 있습니다.
virtctl guestfs
명령과 해당 하위 명령을 사용하여 PVC에서 VM 디스크를 수정, 검사 및 디버깅할 수도 있습니다. 가능한 하위 명령의 전체 목록을 보려면 명령줄에 virt-
을 입력하고 Tab 키를 누릅니다. 예를 들면 다음과 같습니다.
명령 | 설명 |
---|---|
| 터미널에서 파일을 대화식으로 편집합니다. |
| ssh 키를 게스트에 삽입하고 로그인을 만듭니다. |
| VM에서 사용하는 디스크 공간 크기를 확인하십시오. |
| 전체 목록이 포함된 출력 파일을 생성하여 게스트에 설치된 모든 RPM의 전체 목록을 확인하십시오. |
|
터미널에서 |
| 템플릿으로 사용할 가상 시스템 디스크 이미지를 봉인합니다. |
기본적으로 virtctl guestfs
는 VM 디스크를 관리하는 데 필요한 모든 내용으로 세션을 생성합니다. 그러나 이 명령은 동작을 사용자 지정하려는 경우 여러 플래그 옵션도 지원합니다.
플래그 옵션 | 설명 |
---|---|
|
|
| 특정 네임스페이스에서 PVC를 사용하려면 다음을 수행합니다.
|
|
|
|
기본적으로
클러스터에
설정되지 않은 경우 |
|
|
또한 명령은 다른 pod에서 PVC를 사용 중인지 확인합니다. 이 경우 오류 메시지가 표시됩니다. 그러나 libguestfs-tools
프로세스가 시작되면 동일한 PVC를 사용하는 새 Pod를 방지할 수 없습니다. 동일한 PVC에 액세스하는 VM을 시작하기 전에 활성 virtctl guestfs
Pod가 없는지 확인해야 합니다.
virtctl guestfs
명령은 대화형 Pod에 연결된 단일 PVC만 허용합니다.