kubevirt 설치
음! 오늘은 조금 특별한 그러나 그러 특별하지 않은
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