Skip to content

Files

This branch is 18161 commits behind kubevirt/kubevirt:main.

docs

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Apr 17, 2019
Jun 29, 2018
Feb 4, 2019
Feb 4, 2018
Jun 11, 2018
Nov 28, 2018
Jul 27, 2018
Jun 11, 2018
Nov 28, 2018
Aug 2, 2019
Jul 30, 2018
May 24, 2017
Jul 30, 2018
May 14, 2019
Jun 11, 2018
Jun 24, 2019
Jun 11, 2018
Jul 30, 2018
Jun 11, 2018
Jun 11, 2018
Jan 24, 2019
Jun 11, 2018
Jul 19, 2018
Dec 4, 2018
Jul 30, 2019
May 16, 2019
Nov 28, 2018
Aug 9, 2017
Jun 7, 2018

Technical Overview

Kubernetes allows for extensions to its architecture in the form of custom resources: https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/. KubeVirt represents virtual machines as custom resources and manages changes to libvirt domains based on the state of those resources.

Project Components

  • virt-api: This component provides a HTTP RESTful entrypoint to manage the virtual machines within the cluster.
  • virt-controller: This component manages the state of each VMI within the Kubernetes cluster.
  • virt-handler: This is a daemon that runs on each Kubernetes node. It is responsible for monitoring the state of VMIs according to Kubernetes and ensuring the corresponding libvirt domain is booted or halted accordingly.
  • virt-launcher: This component is a place-holder, one per running VMI. It contains the running VMI and remains running as long as the VMI is defined.

Scripts

  • cluster/kubectl.sh: This is a wrapper around Kubernetes' kubectl command so that it can be run directly from this checkout without logging into a node.
  • cluster/virtctl.sh is a wrapper around virtctl. virtctl brings all virtual machine specific commands with it. It is supplement to kubectl. e.g. cluster/virtctl.sh console testvm.
  • cluster/cli.sh helps you creating ephemeral kubernetes and openshift clusters for testing. This is helpful when direct management or access to cluster nodes is necessary. e.g. cluster/cli.sh ssh node01.

Makefile Commands

  • make cluster-up: This will deploy a fresh environment, the contents of KUBE_PROVIDER will be used to determine which provider from the cluster directory will be deployed.
  • make cluster-sync: After deploying a fresh environment, or after making changes to code in this tree, this command will sync the Pods and DaemonSets in the running KubeVirt environment with the state of this tree.
  • make cluster-down: This will tear down a running KubeVirt enviornment.