website: remove usage of task network stanza (#8498)
* website: remove usage of task network stanza and add documentation for group network and service stanzas * docs: fix broken link in client config * Update website/pages/docs/job-specification/group.mdx Co-authored-by: Seth Hoenig <shoenig@hashicorp.com> * Update website/pages/docs/job-specification/group.mdx Co-authored-by: Seth Hoenig <shoenig@hashicorp.com> Co-authored-by: Seth Hoenig <shoenig@hashicorp.com>
This commit is contained in:
parent
6a97453e0e
commit
5167bae0d5
|
@ -384,7 +384,7 @@ The `host_network` stanza is used to register additional host networks with
|
||||||
the node that can be used when port mapping.
|
the node that can be used when port mapping.
|
||||||
|
|
||||||
The key of the stanza corresponds to the name of the network used in the
|
The key of the stanza corresponds to the name of the network used in the
|
||||||
[`host_network`](/docs/job-specification/network#host-network).
|
[`host_network`](/docs/job-specification/network#host-networks).
|
||||||
|
|
||||||
```hcl
|
```hcl
|
||||||
client {
|
client {
|
||||||
|
|
|
@ -52,6 +52,10 @@ job "docs" {
|
||||||
migrating off of draining nodes. Only service jobs with a count greater than
|
migrating off of draining nodes. Only service jobs with a count greater than
|
||||||
1 support migrate stanzas.
|
1 support migrate stanzas.
|
||||||
|
|
||||||
|
- `network` <code>([Network][]: <optional>)</code> - Specifies the network
|
||||||
|
requirements and configuration, including static and dynamic port allocations,
|
||||||
|
for the group.
|
||||||
|
|
||||||
- `reschedule` <code>([Reschedule][]: nil)</code> - Allows to specify a
|
- `reschedule` <code>([Reschedule][]: nil)</code> - Allows to specify a
|
||||||
rescheduling strategy. Nomad will then attempt to schedule the task on another
|
rescheduling strategy. Nomad will then attempt to schedule the task on another
|
||||||
node if any of the group allocation statuses become "failed".
|
node if any of the group allocation statuses become "failed".
|
||||||
|
@ -60,6 +64,10 @@ job "docs" {
|
||||||
all tasks in this group. If omitted, a default policy exists for each job
|
all tasks in this group. If omitted, a default policy exists for each job
|
||||||
type, which can be found in the [restart stanza documentation][restart].
|
type, which can be found in the [restart stanza documentation][restart].
|
||||||
|
|
||||||
|
- `service` <code>([Service][]: nil)</code> - Specifies integrations with
|
||||||
|
[Consul][] for service discovery. Nomad automatically registers each service when an allocation
|
||||||
|
is started and de-registers them when the allocation is destroyed.
|
||||||
|
|
||||||
- `shutdown_delay` `(string: "0s")` - Specifies the duration to wait when
|
- `shutdown_delay` `(string: "0s")` - Specifies the duration to wait when
|
||||||
stopping a group's tasks. The delay occurs between Consul deregistration
|
stopping a group's tasks. The delay occurs between Consul deregistration
|
||||||
and sending each task a shutdown signal. Ideally, services would fail
|
and sending each task a shutdown signal. Ideally, services would fail
|
||||||
|
@ -145,6 +153,52 @@ group "example" {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Network
|
||||||
|
|
||||||
|
This example shows network constraints as specified in the [network][] stanza
|
||||||
|
which uses the `bridge` networking mode, dynamically allocates two ports, and
|
||||||
|
statically allocates one port:
|
||||||
|
|
||||||
|
```hcl
|
||||||
|
group "example" {
|
||||||
|
network {
|
||||||
|
mode = "bridge"
|
||||||
|
port "http" {}
|
||||||
|
port "https" {}
|
||||||
|
port "lb" {
|
||||||
|
static = "8889"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Service Discovery
|
||||||
|
|
||||||
|
This example creates a service in Consul. To read more about service discovery
|
||||||
|
in Nomad, please see the [Nomad service discovery documentation][service_discovery].
|
||||||
|
|
||||||
|
```hcl
|
||||||
|
group "example" {
|
||||||
|
network {
|
||||||
|
port "api" {}
|
||||||
|
}
|
||||||
|
|
||||||
|
service {
|
||||||
|
name = "example"
|
||||||
|
port = "api"
|
||||||
|
tags = ["default"]
|
||||||
|
|
||||||
|
check {
|
||||||
|
type = "tcp"
|
||||||
|
interval = "10s"
|
||||||
|
timeout = "2s"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
task "api" { ... }
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### Stop After Client Disconnect
|
### Stop After Client Disconnect
|
||||||
|
|
||||||
This example shows how `stop_after_client_disconnect` interacts with
|
This example shows how `stop_after_client_disconnect` interacts with
|
||||||
|
@ -196,7 +250,10 @@ group "second" {
|
||||||
[`heartbeat_grace`]: /docs/configuration/server/#heartbeat_grace
|
[`heartbeat_grace`]: /docs/configuration/server/#heartbeat_grace
|
||||||
[meta]: /docs/job-specification/meta 'Nomad meta Job Specification'
|
[meta]: /docs/job-specification/meta 'Nomad meta Job Specification'
|
||||||
[migrate]: /docs/job-specification/migrate 'Nomad migrate Job Specification'
|
[migrate]: /docs/job-specification/migrate 'Nomad migrate Job Specification'
|
||||||
|
[network]: /docs/job-specification/network 'Nomad network Job Specification'
|
||||||
[reschedule]: /docs/job-specification/reschedule 'Nomad reschedule Job Specification'
|
[reschedule]: /docs/job-specification/reschedule 'Nomad reschedule Job Specification'
|
||||||
[restart]: /docs/job-specification/restart 'Nomad restart Job Specification'
|
[restart]: /docs/job-specification/restart 'Nomad restart Job Specification'
|
||||||
|
[service]: /docs/job-specification/service 'Nomad service Job Specification'
|
||||||
|
[service_discovery]: /docs/integrations/consul-integration#service-discovery 'Nomad Service Discovery'
|
||||||
[vault]: /docs/job-specification/vault 'Nomad vault Job Specification'
|
[vault]: /docs/job-specification/vault 'Nomad vault Job Specification'
|
||||||
[volume]: /docs/job-specification/volume 'Nomad volume Job Specification'
|
[volume]: /docs/job-specification/volume 'Nomad volume Job Specification'
|
||||||
|
|
|
@ -3,10 +3,8 @@ layout: docs
|
||||||
page_title: network Stanza - Job Specification
|
page_title: network Stanza - Job Specification
|
||||||
sidebar_title: network
|
sidebar_title: network
|
||||||
description: |-
|
description: |-
|
||||||
The "network" stanza specifies the networking requirements for the task,
|
The "network" stanza specifies the networking requirements for the task group,
|
||||||
including the minimum bandwidth and port allocations. The network stanza
|
including networking mode and port allocations.
|
||||||
can be specified at the task group level to enable all tasks in the task
|
|
||||||
group to share the same network namespace.
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# `network` Stanza
|
# `network` Stanza
|
||||||
|
@ -17,15 +15,14 @@ description: |-
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
The `network` stanza specifies the networking requirements for the task,
|
The `network` stanza specifies the networking requirements for the task group,
|
||||||
including the minimum bandwidth and port allocations. When scheduling jobs in
|
including the network mode and port allocations. When scheduling jobs in
|
||||||
Nomad they are provisioned across your fleet of machines along with other jobs
|
Nomad they are provisioned across your fleet of machines along with other jobs
|
||||||
and services. Because you don't know in advance what host your job will be
|
and services. Because you don't know in advance what host your job will be
|
||||||
provisioned on, Nomad will provide your tasks with network configuration when
|
provisioned on, Nomad will provide your tasks with network configuration when
|
||||||
they start up.
|
they start up.
|
||||||
|
|
||||||
Nomad 0.10 enables support for the `network` stanza at the task group level. When
|
When the `network` stanza is defined with `bridge` as the networking mode,
|
||||||
the `network` stanza is defined at the group level with `bridge` as the networking mode,
|
|
||||||
all tasks in the task group share the same network namespace. This is a prerequisite for
|
all tasks in the task group share the same network namespace. This is a prerequisite for
|
||||||
[Consul Connect](/docs/integrations/consul-connect). Tasks running within a
|
[Consul Connect](/docs/integrations/consul-connect). Tasks running within a
|
||||||
network namespace are not visible to applications outside the namespace on the same host.
|
network namespace are not visible to applications outside the namespace on the same host.
|
||||||
|
@ -40,10 +37,7 @@ connection.
|
||||||
```hcl
|
```hcl
|
||||||
job "docs" {
|
job "docs" {
|
||||||
group "example" {
|
group "example" {
|
||||||
task "server" {
|
|
||||||
resources {
|
|
||||||
network {
|
network {
|
||||||
mbits = 200
|
|
||||||
port "http" {}
|
port "http" {}
|
||||||
port "https" {}
|
port "https" {}
|
||||||
port "lb" {
|
port "lb" {
|
||||||
|
@ -51,15 +45,11 @@ job "docs" {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## `network` Parameters
|
## `network` Parameters
|
||||||
|
|
||||||
- `mbits` `(int: 10)` - Specifies the bandwidth required in MBits.
|
|
||||||
|
|
||||||
- `port` <code>([Port](#port-parameters): nil)</code> - Specifies a TCP/UDP port
|
- `port` <code>([Port](#port-parameters): nil)</code> - Specifies a TCP/UDP port
|
||||||
allocation and can be used to specify both dynamic ports and reserved ports.
|
allocation and can be used to specify both dynamic ports and reserved ports.
|
||||||
|
|
||||||
|
@ -120,16 +110,6 @@ The label of the port is just text - it has no special meaning to Nomad.
|
||||||
The following examples only show the `network` stanzas. Remember that the
|
The following examples only show the `network` stanzas. Remember that the
|
||||||
`network` stanza is only valid in the placements listed above.
|
`network` stanza is only valid in the placements listed above.
|
||||||
|
|
||||||
### Bandwidth
|
|
||||||
|
|
||||||
This example specifies a resource requirement of 1 Gbit in bandwidth:
|
|
||||||
|
|
||||||
```hcl
|
|
||||||
network {
|
|
||||||
mbits = 1000
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Dynamic Ports
|
### Dynamic Ports
|
||||||
|
|
||||||
This example specifies a dynamic port allocation for the port labeled "http".
|
This example specifies a dynamic port allocation for the port labeled "http".
|
||||||
|
@ -140,13 +120,11 @@ port will be allocated dynamically by the scheduler, and your service will have
|
||||||
to read an environment variable to know which port to bind to at startup.
|
to read an environment variable to know which port to bind to at startup.
|
||||||
|
|
||||||
```hcl
|
```hcl
|
||||||
task "example" {
|
group "example" {
|
||||||
resources {
|
|
||||||
network {
|
network {
|
||||||
port "http" {}
|
port "http" {}
|
||||||
port "https" {}
|
port "https" {}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -179,7 +157,12 @@ port (it does not need to read the environment variable) and the dynamic port
|
||||||
will be mapped to the port in your container or virtual machine.
|
will be mapped to the port in your container or virtual machine.
|
||||||
|
|
||||||
```hcl
|
```hcl
|
||||||
task "example" {
|
group "app" {
|
||||||
|
network {
|
||||||
|
port "http" {}
|
||||||
|
}
|
||||||
|
|
||||||
|
task "example" {
|
||||||
driver = "docker"
|
driver = "docker"
|
||||||
|
|
||||||
config {
|
config {
|
||||||
|
@ -187,11 +170,6 @@ task "example" {
|
||||||
http = 8080
|
http = 8080
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
resources {
|
|
||||||
network {
|
|
||||||
port "http" {}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
@ -206,6 +184,10 @@ bound to.
|
||||||
|
|
||||||
### Bridge Mode
|
### Bridge Mode
|
||||||
|
|
||||||
|
Bridge mode allows compatible tasks to share a networking stack and interfaces. Nomad
|
||||||
|
can then do port mapping without relying on individual task drivers to implement port
|
||||||
|
mapping configuration.
|
||||||
|
|
||||||
The following example is a group level network stanza that uses bridge mode
|
The following example is a group level network stanza that uses bridge mode
|
||||||
and port mapping.
|
and port mapping.
|
||||||
|
|
||||||
|
@ -277,9 +259,15 @@ The Nomad client will build the correct [capabilities arguments](https://github.
|
||||||
|
|
||||||
### Host Networks
|
### Host Networks
|
||||||
|
|
||||||
|
In some cases a port should only be allocated to a specific interface or address on the host.
|
||||||
|
The `host_network` field of a port will constrain port allocation to a single named host network.
|
||||||
If `host_network` is set for a port, Nomad will schedule the allocations on a node which has defined a `host_network` with the given name.
|
If `host_network` is set for a port, Nomad will schedule the allocations on a node which has defined a `host_network` with the given name.
|
||||||
If not set the "default" host network is used which is commonly the address with a default route associated with it.
|
If not set the "default" host network is used which is commonly the address with a default route associated with it.
|
||||||
|
|
||||||
|
When Nomad does port mapping for ports with a defined `host_network`, the port mapping rule will use the host address as the destination address.
|
||||||
|
|
||||||
|
*Host networks does not currently support task based mapped ports such as the Docker driver's `port_map` configuration.
|
||||||
|
|
||||||
|
|
||||||
```hcl
|
```hcl
|
||||||
network {
|
network {
|
||||||
|
|
|
@ -4,7 +4,7 @@ page_title: resources Stanza - Job Specification
|
||||||
sidebar_title: resources
|
sidebar_title: resources
|
||||||
description: |-
|
description: |-
|
||||||
The "resources" stanza describes the requirements a task needs to execute.
|
The "resources" stanza describes the requirements a task needs to execute.
|
||||||
Resource requirements include memory, network, cpu, and more.
|
Resource requirements include memory, cpu, and more.
|
||||||
---
|
---
|
||||||
|
|
||||||
# `resources` Stanza
|
# `resources` Stanza
|
||||||
|
@ -12,7 +12,7 @@ description: |-
|
||||||
<Placement groups={['job', 'group', 'task', 'resources']} />
|
<Placement groups={['job', 'group', 'task', 'resources']} />
|
||||||
|
|
||||||
The `resources` stanza describes the requirements a task needs to execute.
|
The `resources` stanza describes the requirements a task needs to execute.
|
||||||
Resource requirements include memory, network, CPU, and more.
|
Resource requirements include memory, CPU, and more.
|
||||||
|
|
||||||
```hcl
|
```hcl
|
||||||
job "docs" {
|
job "docs" {
|
||||||
|
@ -22,14 +22,6 @@ job "docs" {
|
||||||
cpu = 100
|
cpu = 100
|
||||||
memory = 256
|
memory = 256
|
||||||
|
|
||||||
network {
|
|
||||||
mbits = 100
|
|
||||||
port "http" {}
|
|
||||||
port "ssh" {
|
|
||||||
static = 22
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
device "nvidia/gpu" {
|
device "nvidia/gpu" {
|
||||||
count = 2
|
count = 2
|
||||||
}
|
}
|
||||||
|
@ -45,9 +37,6 @@ job "docs" {
|
||||||
|
|
||||||
- `memory` `(int: 300)` - Specifies the memory required in MB
|
- `memory` `(int: 300)` - Specifies the memory required in MB
|
||||||
|
|
||||||
- `network` <code>([Network][]: <optional>)</code> - Specifies the network
|
|
||||||
requirements, including static and dynamic port allocations.
|
|
||||||
|
|
||||||
- `device` <code>([Device][]: <optional>)</code> - Specifies the device
|
- `device` <code>([Device][]: <optional>)</code> - Specifies the device
|
||||||
requirements. This may be repeated to request multiple device types.
|
requirements. This may be repeated to request multiple device types.
|
||||||
|
|
||||||
|
@ -67,25 +56,6 @@ resources {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Network
|
|
||||||
|
|
||||||
This example shows network constraints as specified in the [network][] stanza
|
|
||||||
which require 1 Gbit of bandwidth, dynamically allocates two ports, and
|
|
||||||
statically allocates one port:
|
|
||||||
|
|
||||||
```hcl
|
|
||||||
resources {
|
|
||||||
network {
|
|
||||||
mbits = 1000
|
|
||||||
port "http" {}
|
|
||||||
port "https" {}
|
|
||||||
port "lb" {
|
|
||||||
static = "8889"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Devices
|
### Devices
|
||||||
|
|
||||||
This example shows a device constraints as specified in the [device][] stanza
|
This example shows a device constraints as specified in the [device][] stanza
|
||||||
|
@ -99,5 +69,4 @@ resources {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
[network]: /docs/job-specification/network 'Nomad network Job Specification'
|
|
||||||
[device]: /docs/job-specification/device 'Nomad device Job Specification'
|
[device]: /docs/job-specification/device 'Nomad device Job Specification'
|
||||||
|
|
|
@ -77,7 +77,7 @@ job "docs" {
|
||||||
with user-defined metadata.
|
with user-defined metadata.
|
||||||
|
|
||||||
- `resources` <code>([Resources][]: <required>)</code> - Specifies the minimum
|
- `resources` <code>([Resources][]: <required>)</code> - Specifies the minimum
|
||||||
resource requirements such as RAM, CPU and network.
|
resource requirements such as RAM, CPU and devices.
|
||||||
|
|
||||||
- `service` <code>([Service][]: nil)</code> - Specifies integrations with
|
- `service` <code>([Service][]: nil)</code> - Specifies integrations with
|
||||||
[Consul][] for service discovery. Nomad automatically registers when a task
|
[Consul][] for service discovery. Nomad automatically registers when a task
|
||||||
|
@ -130,9 +130,7 @@ task "server" {
|
||||||
}
|
}
|
||||||
|
|
||||||
resources {
|
resources {
|
||||||
network {
|
cpu = 20
|
||||||
mbits = 250
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
Loading…
Reference in a new issue