Nomad Autoscaler 是 HashiCorp 推出的自动扩缩容工具,专为与 Nomad 调度器集成设计,用于根据预定义策略动态调整 Nomad 作业(Jobs)或客户端节点(Client Nodes)的数量。本镜像为开发(dev)版本,适用于开发、测试环境验证功能;生产环境应使用稳定镜像([]
主要用途:
job:read、job:update、node:read、node:updatebash# 拉取开发版本(本镜像) docker pull hashicorp/nomad-autoscaler:dev # 生产环境建议使用稳定版 # docker pull hashicorp/nomad-autoscaler:latest
bashdocker run -d \ --name nomad-autoscaler-dev \ -e NOMAD_ADDR=[***] \ # Nomad API 地址(宿主机地址) -v $(pwd)/policies:/etc/nomad-autoscaler/policies # 挂载扩缩策略文件目录 hashicorp/nomad-autoscaler:dev
bashdocker run -d \ --name nomad-autoscaler-dev \ -e NOMAD_ADDR=[***] \ # 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=[***] # 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 集群使用外部网络
| 变量名 | 描述 | 默认值 |
|---|---|---|
NOMAD_ADDR | Nomad 集群 API 地址 | [***] |
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 |
配置文件使用 HCL 格式,支持详细参数定义,示例:
hcl# 全局配置 log_level = "debug" # 日志级别 plugin_dir = "/etc/nomad-autoscaler/plugins" # 插件目录 evaluation_interval = "10s" # 策略评估间隔 # Nomad 连接配置 nomad { address = "[***]" 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 = "[***]" # Prometheus 地址 timeout = "10s" # 超时时间 } } # 扩缩目标配置(Nomad 作业) target "nomad_job" { driver = "nomad_job" } # 扩缩目标配置(节点池) target "nomad_node_pool" { driver = "nomad_node_pool" }
策略文件定义具体扩缩规则,存放于挂载的 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 Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429