open-nomad/website/source/docs/drivers/qemu.html.md

65 lines
2.7 KiB
Markdown
Raw Normal View History

2015-09-20 22:31:33 +00:00
---
layout: "docs"
page_title: "Drivers: Qemu"
sidebar_current: "docs-drivers-qemu"
description: |-
The Qemu task driver is used to run virtual machines using Qemu/KVM.
---
# Qemu Driver
Name: `qemu`
2015-09-23 18:58:42 +00:00
The `Qemu` driver provides a generic virtual machine runner. Qemu can utilize
the KVM kernel module to utilize hardware virtualization features and provide
great performance. Currently the `Qemu` driver can map a set of ports from the
host machine to the guest virtual machine, and provides configuration for
resource allocation.
2015-09-23 18:58:42 +00:00
The `Qemu` driver can execute any regular `qemu` image (e.g. `qcow`, `img`,
`iso`), and is currently invoked with `qemu-system-x86_64`.
2015-09-23 18:58:42 +00:00
## Task Configuration
The `Qemu` driver supports the following configuration in the job spec:
* `artifact_source` - **(Required)** The hosted location of the source Qemu image. Must be accessible
2015-11-18 05:19:45 +00:00
from the Nomad client, via HTTP.
* `checksum` - **(Optional)** The checksum type and value for the `artifact_source` image.
2015-11-18 05:19:45 +00:00
The format is `type:value`, where type is any of `md5`, `sha1`, `sha256`, or `sha512`,
and the value is the computed checksum. If a checksum is supplied and does not
match the downloaded artifact, the driver will fail to start
2015-09-23 18:58:42 +00:00
* `accelerator` - (Optional) The type of accelerator to use in the invocation.
2015-11-18 05:19:45 +00:00
If the host machine has `Qemu` installed with KVM support, users can specify
`kvm` for the `accelerator`. Default is `tcg`
* `port_map` - **(Optional)** A `map[string]int` that maps port labels to ports
2015-11-18 05:19:45 +00:00
on the guest. This forwards the host port to the guest vm. For example,
`port_map { db = 6539 }` would forward the host port with label `db` to the
guest vm's port 6539.
2015-09-23 18:58:42 +00:00
## Client Requirements
2015-10-25 17:10:37 +00:00
The `Qemu` driver requires Qemu to be installed and in your system's `$PATH`.
2015-11-03 21:16:17 +00:00
The `artifact_source` must be accessible by the node running Nomad. This can be an
internal source, private to your cluster, but it must be reachable by the client
over HTTP.
2015-09-23 18:58:42 +00:00
## Client Attributes
2015-09-23 19:44:49 +00:00
The `Qemu` driver will set the following client attributes:
2015-09-23 18:58:42 +00:00
2015-09-23 19:44:49 +00:00
* `driver.qemu` - Set to `1` if Qemu is found on the host node. Nomad determines
this by executing `qemu-system-x86_64 -version` on the host and parsing the output
2015-10-11 19:55:23 +00:00
* `driver.qemu.version` - Version of `qemu-system-x86_64`, ex: `2.4.0`
2015-09-23 18:58:42 +00:00
## Resource Isolation
Nomad uses Qemu to provide full software virtualization for virtual machine
workloads. Nomad can use Qemu KVM's hardware-assisted virtualization to deliver
better performance.
2015-09-20 22:31:33 +00:00
Virtualization provides the highest level of isolation for workloads that
2015-10-25 17:15:14 +00:00
require additional security, and resource use is constrained by the Qemu
hypervisor rather than the host kernel. VM network traffic still flows through
2015-10-11 19:55:23 +00:00
the host's interface(s).