오늘은 Kubernetes Kubevirt 환경설정 및 vm 생성하기에 대해 포스팅하려고 합니다.
Kubevirt는 Kubernetes에서 컨테이너 뿐만 아니라 가상 머신까지 함께 관리할 수 있는
Kubernetes의 애드온 형태의 기술입니다.
별도의 가상머신을 연결하는 것이 아닌 Kubernetes의 환경에서
pod 단위의 가상머신을 생성하여 관리합니다.
Kubevirt 환경설정을 먼저 구성해보도록 하겠습니다.
Kubernetes의 애드온 형태이기 때문에 사전에 Kubernetes 환경이 먼저 구성되어있어야
Kubevirt 환경설정이 가능합니다.
저는 Kubernetes환경이 구성되어있는 web tool인 katacoda에서 진행하겠습니다.
https://www.katacoda.com/kubevirt/scenarios/kubevirt-101
Katacoda에서 Kubevirt를 설치합니다.
아래 명령어들을 수행하면 간단하게 설치 및 환경 구성이 됩니다.
$ export KUBEVIRT_VERSION=v0.49.0
$ kubectl create -f https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/kubevirt-operator.yaml
$ kubectl create -f https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/kubevirt-cr.yaml
$ kubectl -n kubevirt patch kubevirt kubevirt --type=merge --patch '{"spec":{"configuration":{"developerConfiguration":{"useEmulation":true}}}}'
$ wget -O virtctl https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/virtctl-${KUBEVIRT_VERSION}-linux-amd64
$ chmod +x virtctl
$ sudo install virtctl /usr/local/bin
설치가 잘 되었는지 확인하기 위해
$ kubectl get all -n kubevirt 명령어를 실행합니다.
아래 내용과 같이 필요한 pod, service, daemonset, deploymemt 등이 설치되어 실행되면
정상적으로 구성이 완료됐다고 볼 수 있습니다.
$ kubectl get all -n kubevirt
NAME READY STATUS RESTARTS AGE
pod/virt-api-8959bd8d6-2fdfr 1/1 Running 0 7m38s
pod/virt-api-8959bd8d6-rtt2v 1/1 Running 0 7m38s
pod/virt-controller-6fc6b9b7cf-5p68x 1/1 Running 0 7m11s
pod/virt-controller-6fc6b9b7cf-qqqtq 1/1 Running 0 7m11s
pod/virt-handler-6k5mv 1/1 Running 0 7m11s
pod/virt-operator-5c74687999-2rkwx 1/1 Running 0 8m13s
pod/virt-operator-5c74687999-57cn6 1/1 Running 0 8m12s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubevirt-operator-webhook ClusterIP 10.111.112.240 <none> 443/TCP 7m39s
service/kubevirt-prometheus-metrics ClusterIP 10.110.125.172 <none> 443/TCP 7m40s
service/virt-api ClusterIP 10.107.121.178 <none> 443/TCP 7m40s
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/virt-handler 1 1 1 1 1 kubernetes.io/os=linux 7m11s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/virt-api 2/2 2 2 7m38s
deployment.apps/virt-controller 2/2 2 2 7m12s
deployment.apps/virt-operator 2/2 2 2 8m13s
NAME DESIRED CURRENT READY AGE
replicaset.apps/virt-api-8959bd8d6 2 2 2 7m38s
replicaset.apps/virt-controller-6fc6b9b7cf 2 2 2 7m12s
replicaset.apps/virt-operator-5c74687999 2 2 2 8m13s
NAME AGE PHASE
kubevirt.kubevirt.io/kubevirt 8m11s Deployed
controlplane $
다음으로 가상머신을 생성하고 실행해보도록 하겠습니다.
다음과 같이 오픈된 가상머신 vm을 생성해보면
$ kubectl apply -f https://kubevirt.io/labs/manifests/vm.yaml
최초 상태는 status가 stopped 상태이고
kubevirt에서 사용되는 다음과 같은 명령어를 실행하면
$ virtctl start [vm-name]
status가 starting 된 것을 확인할 수 있습니다.
$ kubectl apply -f https://kubevirt.io/labs/manifests/vm.yaml
$ kubectl get vm
NAME AGE STATUS READY
testvm 3m Stopped False
$ virtctl start testvm
$ kubectl get vm
NAME AGE STATUS READY
testvm 4m57s Starting False
vm은 pod이기 때문에 starting된 vm은
$ kubectl get pod
명령어 또한 확인이 가능합니다.
$ kubectl get pod
dNAME READY STATUS RESTARTS AGE
virt-launcher-testvm-f6d55 2/2 Running 0 21m
starting된 vm에 접속하기위해
$ virtctl console testvm
명령어를 사용합니다.
$ virtctl console testvm
Successfully connected to testvm console. The escape sequence is ^]
login as 'cirros' user. default password: 'gocubsgo'. use 'sudo' for root.
testvm login: cirros
Password:
vm접속 후에 간단하게 명령어를 입력해보면
새로운 가상환경이라는 것을 확인할 수 있습니다.
$ df -h
Filesystem Size Used Available Use% Mounted on
/dev 18.2M 0 18.2M 0% /dev
/dev/vda1 29.7M 23.0M 5.0M 82% /
tmpfs 21.8M 0 21.8M 0% /dev/shm
tmpfs 21.8M 60.0K 21.7M 0% /run
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1
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
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 52:54:00:33:d4:de brd ff:ff:ff:ff:ff:ff
inet 10.0.2.2/24 brd 10.0.2.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:fe33:d4de/64 scope link
valid_lft forever preferred_lft forever
지금까지 Kubernetes Kubevirt 환경설정 및 vm 생성하기에 대한 포스팅이였습니다.
'Develope > Kubernetes' 카테고리의 다른 글
[Kubernetes] kubevirt uploadproxy unexpected return value 502 에러 해결 방법 (0) | 2022.07.10 |
---|---|
[Kubernetes] VirtualBox Node INTERNAL-IP 설정 방법 (2) | 2022.07.07 |
[Kubernetes] Unable to read config path err="path does not exist, ignoring" path="/etc/kubernetes/manifests" 해결 방법 (0) | 2022.07.05 |
[Kubernetes] Kubevirt vm sample yaml (0) | 2022.06.14 |
[Kubernetes] 쿠버네티스 설치 및 환경구성(CentOS 7.9) (3) | 2022.04.13 |