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>
Read More