3.2. 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.16-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만 허용합니다.
3.2.4. Ansible 사용
OpenShift Virtualization에 Ansible 컬렉션을 사용하려면 Red Hat Ansible Automation Hub (Red Hat Hybrid Cloud Console)를 참조하십시오.