이 글에서는 Docker Desktop의 쿠버네티스 환경을 활용하여 KubeVirt를 설치하고 기본 동작을 테스트하는 방법을 알아보겠습니다. Mac 환경을 기준으로 진행하지만, Windows 사용자도 큰 차이 없이 따라할 수 있도록 설명하겠습니다.
📌 실습 환경 요구사항
KubeVirt를 설치하기 전에 먼저 실습 환경의 요구사항을 확인해 보겠습니다.
✅ Docker Desktop 준비
Docker Desktop은 개발자를 위한 로컬 쿠버네티스 환경을 쉽게 구성할 수 있게 해주는 도구입니다. KubeVirt 실습을 위해서는 다음 요구 사항을 충족해야 합니다:
- Docker Desktop 버전 4.4.0 이상 설치
- 쿠버네티스 기능 활성화 (버전 1.21 이상 권장)
- 최소 4GB 메모리 할당 (8GB 이상 권장)
- 하드웨어 가상화 기능 지원 (Mac의 경우 네이티브 지원)
▶️ 시스템 사양 참고: "Docker Desktop에서 KubeVirt 실습 시 VM을 실행하려면 추가 리소스가 필요합니다. 특히 메모리를 넉넉하게 할당하는 것이 중요합니다. 실제 VM 실행 시에는 Docker Desktop에 최소 8GB 이상의 메모리를 할당하는 것을 권장합니다."
✅ 필요한 CLI 도구
원활한 실습을 위해 다음 CLI 도구를 설치해야 합니다:
- kubectl: 쿠버네티스 클러스터와 상호작용하는 CLI 도구
- virtctl: KubeVirt VM을 관리하는 CLI 도구
대부분의 Mac 사용자는 Homebrew를 통해 이러한 도구를 쉽게 설치할 수 있습니다:
# kubectl 설치 (이미 있다면 생략)
$ brew install kubectl # Homebrew를 통해 kubectl을 설치하는 명령어
# virtctl은 KubeVirt 설치 후 다운로드 예정
📌 Docker Desktop 설정하기
KubeVirt 실습 환경을 위한 Docker Desktop 설정 방법을 알아보겠습니다.
✅ Docker Desktop 설치
아직 Docker Desktop이 설치되어 있지 않다면, 공식 웹사이트에서 다운로드하여 설치합니다:
- Mac: https://www.docker.com/products/docker-desktop
- Windows: https://www.docker.com/products/docker-desktop
✅ 쿠버네티스 활성화
Docker Desktop에서 쿠버네티스 기능을 활성화하는 방법은 다음과 같습니다:
- Docker Desktop 아이콘 클릭 > Preferences 선택
- Kubernetes 탭 클릭
- "Enable Kubernetes" 체크박스 선택
- "Apply & Restart" 버튼 클릭
✅ 리소스 할당 설정
Docker Desktop에 충분한 리소스를 할당하기 위해:
- Docker Desktop 아이콘 클릭 > Preferences 선택
- Resources 탭 클릭
- CPU 할당: 최소 2코어 (4코어 이상 권장)
- Memory 할당: 최소 4GB (8GB 이상 권장)
- Swap 크기: 1GB 이상
- Disk image size: 최소 40GB
- "Apply & Restart" 버튼 클릭
▶️ 성능 팁: "Mac에서 Docker Desktop의 성능을 높이려면 'Use the new Virtualization framework' 옵션을 활성화하는 것이 좋습니다. 이는 Apple Silicon 맥에서 특히 중요합니다."
✅ 설정 확인
Docker Desktop이 올바르게 설정되었는지 확인하기 위해 다음 명령어를 실행합니다:
# 쿠버네티스 클러스터 상태 확인
$ kubectl cluster-info
# 출력: Kubernetes control plane이 실행 중인지 확인하고 API 서버 주소 표시
# 노드 상태 확인
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
docker-desktop Ready master 1d v1.24.0
# 출력: docker-desktop 노드가 Ready 상태인지 확인, 마스터 역할, 버전 정보 확인
# 네임스페이스 확인
$ kubectl get ns
# 출력: 클러스터의 기본 네임스페이스 목록이 표시됨 (kube-system, default 등)
모든 것이 정상이라면, 다음 단계인 KubeVirt 설치로 넘어갈 수 있습니다.
📌 KubeVirt 설치하기
이제 Docker Desktop 위에 KubeVirt를 설치해보겠습니다. 설치는 크게 Operator 설치와 KubeVirt CR 생성의 두 단계로 진행됩니다.
✅ KubeVirt Operator 설치
쿠버네티스 Operator 패턴을 사용하여 KubeVirt를 설치합니다:
# 최신 KubeVirt 버전 확인 (현재 예시는 v0.59.0)
$ KUBEVIRT_VERSION=$(curl -s https://api.github.com/repos/kubevirt/kubevirt/releases/latest | jq -r .tag_name)
# GitHub API를 통해 최신 KubeVirt 버전을 자동으로 가져옴
$ echo $KUBEVIRT_VERSION
v0.59.0
# 설정된 KubeVirt 버전 변수 확인
# 또는 특정 버전을 직접 지정
$ KUBEVIRT_VERSION="v0.59.0"
# 특정 버전을 사용하고 싶을 때 직접 지정 (안정성을 위해 권장)
# KubeVirt Operator 설치
$ kubectl create -f https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/kubevirt-operator.yaml
# KubeVirt Operator를 클러스터에 설치하는 명령어
# Operator는 KubeVirt의 배포와 관리를 자동화함
namespace/kubevirt created # kubevirt 네임스페이스 생성
customresourcedefinition.apiextensions.k8s.io/kubevirts.kubevirt.io created # KubeVirt CRD 생성
priorityclass.scheduling.k8s.io/kubevirt-cluster-critical created # 우선순위 클래스 생성
clusterrole.rbac.authorization.k8s.io/kubevirt-operator created # Operator 권한 설정
serviceaccount/kubevirt-operator created # 서비스 계정 생성
clusterrolebinding.rbac.authorization.k8s.io/kubevirt-operator created # 역할 바인딩
deployment.apps/virt-operator created # Operator 배포 생성
✅ KubeVirt CR 생성
이제 KubeVirt 커스텀 리소스(CR)를 생성하여 실제 KubeVirt 구성 요소를 배포합니다:
# KubeVirt CR 생성
$ kubectl create -f https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/kubevirt-cr.yaml
# KubeVirt 커스텀 리소스를 생성하는 명령어
# 이 명령은 virt-api, virt-controller, virt-handler 등의 KubeVirt 컴포넌트 배포를 시작함
kubevirt.kubevirt.io/kubevirt created # KubeVirt CR이 성공적으로 생성됨
✅ 설치 확인
KubeVirt가 제대로 설치되었는지 확인합니다:
# KubeVirt 리소스 상태 확인
$ kubectl get kubevirt -n kubevirt
NAME AGE PHASE
kubevirt 5m Deployed
# 출력: KubeVirt CR의 상태가 'Deployed'인지 확인, 배포 완료 의미
# 모든 KubeVirt Pod 확인
$ kubectl get pods -n kubevirt
NAME READY STATUS RESTARTS AGE
virt-api-7c8b8d557b-84nvg 1/1 Running 0 4m # API 서버 Pod
virt-api-7c8b8d557b-xtz6g 1/1 Running 0 4m # API 서버 복제본
virt-controller-8459c4f88b-kjk7q 1/1 Running 0 3m # 컨트롤러 Pod
virt-controller-8459c4f88b-r87tg 1/1 Running 0 3m # 컨트롤러 복제본
virt-handler-fzpnq 1/1 Running 0 3m # 노드 에이전트
virt-operator-54d785d64d-jdgkn 1/1 Running 0 5m # Operator Pod
virt-operator-54d785d64d-wzs5h 1/1 Running 0 5m # Operator 복제본
# 출력: 모든 KubeVirt 구성 요소 Pod가 Running 상태인지 확인
모든 Pod가 Running 상태가 되면 KubeVirt가 성공적으로 설치된 것입니다.
✅ virtctl 설치
KubeVirt VM을 관리하기 위한 virtctl CLI 도구를 설치합니다:
# Mac용 virtctl 다운로드
$ curl -L -o virtctl https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/virtctl-${KUBEVIRT_VERSION}-darwin-amd64
# Mac용 virtctl 바이너리를 다운로드하는 명령어
# darwin-amd64: Mac OS용 바이너리를 의미
# 실행 권한 부여
$ chmod +x virtctl
# 다운로드한 virtctl 파일에 실행 권한 부여
# PATH가 설정된 디렉토리로 이동
$ sudo mv virtctl /usr/local/bin
# virtctl을 시스템 경로에 추가하여 어디서든 실행 가능하게 함
# 설치 확인
$ virtctl version
Client Version: v0.59.0 # 로컬 virtctl 도구 버전
Server Version: v0.59.0 # 서버측 KubeVirt 버전
# 출력: 클라이언트와 서버 버전이 일치하는지 확인
▶️ Windows 사용자 참고: "Windows 사용자는 .exe 확장자를 가진 Windows용 바이너리를 다운로드하고, 시스템 PATH에 추가해야 합니다. 또는 WSL2를 사용 중이라면 Linux 바이너리를 사용할 수 있습니다."
📌 KVM 가속 확인 및 설정
KubeVirt는 가능하면 하드웨어 가속을 사용하여 VM 성능을 최적화합니다. 설치된 환경에서 KVM 가속 상태를 확인해 보겠습니다.
✅ KVM 지원 확인
# 노드의 KVM 지원 상태 확인
$ kubectl get nodes -o json | jq '.items[].status.allocatable | "kvm: " + (.devices\.kubevirt\.io\/kvm // "false")'
# 노드에서 KVM 가속 기능 지원 여부를 확인하는 명령어
# jq: JSON 처리 도구를 사용해 노드의 KVM 지원 상태를 추출
"kvm: false" # Docker Desktop에서는 일반적으로 false로 나타남
# 출력: Docker Desktop에서는 KVM 가속이 일반적으로 지원되지 않음
✅ 소프트웨어 에뮬레이션 사용 설정
Docker Desktop 환경에서는 일반적으로 KVM 가속을 사용할 수 없습니다. 이 경우 소프트웨어 에뮬레이션을 사용하도록 KubeVirt를 구성해야 합니다:
# KubeVirt CR 수정
$ kubectl edit kubevirt kubevirt -n kubevirt
# KubeVirt 커스텀 리소스를 편집하는 명령어
# 이 명령은 기본 에디터를 열어 KubeVirt 구성을 수정할 수 있게 함
다음 구성을 spec.configuration 아래에 추가합니다:
configuration:
developerConfiguration:
useEmulation: true # 하드웨어 가속 대신 소프트웨어 에뮬레이션 사용
# KVM 가속이 없는 환경에서도 VM을 실행할 수 있게 해주는 설정
저장 후 종료하면 KubeVirt가 구성을 적용합니다.
▶️ 성능 참고사항: "소프트웨어 에뮬레이션은 KVM 가속에 비해 성능이 크게 저하될 수 있습니다. 하지만 테스트 및 학습 목적으로는 충분합니다. 실제 프로덕션에서는 KVM 가속을 지원하는 베어메탈이나 중첩 가상화를 지원하는 클라우드 환경을 사용하는 것이 좋습니다."
✅ 구성 확인
# KubeVirt 구성 확인
$ kubectl get kubevirt kubevirt -n kubevirt -o yaml | grep -A3 emulation
# 설정된 에뮬레이션 구성을 확인하는 명령어
# -A3: 일치하는 라인과 이후 3줄을 함께 표시
developerConfiguration:
useEmulation: true # 에뮬레이션 사용 설정이 true로 되어 있는지 확인
이제 KubeVirt가 소프트웨어 에뮬레이션을 사용하도록 설정되었습니다.
📌 첫 번째 VM 배포하기
이제 KubeVirt 설치가 완료되었으니, 첫 번째 VM을 배포해 보겠습니다. 테스트를 위해 가벼운 CircOS VM을 사용하겠습니다.
✅ VM 매니페스트 생성
다음 내용으로 cirros-vm.yaml 파일을 생성합니다:
apiVersion: kubevirt.io/v1 # KubeVirt API 버전
kind: VirtualMachine # 리소스 유형: 가상머신 정의
metadata:
name: cirros-vm # VM 이름
spec:
running: true # 생성 즉시 VM 시작 여부
template: # VM 템플릿 정의 시작
metadata:
labels:
kubevirt.io/vm: cirros-vm # VM 식별용 레이블
spec:
domain: # VM 도메인(하드웨어) 정의
devices:
disks: # 디스크 장치 정의
- name: containerdisk # 첫 번째 디스크 (컨테이너 디스크)
disk:
bus: virtio # virtio 버스 사용 (성능 최적화)
- name: cloudinitdisk # 두 번째 디스크 (cloud-init 설정용)
disk:
bus: virtio
interfaces: # 네트워크 인터페이스 정의
- name: default
masquerade: {} # NAT 모드 네트워크 (Pod 외부 통신 가능)
resources:
requests:
memory: 256Mi # VM에 할당할 메모리 (최소 요청량)
networks: # 네트워크 정의
- name: default
pod: {} # 기본 Pod 네트워크 사용
volumes: # 볼륨 정의
- name: containerdisk # OS 이미지가 들어있는 컨테이너 디스크
containerDisk:
image: quay.io/kubevirt/cirros-container-disk-demo:latest # 경량 OS 이미지
- name: cloudinitdisk # cloud-init 볼륨 (VM 초기 설정용)
cloudInitNoCloud:
userDataBase64: SGkuXG4= # "Hi.\n"을 base64로 인코딩한 값
✅ VM 배포
# VM 생성
$ kubectl apply -f cirros-vm.yaml
virtualmachine.kubevirt.io/cirros-vm created
# 출력: VM 리소스가 성공적으로 생성됨을 확인
# VM 상태 확인
$ kubectl get vm
NAME AGE STATUS READY
cirros-vm 30s Running True
# 출력: VM이 Running 상태이고 Ready 상태가 True인지 확인
# VM 인스턴스 확인
$ kubectl get vmi
NAME AGE PHASE IP NODENAME
cirros-vm 35s Running 10.1.0.123 docker-desktop
# 출력: VM 인스턴스가 Running 상태이고 IP 주소가 할당되었는지 확인
# NODENAME은 VM이 실행 중인 노드를 나타냄
✅ VM 콘솔 접속
virtctl 명령어를 사용하여 VM 콘솔에 접속할 수 있습니다:
# VM 콘솔 접속
$ virtctl console cirros-vm
# virtctl을 사용해 VM의 직렬 콘솔에 접속하는 명령어
# 로그인 (기본 계정: cirros / gocubsgo)
login as 'cirros' user. default password: 'gocubsgo'. use 'sudo' for root.
cirros-vm login: cirros
Password: gocubsgo
$ uname -a
Linux cirros-vm 5.4.0-77-generic #86-Ubuntu SMP Thu Jun 17 02:35:03 UTC 2021 x86_64 GNU/Linux
# VM 내부에서 리눅스 커널 정보 확인
# VM에서 네트워크 확인
$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff
inet 10.1.0.123/24 brd 10.1.0.255 scope global eth0
valid_lft forever preferred_lft forever
# VM의 네트워크 인터페이스 정보 확인
# eth0: Pod 네트워크를 통해 할당된 IP 주소 확인
# 종료하려면 Ctrl+] 입력
✅ VM 종료 및 시작
virtctl 명령어로 VM 라이프사이클을 관리할 수 있습니다:
# VM 종료
$ virtctl stop cirros-vm
VM cirros-vm was scheduled to stop
# 출력: VM 종료 요청이 스케줄링되었음을 확인
# 상태 확인
$ kubectl get vm cirros-vm
NAME AGE STATUS READY
cirros-vm 5m Stopped False
# 출력: VM이 Stopped 상태이고 Ready가 False로 변경됨을 확인
# VM 시작
$ virtctl start cirros-vm
VM cirros-vm was scheduled to start
# 출력: VM 시작 요청이 스케줄링되었음을 확인
# 상태 확인
$ kubectl get vm cirros-vm
NAME AGE STATUS READY
cirros-vm 6m Running True
# 출력: VM이 다시 Running 상태가 되고 Ready가 True로 변경됨을 확인
▶️ 중요 포인트: "KubeVirt에서는 VirtualMachine(VM) 리소스가 VirtualMachineInstance(VMI)의 라이프사이클을 관리합니다. virtctl stop은 VMI를 삭제하지만 VM 리소스는 유지됩니다. 이는 쿠버네티스의 Deployment와 Pod의 관계와 유사합니다."
📌 VM 세부 정보 확인하기
생성된 VM의 세부 정보를 확인하여 KubeVirt의 동작 방식을 자세히 살펴보겠습니다.
✅ VM Pod 확인
KubeVirt는 VM을 실행하기 위해 특별한 Pod을 생성합니다:
# VM Pod 확인
$ kubectl get pods | grep virt-launcher
virt-launcher-cirros-vm-abc123 1/1 Running 0 3m
# 출력: VM을 실행하는 virt-launcher Pod 확인
# 각 VM 인스턴스마다 하나의 virt-launcher Pod이 생성됨
# Pod 세부 정보 확인
$ kubectl describe pod virt-launcher-cirros-vm-abc123
# 출력: virt-launcher Pod의 상세 정보 확인
# VM 실행에 필요한 컨테이너, 볼륨, 환경변수 등 정보가 표시됨
Pod 설명에서 주목할 점:
- virt-launcher 컨테이너가 VM을 실행
- compute 컨테이너가 libvirt/QEMU 프로세스 관리
- 특수 볼륨과 마운트 포인트 구성
✅ VM 리소스 세부 정보
# VM 리소스 세부 정보 확인
$ kubectl describe vm cirros-vm
# 출력: VirtualMachine 리소스의 상세 정보 확인
# VM의 구성, 상태, 이벤트 등 정보가 표시됨
# VMI 리소스 세부 정보 확인
$ kubectl describe vmi cirros-vm
# 출력: VirtualMachineInstance 리소스의 상세 정보 확인
# 실행 중인 VM 인스턴스의 도메인 설정, IP 주소 등 정보가 표시됨
이 명령은 VM의 다양한 구성 요소와 상태 정보를 보여줍니다:
- 도메인 설정 (CPU, 메모리 등)
- 디스크 및 네트워크 구성
- 현재 상태 및 이벤트 로그
✅ VM 로그 확인
# VM Pod의 로그 확인
$ kubectl logs virt-launcher-cirros-vm-abc123
# 출력: virt-launcher Pod의 로그 확인
# VM 부팅 과정과 관련된 로그 메시지가 표시됨
이 로그에서는 다음과 같은 정보를 볼 수 있습니다:
- VM 부팅 프로세스
- 디스크 및 네트워크 연결 상태
- 오류 또는 경고 메시지
📌 SSH 접속 구성하기
VM에 SSH로 접속하려면 포트 포워딩이나 서비스를 구성해야 합니다. 간단한 포트 포워딩 방법을 알아보겠습니다.
✅ SSH 키 생성 및 VM에 추가
더 안전한 접속을 위해 SSH 키를 사용하는 새 VM을 생성해 보겠습니다:
# SSH 키 생성 (이미 있다면 생략)
$ ssh-keygen -t rsa -b 2048 -f ~/.ssh/kubevirt_rsa -N ""
# 출력: KubeVirt용 새 SSH 키 쌍 생성
# -t rsa: RSA 알고리즘 사용
# -b 2048: 2048비트 키 길이
# -N "": 패스프레이즈 없이 생성
# 공개 키 가져오기
$ SSH_PUB_KEY=$(cat ~/.ssh/kubevirt_rsa.pub)
# 생성한 SSH 공개 키를 환경 변수에 저장
새 VM 매니페스트 ssh-vm.yaml을 만듭니다:
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
name: ssh-vm # VM 이름
spec:
running: true # 생성 즉시 VM 시작
template:
metadata:
labels:
kubevirt.io/vm: ssh-vm # VM 식별 레이블
spec:
domain:
devices:
disks:
- name: containerdisk
disk:
bus: virtio # virtio 버스 사용 (성능 최적화)
- name: cloudinitdisk
disk:
bus: virtio
interfaces:
- name: default
masquerade: {} # NAT 모드 네트워크
resources:
requests:
memory: 512Mi # 메모리 512MB 할당 (Fedora에는 더 많은 메모리 필요)
networks:
- name: default
pod: {} # 기본 Pod 네트워크 사용
volumes:
- name: containerdisk
containerDisk:
image: quay.io/kubevirt/fedora-cloud-container-disk-demo:latest # Fedora OS 이미지
- name: cloudinitdisk
cloudInitNoCloud: # cloud-init 구성
userData: |
#cloud-config
password: fedora # 기본 패스워드 설정
chpasswd: { expire: False } # 패스워드 만료 비활성화
ssh_authorized_keys:
- ${SSH_PUB_KEY} # 생성한 SSH 공개 키 추가
✅ 포트 포워딩으로 SSH 접속
계속해서 KubeVirt 설치 및 SSH 접속 부분을 이어가겠습니다.
# VM 생성
$ SSH_PUB_KEY=$(cat ~/.ssh/kubevirt_rsa.pub)
$ sed "s|\${SSH_PUB_KEY}|$SSH_PUB_KEY|" ssh-vm.yaml | kubectl apply -f -
# 출력: SSH 키가 포함된 VM 매니페스트 적용
# sed 명령어를 사용해 SSH 공개 키를 VM 매니페스트에 삽입
# 포트 포워딩 설정
$ virtctl port-forward ssh-vm 22:22
# 출력: VM의 22번 포트(SSH)를 로컬 22번 포트로 포워딩
# 이렇게 하면 로컬에서 localhost:22로 VM에 SSH 접속 가능
# 새 터미널에서 SSH 접속
$ ssh -i ~/.ssh/kubevirt_rsa fedora@localhost
# 출력: 생성한 개인 키를 사용해 VM에 SSH 접속
# -i: SSH 개인 키 경로 지정
# fedora: Fedora VM의 기본 사용자
# VM 내부에서
[fedora@ssh-vm ~]$ sudo dnf update -y # 패키지 업데이트
[fedora@ssh-vm ~]$ exit # 접속 종료
▶️ VM 접속 팁: "실제 환경에서는 VM에 서비스를 연결하여 클러스터 내부 또는 외부에서 접근할 수 있습니다. 개발 환경에서는 virtctl port-forward가 간편한 솔루션입니다."
📌 VM 상태 모니터링
KubeVirt VM의 상태를 모니터링하는 방법을 알아보겠습니다.
✅ 이벤트 확인
# VM 관련 이벤트 확인
$ kubectl get events | grep cirros-vm
# 출력: VM 관련 이벤트 목록 표시
# VM 생성, 시작, 종료 등 이벤트 정보가 시간순으로 나타남
✅ 상태 모니터링
# VM 상태 감시
$ watch kubectl get vm,vmi
# 출력: VM과 VMI 상태를 실시간으로 확인
# watch 명령어로 2초마다 자동 갱신됨
# 특정 VM의 세부 상태 확인
$ kubectl get vm cirros-vm -o jsonpath='{.status}' | jq
# 출력: VM의 상태 정보를 JSON 형식으로 출력
# jq를 통해 보기 좋게 포맷팅
✅ 리소스 사용량 확인
# VM Pod의 리소스 사용량 확인
$ kubectl top pod virt-launcher-cirros-vm-abc123
# 출력: VM Pod의 CPU 및 메모리 사용량 확인
# metrics-server가 설치되어 있어야 작동
# 노드 전체 리소스 사용량 확인
$ kubectl top node
# 출력: 노드의 전체 CPU 및 메모리 사용량 확인
# VM을 포함한 모든 워크로드의 리소스 사용 상황 파악 가능
📌 VM 삭제 및 정리
실습이 끝난 후 리소스를 정리하는 방법입니다.
✅ VM 삭제
# 단일 VM 삭제
$ kubectl delete vm cirros-vm
virtualmachine.kubevirt.io "cirros-vm" deleted
# 출력: cirros-vm VM 리소스가 삭제됨
# VM 삭제 시 연관된 VMI와 virt-launcher Pod도 함께 삭제됨
# 다른 VM도 삭제
$ kubectl delete vm ssh-vm
virtualmachine.kubevirt.io "ssh-vm" deleted
# 출력: ssh-vm VM 리소스가 삭제됨
# 모든 VM 삭제 확인
$ kubectl get vm
No resources found in default namespace.
# 출력: 기본 네임스페이스에 VM이 없음을 확인
✅ KubeVirt 제거 (선택 사항)
실습 환경을 완전히 정리하려면 KubeVirt를 제거할 수 있습니다:
# KubeVirt CR 삭제
$ kubectl delete -f https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/kubevirt-cr.yaml
# 출력: KubeVirt CR 삭제
# 이 명령은 virt-api, virt-controller, virt-handler 등 KubeVirt 컴포넌트를 삭제함
# Operator 및 관련 리소스 삭제
$ kubectl delete -f https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/kubevirt-operator.yaml
# 출력: KubeVirt Operator 및 관련 리소스 삭제
# 이 명령은 CRD, 네임스페이스, RBAC 등 모든 KubeVirt 관련 리소스를 삭제함
✅ 실습 환경 재사용
다음 실습을 위해 Docker Desktop 쿠버네티스를 리셋하려면:
- Docker Desktop 아이콘 클릭 > Preferences
- Kubernetes 탭 선택
- "Reset Kubernetes Cluster" 버튼 클릭
- "Reset" 확인
▶️ 참고: "간단한 테스트 후에는 VM만 삭제하고 KubeVirt 설치는 유지하는 것이 좋습니다. 이렇게 하면 다음 실습을 더 빠르게 시작할 수 있습니다."
📌 Summary
이 글에서는 Docker Desktop의 쿠버네티스 환경에 KubeVirt를 설치하고 기본 VM을 실행하는 방법을 알아보았습니다. 주요 내용을 요약하면:
- Docker Desktop 설정: 쿠버네티스 활성화 및 충분한 리소스 할당
- KubeVirt 설치: Operator 설치 및 CR 생성 방식
- 소프트웨어 에뮬레이션 설정: Docker Desktop 환경에서 VM 실행을 위한 구성
- 첫 번째 VM 배포: VM 정의 및 관리 방법
- VM 접속 및 관리: 콘솔 및 SSH 접속, 라이프사이클 관리
- 모니터링 및 정리: VM 상태 확인 및 리소스 정리
'Kubernetes Tools > Kubevirt' 카테고리의 다른 글
[KubeVirt Ep.6] 🚀 VM의 스토리지 설정 | ephemeral vs persistent (0) | 2025.03.21 |
---|---|
[KubeVirt Ep.5] 🚀 VM 이미지 다루기 | ContainerDisk와 PVC 이해 및 활용 (0) | 2025.03.21 |
[KubeVirt Ep.4] 🚀 VirtualMachine 리소스 실습 | 나만의 VM 만들기 (0) | 2025.03.21 |
[KubeVirt Ep.2] 🚀 kubevirt 아키텍처 이해하기 | 주요 구성요소와 동작 흐름 (0) | 2025.03.21 |
[KubeVirt Ep.1] 🚀 kubevirt란 무엇인가? | VM과 컨테이너의 공존을 위한 해법 (0) | 2025.03.21 |