mirror of
https://github.com/kemko/nomad.git
synced 2026-01-05 18:05:42 +03:00
108
website/source/guides/external/lxc.html.md
vendored
108
website/source/guides/external/lxc.html.md
vendored
@@ -9,10 +9,9 @@ description: |-
|
||||
## LXC
|
||||
|
||||
The `lxc` driver provides an interface for using LXC for running application
|
||||
containers. You can download the external LXC driver
|
||||
[here][lxc_driver_download]. This guide is compatible with Nomad 0.9 and above.
|
||||
If you are using an older version of Nomad, see the [LXC][lxc-docs] driver
|
||||
documentation.
|
||||
containers. This guide walks through the steps involved in configuring a Nomad client agent to be able to run lxc jobs. You can download the external LXC driver [here][lxc_driver_download].
|
||||
|
||||
~> Note: This guide is compatible with Nomad 0.9 and above. If you are using an older version of Nomad, see the [LXC][lxc-docs] driver documentation.
|
||||
|
||||
## Reference Material
|
||||
|
||||
@@ -20,68 +19,20 @@ documentation.
|
||||
- Nomad [LXC][lxc-docs] external driver documentation
|
||||
- Nomad LXC external driver [repo][lxc-driver-repo]
|
||||
|
||||
## Estimated Time to Complete
|
||||
## Installation Instructions
|
||||
|
||||
20 minutes
|
||||
### Step 1: Install the `lxc` and `lxc-templates` Packages
|
||||
|
||||
## Challenge
|
||||
|
||||
You need to deploy a workload using [Linux Containers][linux-containers-home].
|
||||
Configure the client nodes that need to run this workload appropriately. You
|
||||
will also need to install the `lxc-templates` package which will provide the
|
||||
templates needed to start your containers.
|
||||
|
||||
## Solution
|
||||
|
||||
Install and configure the LXC external driver plugin. Verify the configuration
|
||||
on the client node and deploy the application.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
To perform the tasks described in this guide, you need to have a Nomad
|
||||
environment with Consul installed. You can use this
|
||||
[repo](https://github.com/hashicorp/nomad/tree/master/terraform#provision-a-nomad-cluster-in-the-cloud)
|
||||
to easily provision a sandbox environment. This guide will assume a cluster with
|
||||
one server node and one client node.
|
||||
|
||||
-> **Please Note:** This guide is for demo purposes and is only using a single
|
||||
server node. In a production cluster, 3 or 5 server nodes are recommended.
|
||||
|
||||
## Steps
|
||||
|
||||
### Step 1: Verify Client Node Configuration
|
||||
|
||||
External drivers must be placed in the [plugin_dir][plugin_dir] directory which
|
||||
defaults to [`data_dir`][data_dir]`/plugins`. Verify the `data_dir` directory on
|
||||
the client node configuration. If you are using the environment provided by this
|
||||
guide, the client configuration is located at `/etc/nomad.d/nomad.hcl`. The
|
||||
configuration file will show you that the `data_dir` directory is
|
||||
`/opt/nomad/data`. The relevant snippet of the configuration file is shown
|
||||
below:
|
||||
|
||||
```shell
|
||||
$ cat /etc/nomad.d/nomad.hcl
|
||||
data_dir = "/opt/nomad/data"
|
||||
bind_addr = "0.0.0.0"
|
||||
...
|
||||
```
|
||||
|
||||
### Step 2: Install the `lxc` and `lxc-templates` Packages
|
||||
|
||||
Before we generate a Nomad job file and deploy our workload, we will need to
|
||||
install the `lxc` and `lxc-templates` packages which will provide the runtime
|
||||
and templates we need to start our container. Run the following command:
|
||||
Before deploying an LXC workload, you will need to install the `lxc` and `lxc-templates` packages which will provide the runtime and templates to start your container. Run the following command:
|
||||
|
||||
```shell
|
||||
sudo apt install -y lxc lxc-templates
|
||||
```
|
||||
|
||||
### Step 3: Download and Install the LXC Driver
|
||||
### Step 2: Download and Install the LXC Driver
|
||||
|
||||
Make a directory called `plugins` in [data_dir][data_dir] (which is
|
||||
`/opt/nomad/data` in our case) and download/place the [LXC
|
||||
driver][lxc_driver_download] in it. The following sequences of commands
|
||||
illustrate this process:
|
||||
External drivers must be placed in the [plugin_dir][plugin_dir] directory which
|
||||
defaults to [`data_dir`][data_dir]`/plugins`. Make a directory called `plugins` in [data_dir][data_dir] (which is `/opt/nomad/data` in the example below) and download/place the [LXC driver][lxc_driver_download] in it. The following sequence of commands illustrate this process:
|
||||
|
||||
```shell
|
||||
$ sudo mkdir -p /opt/nomad/data/plugins
|
||||
@@ -97,7 +48,7 @@ You can now delete the original zip file:
|
||||
$ rm ./nomad-driver-lxc*.zip
|
||||
```
|
||||
|
||||
### Step 4: Verify the LXC Driver Status
|
||||
### Step 3: Verify the LXC Driver Status
|
||||
|
||||
After completing the previous steps, you do not need to explicitly enable the
|
||||
LXC driver in the client configuration, as it is enabled by default.
|
||||
@@ -136,37 +87,9 @@ Driver Status = docker,exec,java,lxc,mock_driver,raw_exec,rkt
|
||||
...
|
||||
```
|
||||
|
||||
### Step 5: Generate a Job File
|
||||
### Step 4: Register the Nomad Job
|
||||
|
||||
Create a file named `lxc.nomad` and place the following contents in it:
|
||||
|
||||
```hcl
|
||||
job "example-lxc" {
|
||||
datacenters = ["dc1"]
|
||||
type = "service"
|
||||
|
||||
group "example" {
|
||||
task "example" {
|
||||
driver = "lxc"
|
||||
|
||||
config {
|
||||
log_level = "trace"
|
||||
verbosity = "verbose"
|
||||
template = "/usr/share/lxc/templates/lxc-busybox"
|
||||
}
|
||||
|
||||
resources {
|
||||
cpu = 500
|
||||
memory = 256
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Step 6: Register the Nomad Job
|
||||
|
||||
Run the following command to register your Nomad job:
|
||||
You can run this [LXC example job][lxc-job] to register a Nomad job that deploys an LXC workload.
|
||||
|
||||
```shell
|
||||
$ nomad run lxc.nomad
|
||||
@@ -178,9 +101,9 @@ $ nomad run lxc.nomad
|
||||
==> Evaluation "d8be10f4" finished with status "complete"
|
||||
```
|
||||
|
||||
### Step 7: Check the Status of the Job
|
||||
### Step 5: Check the Status of the Job
|
||||
|
||||
You can run the following command to check the status of the jobs in your
|
||||
Run the following command to check the status of the jobs in your
|
||||
cluster:
|
||||
|
||||
```shell
|
||||
@@ -212,7 +135,7 @@ ID Node ID Task Group Version Desired Status Created Modified
|
||||
4248c82e 81c22a0c example 0 run running 6m58s ago 6m47s ago
|
||||
```
|
||||
|
||||
## Next Steps
|
||||
### More Configuration Options
|
||||
|
||||
The LXC driver is enabled by default in the client configuration. In order to
|
||||
provide additional options to the LXC plugin, add [plugin
|
||||
@@ -235,6 +158,7 @@ plugin "nomad-driver-lxc" {
|
||||
[lxc_driver_download]: https://releases.hashicorp.com/nomad-driver-lxc
|
||||
[lxc-driver-repo]: https://github.com/hashicorp/nomad-driver-lxc
|
||||
[lxc-docs]: /docs/drivers/external/lxc.html
|
||||
[lxc-job]: https://github.com/hashicorp/nomad-education-content/blob/master/lxc.nomad
|
||||
[lxc_plugin_options]: /docs/drivers/external/lxc.html#plugin-options
|
||||
[plugin_dir]: /docs/configuration/index.html#plugin_dir
|
||||
[plugin_syntax]: /docs/configuration/plugin.html
|
||||
|
||||
Reference in New Issue
Block a user