Nomad Autoscaler 是 HashiCorp 推出的自动扩缩容工具,专为与 Nomad 调度器集成设计,用于根据预定义策略动态调整 Nomad 作业(Jobs)或客户端节点(Client Nodes)的数量。本镜像为开发(dev)版本,适用于开发、测试环境验证功能;生产环境应使用官方稳定镜像(https://hub.docker.com/r/hashicorp/nomad-autoscaler%EF%BC%89%E3%80%82
主要用途:
job:read、job:update、node:read、node:updatebash# 拉取开发版本(本镜像) docker pull hashicorp/nomad-autoscaler:dev # 生产环境建议使用稳定版 # docker pull hashicorp/nomad-autoscaler:latest
4.3.1 简易启动(连接本地 Nomad 集群)
bashdocker run -d \ --name nomad-autoscaler-dev \ -e NOMAD_ADDR=http://host.docker.internal:4646 \ # Nomad API 地址(宿主机地址) -v $(pwd)/policies:/etc/nomad-autoscaler/policies # 挂载扩缩策略文件目录 hashicorp/nomad-autoscaler:dev
4.3.2 带 ACL 和 TLS 配置的启动
bashdocker run -d \ --name nomad-autoscaler-dev \ -e NOMAD_ADDR=https://nomad-server:4646 \ # Nomad 集群 HTTPS 地址 -e NOMAD_TOKEN=your-nomad-acl-token \ # Nomad ACL Token -e NOMAD_TLS_INSECURE=false \ # 启用 TLS 证书验证 -e NOMAD_CACERT=/etc/nomad/tls/ca.pem \ # TLS CA 证书路径 -v $(pwd)/tls:/etc/nomad/tls \ # 挂载 TLS 证书目录(包含 ca.pem、client.pem、client-key.pem) -v $(pwd)/policies:/etc/nomad-autoscaler/policies \ # 挂载策略文件目录 -v $(pwd)/plugins:/etc/nomad-autoscaler/plugins \ # 挂载外部插件目录(如 Prometheus 插件) hashicorp/nomad-autoscaler:dev \ --config /etc/nomad-autoscaler/config.hcl # 自定义配置文件路径
yamlversion: '3.8' services: nomad-autoscaler: image: hashicorp/nomad-autoscaler:dev container_name: nomad-autoscaler-dev restart: unless-stopped environment: - NOMAD_ADDR=http://nomad-server:4646 # Nomad 集群 API 地址 - NOMAD_TOKEN=${NOMAD_TOKEN} # 从环境变量注入 Nomad ACL Token - LOG_LEVEL=info # 日志级别(trace/debug/info/warn/error) - EVALUATION_INTERVAL=10s # 策略评估间隔(默认 10s) volumes: - ./policies:/etc/nomad-autoscaler/policies:ro # 只读挂载策略文件目录 - ./config.hcl:/etc/nomad-autoscaler/config.hcl:ro # 自定义配置文件 - ./plugins:/etc/nomad-autoscaler/plugins:ro # 插件目录 networks: - nomad-network # 连接到 Nomad 集群所在网络 networks: nomad-network: external: true # 假设 Nomad 集群使用外部网络
4.5.1 环境变量
| 变量名 | 描述 | 默认值 |
|---|---|---|
NOMAD_ADDR | Nomad 集群 API 地址 | http://127.0.0.1:4646 |
NOMAD_TOKEN | Nomad ACL Token(若集群启用 ACL) | 空 |
NOMAD_TLS_INSECURE | 是否禁用 TLS 证书验证(开发环境临时使用,生产环境需设为 false) | false |
NOMAD_CACERT | TLS CA 证书文件路径 | 空 |
NOMAD_CLIENT_CERT | TLS 客户端证书文件路径 | 空 |
NOMAD_CLIENT_KEY | TLS 客户端密钥文件路径 | 空 |
LOG_LEVEL | 日志级别 | info |
AUTOSCALER_CONFIG | 配置文件路径(覆盖默认配置) | /etc/nomad-autoscaler/config.hcl |
4.5.2 核心配置文件(config.hcl)
配置文件使用 HCL 格式,支持详细参数定义,示例:
hcl# 全局配置 log_level = "debug" # 日志级别 plugin_dir = "/etc/nomad-autoscaler/plugins" # 插件目录 evaluation_interval = "10s" # 策略评估间隔 # Nomad 连接配置 nomad { address = "https://nomad-server:4646" token = "your-nomad-acl-token" tls { ca_cert = "/etc/nomad/tls/ca.pem" # CA 证书路径 cert = "/etc/nomad/tls/client.pem" # 客户端证书路径 key = "/etc/nomad/tls/client-key.pem" # 客户端密钥路径 insecure = false # 启用证书验证 } } # 指标采集器配置(Prometheus 示例) metrics "prometheus" { driver = "prometheus" config = { address = "http://prometheus:9090" # Prometheus 地址 timeout = "10s" # 超时时间 } } # 扩缩目标配置(Nomad 作业) target "nomad_job" { driver = "nomad_job" } # 扩缩目标配置(节点池) target "nomad_node_pool" { driver = "nomad_node_pool" }
4.5.3 扩缩策略文件
策略文件定义具体扩缩规则,存放于挂载的 policies 目录(如 /etc/nomad-autoscaler/policies/example-job.hcl),示例:
hcl# Nomad 作业水平扩缩策略示例 scaling "job" { enabled = true min = 2 # 最小实例数 max = 10 # 最大实例数 policy { cooldown = "2m" # 扩缩后冷却时间(避免抖动) evaluation_interval = "30s" # 策略评估间隔 # 基于 Nomad 原生 CPU 指标的检查规则 check "cpu_usage" { source = "nomad" # 指标源(nomad/prometheus/etc.) query = <<EOF sum(nomad_client_allocation_cpu_usage_percent{job_id=~"^example-job$"}) / count(nomad_client_allocation_cpu_usage_percent{job_id=~"^example-job$"}) EOF strategy "target" { target_value = 70.0 # 目标 CPU 使用率(70%) } } # 基于 Prometheus 自定义指标的检查规则(如请求量) check "request_count" { source = "prometheus" query = "sum(rate(http_requests_total{job=\"example-job\"}[5m]))" strategy "threshold" { upper_bound = 1000 # 上限阈值(超过则扩容) lower_bound = 200 # 下限阈值(低于则缩容) step_up = 1 # 每次扩容增加实例数 step_down = 1 # 每次缩容减少实例数 } } } }
docker logs -f nomad-autoscaler-devnomad-autoscaler policy list(需配置 Nomad 连接)policies 目录下的策略文件,Autoscaler 会自动加载(默认每 60s 检查更新)您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务