The Wayback Machine - https://web.archive.org/web/20200611235855/https://github.com/Mirantis/virtlet/
Skip to content
Kubernetes CRI implementation for running VM workloads
Go Shell
Branch: master
Clone or download

Latest commit

Latest commit 1659b8a Dec 4, 2019

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci Update for Kubernetes 1.14 May 15, 2019
.github Renamed stale.yaml to stale.yml Aug 27, 2018
build Update for Kubernetes 1.14 May 15, 2019
cmd Fix kublelet killing VMs upon Virtlet pod restart Feb 20, 2019
contrib/cirros-patches Fix uclibc in own Cirros Feb 20, 2018
deploy Merge pull request #889 from GregoryVds/multi_cni_demo Oct 4, 2019
docs Fix broken link Oct 4, 2019
examples Update for Kubernetes 1.14 May 15, 2019
images use grpc health probe for virtlet container May 8, 2019
pkg Merge pull request #895 from Mirantis/ivan4th/fix-pod-recovery Sep 30, 2019
tests Support Debian image in e2e tests Mar 5, 2019
.codeclimate.yml [WiP] fix pod recovery after node reboot Aug 13, 2019
.dockerignore Add vendor/ to .dockerignore Dec 9, 2016
.gitignore Add mkdocs support to build/cmd.sh Jan 24, 2019
ACKNOWLEDGE.md Reference to EU 5G-T support added Dec 15, 2017
CONTRIBUTING.md Added link to CLA document in CONTRIBUTING.md Oct 25, 2017
LICENSE Initial commit Aug 24, 2016
OWNERS owners: Add nhlfr to reviewers Mar 14, 2017
README.md Update for Kubernetes 1.14 May 15, 2019
code-of-conduct.md docs: Update project to follow k8s incubation template Mar 13, 2017
cri-tools.patch Docs and patch for cri-tools Jun 29, 2017
dockerfilelint.test docker: Introduce dockerfile_lint checks Oct 3, 2016
glide.lock Adding GKE support Jun 17, 2019
glide.yaml Adding GKE support Jun 17, 2019
gofmt.test autotools: Introduce cpplint and gofmt Sep 26, 2016
test.sh Added VIRTLET_DEMO_BRANCH Oct 4, 2017

README.md

virtlet CircleCI Maintainability Go Report Card

Virtlet is a Kubernetes runtime server which allows you to run VM workloads, based on QCOW2 images.

It is possible to run Virtlet by following the instructions from either Setting up the environment or Deploying Virtlet as a DaemonSet on kubeadm-dind-cluster documents. There's also separate document describing the process of installing Virtlet on real clusters.

See here for the description of Virtlet architecture.

Description & Documentation

See here for user-facing Virtlet description and documentation.

Community

You can join #virtlet channel on Kubernetes Slack (register at slack.k8s.io if you're not in k8s group already). Both the users and developers are welcome!

Getting started with Virtlet

To try out Virtlet follow the instructions from Setting up the environment and try out examples documents.

Virtlet introduction video

You can watch and listen to Virtlet demo video that was recorded on Kubernetes Community Meeting here.

Command line interface

Virtlet comes with a helper tool, virtletctl, that helps managing the VM pods. The binaries are available for Linux and Mac OS X in the Releases section. You can also install virtletctl as a kubectl plugin:

virtletctl install

After that you can use kubectl plugin virt instead of virtletctl (plugin subcommand will not be necessary when kubectl plugins become stable):

kubectl plugin virt ssh cirros@cirros-vm -- -i examples/vmkey

Virtlet usage demo

You can watch sample usage session under this link.

You can also give Virtlet a quick try using our demo script (requires Docker 1.12+):

wget https://raw.githubusercontent.com/Mirantis/virtlet/master/deploy/demo.sh
chmod +x demo.sh
# './demo.sh --help' displays the description
./demo.sh

The demo will start a test cluster, deploy Virtlet on it and then boot a CirrOS VM there. You may access sample nginx server via curl http://nginx.default.svc.cluster.local from inside the VM. To disconnect from VM, press Ctrl-D. After the VM has booted, you can also use virtletctl tool to connect to its SSH server:

virtletctl ssh cirros@cirros-vm -- -i examples/vmkey [command...]

By default, CNI bridge plugin is used for cluster networking. It's also possible to override this with calico, flannel or weave plugin, e.g.:

CNI_PLUGIN=flannel ./demo.sh

There's also an option to deploy Virtlet on master node of the DIND cluster, which can be handy e.g. if you don't want to use worker nodes (i.e. start the cluster with NUM_NODES=0):

VIRTLET_ON_MASTER=1 ./demo.sh

The demo script will check for KVM support on the host and will make Virtlet use KVM if it's available on Docker host. If KVM is not available, plain QEMU will be used.

The demo is based on kubeadm-dind-cluster project. Docker btrfs storage driver is currently unsupported. Please refer to kubeadm-dind-cluster documentation for more info.

You can remove the test cluster with ./dind-cluster-v1.14.sh clean when you no longer need it.

External projects using Virtlet

There are some external projects using Virtlet already. One interesting usecase is that of MIKELANGELO project that runs OSv unikernels on Kubernetes using Virtlet. Unikernels are special case of VMs that are extremely small in size (20MB or so) and can only run a single process each. Nevertheless, Virtlet has no problems handling them on Kubernetes as demonstrated in this video. Microservice Demo is available here.

Need any help with Virtlet?

If you will encounter any issue when using Virtlet please look into our issue tracker on github. If your case is not mentioned there - please fill new issue for it. In case of any questions you may also use #virtlet channel on Kubernetes Slack.

Contributing

Virtlet is an open source project and any contributions are welcomed. Look into Contributing guidelines document for our guidelines and further instructions on how to set up Virtlet development environment.

Licensing

Unless specifically noted, all parts of this project are licensed under the Apache 2.0 license.

You can’t perform that action at this time.