Nomad自动扩缩容作业调用API遭403权限拒绝问题求助
解决Nomad Autoscaler 403权限拒绝错误
问题描述
部署Nomad自动扩缩容作业后,日志出现如下错误:
[ERROR] policy_manager: encountered an error monitoring policy IDs: error="failed to call the Nomad list policies API: Unexpected response code: 403 (Permission denied)"
原因分析
- 用于Autoscaler的Nomad控制token缺少调用
list policiesAPI及其他扩缩容所需的集群操作权限 - 作业配置未将token正确传递给Autoscaler进程,导致进程无法用有效凭证访问Nomad API
解决方案
1. 配置符合要求的ACL策略
创建包含Autoscaler必要权限的ACL策略,示例如下:
policy "autoscaler-policy" { namespace "*" { policy = "read" capabilities = ["list-jobs", "read-jobs", "read-nodes", "write-nodes", "read-scaling-policies", "write-scaling-policies"] } agent { policy = "read" } }
将该策略绑定到你的f418583e-4cd9-545a-b0b9-36e1cd10bf32 token上。
2. 正确传递token到Autoscaler
修改作业中Autoscaler的配置模板,在nomad块中添加token参数:
nomad { address = "http://{{env "attr.unique.network.ip-address" }}:4646" skip_verify = true token = "{{ meta "nomad-control-token" }}" }
或者通过环境变量传递,在task "autoscaler"下添加env块:
env { NOMAD_TOKEN = "{{ meta "nomad-control-token" }}" }
3. 验证配置
重新部署作业后,查看Autoscaler日志确认错误是否消除。若仍有问题,执行以下命令检查token绑定的策略:
nomad acl token info f418583e-4cd9-545a-b0b9-36e1cd10bf32
确保策略包含了所有必要的权限。
内容的提问来源于stack exchange,提问作者rkevx21
相关产品推荐
相关产品推荐

