공부합시다!/Kubernetes

kubevirt 설치

간서치 2024. 7. 30. 14:20
728x90

음! 오늘은 조금 특별한 그러나 그러 특별하지 않은

kubevirt 설치를 진행해 보겠습니다.

 

MSA환경으로 구성할 수 없거나 Migration할 수 없는 경우에 가상화 환경을 통해서 workload를 서비스해야 하는 경우에 유용합니다.

 

1. kubevirt

 1.1. Kubernetes add-on으로 libvirt virtual machine 관리가능
 1.2. Kubernetes 가상화 API 및 런타임을 사용하여 가상 머신을 정의하고 관리
 1.3. container화 할 수없는 workload를 virtual machine 형태로 migration하여 관리
 1.4. 현재 최신버젼은 v1.3.0
 1.5. 공식 사이트 kubervirt.io
 1.6. 깃허브 https://github.com/kubevirt

 

KubeVirt

Managing virtualization workloads on Kubernetes. KubeVirt has 87 repositories available. Follow their code on GitHub.

github.com

2. kubernetes cr(custom resourece):  Kubernetes 사용자 정의 리소스
3. kubernetes operator:  사용자 정의 리소스를 사용하여 애플리케이션 및 해당 컴포넌트를 관리하는 쿠버네티스의 소프트웨어 익스텐션
 3.1. 지원하는 Container Runtime 
  3.1.1. containerd
  3.1.2. crio

 

4. 최신버젼
 https://github.com/kubevirt/kubevirt/releases/tag/v1.3.0

 

5. 설치파일: 3개의 파일 다운로드 wget활용 
https://github.com/kubevirt/kubevirt/releases/download/v1.3.0/kubevirt-cr.yaml
https://github.com/kubevirt/kubevirt/releases/download/v1.3.0/kubevirt-operator.yaml
https://github.com/kubevirt/kubevirt/releases/download/v1.3.0/virtctl-v1.3.0-linux-amd64

 

6. Install

 6.1. kubevirt-operator.yaml 파일 다운로드

 # wget https://github.com/kubevirt/kubevirt/releases/download/v1.3.0/kubevirt-operator.yaml

 # kubectl apply -f kubevirt-operator.yaml

or

 # yum install -y jq    jq는 commandline json processor

 # export KUBEVIRT_VERSION=$(curl -s https://api.github.com/repos/kubevirt/kubevirt/releases/latest | jq -r .tag_name)
 # echo $KUBEVIRT_VERSION

 # kubectl create -f https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/kubevirt-operator.yaml

 

 6.2. kubevirt-cr.yaml 다운로드

 # wget https://github.com/kubevirt/kubevirt/releases/download/v1.3.0/kubevirt-cr.yaml

 # kubectl apply -f kubevirt-cr.yaml 

or

 # 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}}}}'

 

 6.3. 설치 확인

 # kubectl get all -n kubevirt

 

 6.4. virtctl 명령어 파일 

 # cp virtctl-v1.3.0-linux-amd64 virtctl

 # chmod +x virtctl

 # cp virtctl /usr/bin or /usr/local/sbin

 

7. Test용 VM 실행, cirros

 7.1. vm.yaml 적용

 # kubectl apply -f https://raw.githubusercontent.com/kubevirt/kubevirt.github.io/master/labs/manifests/vm.yaml

음 이것보다는 

# kubectl apply -f https://kubevirt.io/labs/manifests/vm.yaml

이 주소가 조금은 더 심플하네요!

 

 7.2. vm start & console 접속

 # virtctl start testvm

 # kubectl get vm

 # kubectl get vmis

 # virtctl console testvm

 login id: cirros

 password: gocubsgo

 

# virtctl stop testvm

# kubectl delete vm testvm

 

간단한 설치 및 코드

# kubevirt 최신 버젼 확인 
export KUBEVIRT_VERSION=$(curl -s https://api.github.com/repos/kubevirt/kubevirt/releases/latest | jq -r .tag_name)
echo $KUBEVIRT_VERSION

# kubevirt operator 설치
kubectl create -f https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/kubevirt-operator.yaml

# kubevirt cr 설치
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}}}}'

# virtctl 설치
wget -O virtctl https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/virtctl-${KUBEVIRT_VERSION}-linux-amd64

# 설치 확인
kubectl get pods -n kubevirt (node수에 따라서 다름)

------------------------------------------------------------------------
controlplane $ kubectl get pods -n kubevirt
NAME                               READY     STATUS    RESTARTS   AGE
virt-api-7fc57db6dd-g4s4w          1/1       Running   0          3m
virt-api-7fc57db6dd-zd95q          1/1       Running   0          3m
virt-controller-6849d45bcc-88zd4   1/1       Running   0          3m
virt-controller-6849d45bcc-cmfzk   1/1       Running   0          3m
virt-handler-fvsqw                 1/1       Running   0          3m
virt-operator-5649f67475-gmphg     1/1       Running   0          4m
virt-operator-5649f67475-sw78k     1/1       Running   0          4m
-------------------------------------------------------------------------

kubectl -n kubevirt get kubevirt

# testvm 실행 및 접속
kubectl apply -f https://raw.githubusercontent.com/kubevirt/kubevirt.github.io/master/labs/manifests/vm.yaml
kubectl get vm
virtctl start testvm
virtctl console testvm
728x90