Fix trailing space.
This commit is contained in:
parent
150b9f2908
commit
ecd7ba7baf
10 changed files with 97 additions and 97 deletions
|
|
@ -5,9 +5,9 @@ layout: vm-operator
|
|||
|
||||
# The Runner
|
||||
|
||||
For most use cases, Qemu needs to be started and controlled by another
|
||||
program that manages the Qemu process. This program is called the
|
||||
runner in this context.
|
||||
For most use cases, Qemu needs to be started and controlled by another
|
||||
program that manages the Qemu process. This program is called the
|
||||
runner in this context.
|
||||
|
||||
The most prominent reason for this second program is that it allows
|
||||
a VM to be shutdown cleanly in response to a TERM signal. Qemu handles
|
||||
|
|
@ -26,38 +26,38 @@ CPUs and the memory.
|
|||
The runner takes care of all these issues. Although it is intended to
|
||||
run in a container (which runs in a Kubernetes pod) it does not require
|
||||
a container. You can start and use it as an ordinary program on any
|
||||
system, provided that you have the required commands (qemu, swtpm)
|
||||
system, provided that you have the required commands (qemu, swtpm)
|
||||
installed.
|
||||
|
||||
## Stand-alone Configuration
|
||||
|
||||
Upon startup, the runner reads its main configuration file
|
||||
Upon startup, the runner reads its main configuration file
|
||||
which defaults to `/etc/opt/vmrunner/config.yaml` and may be changed
|
||||
using the `-c` (or `--config`) command line option.
|
||||
|
||||
A sample configuration file with annotated options can be found
|
||||
[here](https://github.com/mnlipp/VM-Operator/blob/main/org.jdrupes.vmoperator.runner.qemu/config-sample.yaml).
|
||||
As the runner implementation uses the
|
||||
[JGrapes](https://jgrapes.org/) framework, the file
|
||||
follows the framework's
|
||||
As the runner implementation uses the
|
||||
[JGrapes](https://jgrapes.org/) framework, the file
|
||||
follows the framework's
|
||||
[conventions](https://jgrapes.org/latest-release/javadoc/org/jgrapes/util/YamlConfigurationStore.html). The top level "`/Runner`" selects
|
||||
the component to be configured. Nested within is the information
|
||||
to be applied to the component.
|
||||
|
||||
The main entries in the configuration file are the "template" and
|
||||
the "vm" information. The runner processes the
|
||||
the "vm" information. The runner processes the
|
||||
[freemarker template](https://freemarker.apache.org/), using the
|
||||
"vm" information to derive the qemu command. The idea is that
|
||||
"vm" information to derive the qemu command. The idea is that
|
||||
the "vm" section provides high level information such as the boot
|
||||
mode, the number of CPUs, the RAM size and the disks. The template
|
||||
defines a particular VM type, i.e. it contains the "nasty details"
|
||||
that do not need to be modified for some given set of VM instances.
|
||||
|
||||
The templates provided with the runner can be found
|
||||
[here](https://github.com/mnlipp/VM-Operator/tree/main/org.jdrupes.vmoperator.runner.qemu/templates). When details
|
||||
The templates provided with the runner can be found
|
||||
[here](https://github.com/mnlipp/VM-Operator/tree/main/org.jdrupes.vmoperator.runner.qemu/templates). When details
|
||||
of the VM configuration need modification, a new VM type
|
||||
(i.e. a new template) has to be defined. Authoring a new
|
||||
template requires some knowledge about the
|
||||
(i.e. a new template) has to be defined. Authoring a new
|
||||
template requires some knowledge about the
|
||||
[qemu invocation](https://www.qemu.org/docs/master/system/invocation.html).
|
||||
Despite many "warnings" that you find in the web, configuring the
|
||||
invocation arguments of qemu is only a bit (but not much) more
|
||||
|
|
@ -72,13 +72,13 @@ provided by a
|
|||
|
||||
If additional templates are required, some ReadOnlyMany PV should
|
||||
be mounted in `/opt/vmrunner/templates`. The PV should contain copies
|
||||
of the standard templates as well as the additional templates. Of course,
|
||||
of the standard templates as well as the additional templates. Of course,
|
||||
a ConfigMap can be used for this purpose again.
|
||||
|
||||
Networking options are rather limited. The assumption is that in general
|
||||
the VM wants full network connectivity. To achieve this, the pod must
|
||||
run with host networking and the host's networking must provide a
|
||||
bridge that the VM can attach to. The only currently supported
|
||||
bridge that the VM can attach to. The only currently supported
|
||||
alternative is the less performant
|
||||
"[user networking](https://wiki.qemu.org/Documentation/Networking#User_Networking_(SLIRP))",
|
||||
which may be used in a stand-alone development configuration.
|
||||
|
|
@ -87,7 +87,7 @@ which may be used in a stand-alone development configuration.
|
|||
|
||||
The runner supports adaption to changes of the RAM size (using the
|
||||
balloon device) and to changes of the number of CPUs. Note that
|
||||
in order to get new CPUs online on Linux guests, you need a
|
||||
in order to get new CPUs online on Linux guests, you need a
|
||||
[udev rule](https://docs.kernel.org/core-api/cpu_hotplug.html#user-space-notification) which is not installed by default[^simplest].
|
||||
|
||||
The runner also changes the images loaded in CDROM drives. If the
|
||||
|
|
@ -103,6 +103,6 @@ Finally, `powerdownTimeout` can be changed while the qemu process runs.
|
|||
|
||||
## Testing with Helm
|
||||
|
||||
There is a
|
||||
There is a
|
||||
[Helm Chart](https://github.com/mnlipp/VM-Operator/tree/main/org.jdrupes.vmoperator.runner.qemu/helm-test)
|
||||
for testing the runner.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue