我对Nomad非常陌生,我希望部署一个包含特定文件的码头容器。我知道Nomad有一个内置的坞驱动程序,所以这是否是正确的操作: 1.创建一个复制我想要的文件的dockerfile。2.使用从该dockerfile生成的图像在Nomad中使用(在config{}块中)?
或者,通过查看类似的问题,例如here,我会在args变量中放入docker file.yml命令,以便将文件复制到容器中。
我还想知道,如果容器与文件一起成功部署,那么在哪里可以看到它呢?我能直接输入码头集装箱清单吗?
发布于 2022-06-15 21:16:25
以下是我从游牧民网站上获取的监测部分的一个例子:
在这个例子中,我尝试用prom/prometheus:latest安装
,并在映像中复制文件。
2-将下面的代码粘贴到visual studio代码中,以查看
在第20行中,我们在游牧文件系统中创建了文件。
4-从第22行到第91行,yml文件的内容
5-我们要求游牧民在码头启动时将local/webserver_alert.yml挂载到码头文件系统/etc/prometheus/webserver_alert.yml中。
job "prometheus" {
datacenters = ["dc1"]
type = "service"
group "monitoring" {
count = 1
restart {
attempts = 2
interval = "30m"
delay = "15s"
mode = "fail"
}
ephemeral_disk {
size = 300
}
task "prometheus" {
template {
change_mode = "noop"
destination = "local/webserver_alert.yml"
data = <<EOH
---
groups:
- name: prometheus_alerts
rules:
- alert: Webserver down
expr: absent(up{job="webserver"})
for: 10s
labels:
severity: critical
annotations:
description: "Our webserver is down."
EOH
}
template {
change_mode = "noop"
destination = "local/prometheus.yml"
data = <<EOH
---
global:
scrape_interval: 5s
evaluation_interval: 5s
alerting:
alertmanagers:
- consul_sd_configs:
- server: '{{ env "NOMAD_IP_prometheus_ui" }}:8500'
services: ['alertmanager']
rule_files:
- "webserver_alert.yml"
scrape_configs:
- job_name: 'alertmanager'
consul_sd_configs:
- server: '{{ env "NOMAD_IP_prometheus_ui" }}:8500'
services: ['alertmanager']
- job_name: 'nomad_metrics'
consul_sd_configs:
- server: '{{ env "NOMAD_IP_prometheus_ui" }}:8500'
services: ['nomad-client', 'nomad']
relabel_configs:
- source_labels: ['__meta_consul_tags']
regex: '(.*)http(.*)'
action: keep
scrape_interval: 5s
metrics_path: /v1/metrics
params:
format: ['prometheus']
- job_name: 'webserver'
consul_sd_configs:
- server: '{{ env "NOMAD_IP_prometheus_ui" }}:8500'
services: ['webserver']
metrics_path: /metrics
- job_name: 'node_exporter'
static_configs:
- targets: ['167.86.106.9:9100','167.86.106.9:9107']
EOH
}
driver = "docker"
config {
image = "prom/prometheus:latest"
volumes = [
"local/webserver_alert.yml:/etc/prometheus/webserver_alert.yml",
"local/prometheus.yml:/etc/prometheus/prometheus.yml"
]
port_map {
prometheus_ui = 9090
}
}
resources {
network {
mbits = 10
port "prometheus_ui" {}
}
}
service {
name = "prometheus"
tags = ["urlprefix-/"]
port = "prometheus_ui"
check {
name = "prometheus_ui port alive"
type = "http"
path = "/-/healthy"
interval = "10s"
timeout = "2s"
}
}
}
}
}如果其他人有#游牧民-#领事-#保险库或哈希萨克问题,请给我贴上“堆叠”的标签。
发布于 2022-06-16 09:44:54
除了上面的答案之外,jinja2模板也可以工作,所以您可以使用jinja来包含文件,而不是通过复制和粘贴在文件中进行硬编码。
template {
data = <<EOF
{% include "path/to/template" %}
EOF
destination = "path/you/want"
}https://stackoverflow.com/questions/71171685
复制相似问题