Table of Contents
How to start using kubevirt
- Build k8s-cluster https://www.altlinux.org/Kubernetes (as mininal master and slave)
- Om master node as root:
$ apt-get install qemu-kvm podman
- On slave as root
$ apt-get install qemu-kvm
-
Set rootless mode for podman
-
Do steps from https://kubevirt.io/user-guide/cluster_admin/installation/:
// Point at latest release
$ export RELEASE=$(curl https://storage.googleapis.com/kubevirt-prow/release/kubevirt/kubevirt/stable.txt)
// Deploy the KubeVirt operator
$ kubectl apply -f https://github.com/kubevirt/kubevirt/releases/download/${RELEASE}/kubevirt-operator.yaml
// Create the KubeVirt CR (instance deployment request) which triggers the actual installation
$ kubectl apply -f https://github.com/kubevirt/kubevirt/releases/download/${RELEASE}/kubevirt-cr.yaml
// wait until all KubeVirt components are up
$ kubectl -n kubevirt wait kv kubevirt --for condition=Available
- Creare secret key for connectiong to your kubevirt-machines
$ kubectl create secret generic kvm-key --from-file=ssh-publickey=/home//.ssh/<id_ed25519.pub>
-
Create or download simple vm-image with alt os you need. Example see https://quay.io/organization/containerdisks
-
Create config yaml for VorualMachineInstance
metadata:
name: <name>
annotations:
kubevirt.io/keep-launcher-alive-after-failure: "true" # setting for stay debug mode for failure component
labels:
debugLogs: "true"
logVerbosity: "6"
apiVersion: kubevirt.io/v1
kind: VirtualMachineInstance
spec:
domain:
resources:
requests:
memory: 1024M
devices:
disks:
- name: containerdisk
disk:
bus: virtio
- name: cloudinitdisk
disk:
bus: virtio
terminationGracePeriodSeconds: 0
accessCredentials:
- sshPublicKey:
source:
secret:
secretName: kvm-key #key new from previuos step
propagationMethod:
noCloud: {}
volumes:
- name: containerdisk
containerDisk:
image: <gitea.basealt.ru/alt/vmidisks/altlinux:latest> #path to you vm-image
- name: cloudinitdisk
cloudInitNoCloud:
userData: |-
#cloud-config
password: <user>
user: <pass>
chpasswd: { expire: False }
How to delete kubevirt
- On master node as nonroot:
$ export RELEASE=v0.17.0
$ kubectl delete -n kubevirt kubevirt kubevirt --wait=true # --wait=true should anyway be default
$ kubectl delete apiservices v1.subresources.kubevirt.io # this needs to be deleted to avoid stuck terminating namespaces
$ kubectl delete mutatingwebhookconfigurations virt-api-mutator # not blocking but would be left over
$ kubectl delete validatingwebhookconfigurations virt-operator-validator # not blocking but would be left over
$ kubectl delete validatingwebhookconfigurations virt-api-validator # not blocking but would be left over
$ kubectl delete -f https://github.com/kubevirt/kubevirt/releases/download/${RELEASE}/kubevirt-operator.yaml --wait=false
- On master node as nonroot:
$ rm -rf /home//.kube/config
- On master as root:
$ kubeadm reset system
$ systemctl status kubelet