This article outlines the steps and considerations for installing Kubevirt, a virtual machine platform built on Kubernetes. It covers crucial components, installation procedures, and compatibility considerations when using Microk8s as the underlying Kubernetes distribution.
install kubevirt do not install it on microk8s
install windows on kubevirt:
https://charlottemach.com/2020/11/03/windows-kubevirt-k3s.html
VirtualMachine
is like Deployment
while VirtualMachineInstance
is like Pod
export kubeconfig file path to ~/.bashrc
1 2 export KUBECONFIG=<kubeconfig_filepath>
download and modify the manifests
1 2 3 4 5 6 7 8 9 export VERSION=$(curl -s https://api.github.com/repos/kubevirt/kubevirt/releases | grep tag_name | grep -v -- '-rc' | head -1 | awk -F': ' '{print $2}' | sed 's/,//' | xargs)echo $VERSION curl -OLk https://github.com/kubevirt/kubevirt/releases/download/${VERSION} /kubevirt-operator.yaml curl -OLk https://github.com/kubevirt/kubevirt/releases/download/${VERSION} /kubevirt-cr.yaml export VERSION=$(curl -s https://api.github.com/repos/kubevirt/containerized-data-importer/releases | grep tag_name | grep -v -- '-rc' | head -1 | awk -F': ' '{print $2}' | sed 's/,//' | xargs)curl -LkO https://ghproxy.net/github.com/kubevirt/containerized-data-importer/releases/download/$VERSION /cdi-operator.yaml curl -LkO https://ghproxy.net/github.com/kubevirt/containerized-data-importer/releases/download/$VERSION /cdi-cr.yaml
check if it works
1 2 3 kubectl get pods -n kubevirt kubectl get vmi
install virtctl
1 2 3 4 5 curl -LkO <download_address> sudo mv <downloaded_binary> /usr/bin/virtctl sudo chmod +x /usr/bin/virtctl
create vm (already with tun device inside)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: name: <vm_name> spec: runStrategy: Always template: spec: terminationGracePeriodSeconds: 30 dnsConfig: nameservers: - 8.8 .8 .8 domain: resources: requests: memory: 1024M devices: disks: - name: containerdisk disk: bus: virtio - name: emptydisk disk: bus: virtio - disk: bus: virtio name: cloudinitdisk volumes: - name: containerdisk containerDisk: image: kubevirt/fedora-cloud-container-disk-demo:latest - name: emptydisk emptyDisk: capacity: "2Gi" - name: cloudinitdisk cloudInitNoCloud: userData: |- password: fedora chpasswd: { expire: False }
apply it to run the vm
1 2 3 4 kubectl apply -f init_vm.yaml kubectl get vm kubectl get vmi
to interact with the vm
1 2 3 4 5 6 7 virtctl console <vm_name> virtctl ssh <user>@<vm_name> virtctl vnc <vm_name>