mirror of
https://github.com/kemko/nomad.git
synced 2026-01-05 09:55:44 +03:00
Merge pull request #97 from hashicorp/f-qemu-driver-docs
Basic Qemu docs
This commit is contained in:
@@ -53,11 +53,10 @@ func TestQemuDriver_Start(t *testing.T) {
|
||||
task := &structs.Task{
|
||||
Config: map[string]string{
|
||||
"image_source": "https://dl.dropboxusercontent.com/u/47675/jar_thing/linux-0.2.img",
|
||||
"checksum": "a5e836985934c3392cbbd9b26db55a7d35a8d7ae1deb7ca559dd9c0159572544",
|
||||
"accelerator": "tcg",
|
||||
"host_port": "8080",
|
||||
"guest_port": "8081",
|
||||
"checksum": "a5e836985934c3392cbbd9b26db55a7d35a8d7ae1deb7ca559dd9c0159572544",
|
||||
// ssh u/p would be here
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -10,5 +10,54 @@ description: |-
|
||||
|
||||
Name: `qemu`
|
||||
|
||||
TODO
|
||||
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.
|
||||
|
||||
The `Qemu` driver can execute any regular `qemu` image (e.g. `qcow`, `img`,
|
||||
`iso`), and is currently invoked with `qemu-system-x86_64`.
|
||||
|
||||
## Task Configuration
|
||||
|
||||
The `Qemu` driver supports the following configuration in the job spec:
|
||||
|
||||
* `image_source` - **(Required)** The hosted location of the source Qemu image. Must be accessible
|
||||
from the Nomad client, via HTTP.
|
||||
* `checksum` - **(Required)** The MD5 checksum of the `qemu` image. If the
|
||||
checksums do not match, the `Qemu` diver will fail to start the image
|
||||
* `accelerator` - (Optional) The type of accelerator to use in the invocation.
|
||||
If the host machine has `Qemu` installed with KVM support, users can specify `kvm` for the `accelerator`. Default is `tcg`
|
||||
* `host_port` - **(Required)** Port on the host machine to forward to the guest
|
||||
VM
|
||||
* `guest_port` - **(Required)** Port on the guest machine that is listening for
|
||||
traffic from the host
|
||||
|
||||
## Client Requirements
|
||||
|
||||
The `Qemu` driver requires Qemu to be installed and in your systems `$PATH`.
|
||||
The `image_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.
|
||||
|
||||
## Client Attributes
|
||||
|
||||
The `Qemu` driver will set the following client attributes:
|
||||
|
||||
* `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
|
||||
* `driver.qemu.version` - Version of `qemu-system-x86_64, ex: `2.4.0`
|
||||
|
||||
## Resource Isolation
|
||||
|
||||
The resource isolation provided varies by the operating system of
|
||||
the client and the configuration.
|
||||
|
||||
On Linux, Nomad will attempt to use cgroups, namespaces, and chroot
|
||||
to isolate the resources of a process. If the Nomad agent is not
|
||||
running as root many of these mechanisms cannot be used.
|
||||
|
||||
As a baseline, the Qemu images will be ran inside a virtual machine operated by
|
||||
Qemu, providing a minimum amount of isolation.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user