Nomad版本升级指南:关键版本变更与注意事项详解
概述
本文深入解析Hashicorp Nomad各版本升级过程中的关键变更点,帮助运维人员和技术团队顺利完成版本迁移。Nomad作为一款现代化的集群调度器,不同版本间可能存在行为变更、功能废弃或新增特性,这些都需要在升级前充分了解。
1.10.x版本升级要点
1.10.1版本重要变更
Raft协议相关变更:
- 彻底移除了通过地址(而非peer ID)移除Raft节点的功能
operator raft peer-remove
命令不再支持-peer-address
参数- API端点
DELETE /v1/operator/raft/peer
不再接受address
参数
配置重载行为强化:
- 当重载agent配置遇到错误时,agent将直接退出(原仅记录日志)
- 这一变更避免了配置错误导致agent处于异常运行状态的情况
新增服务器启动超时控制:
- 引入
start_timeout
配置项,默认30秒 - 控制服务器关键启动过程(如密钥环解密)的超时时间
- 超时未完成将导致服务器进程退出
ACL令牌端点响应码优化:
/v1/acl/token/self
端点响应码更符合语义:- ACL未启用时返回200(原404)
- ACL启用但无有效令牌时返回403(原404)
1.10.0版本重大变更
该版本包含多项重大变更,主要涉及:
- 变量限制调整:废弃了部分变量相关限制
- 断开连接字段重构:相关配置字段被重新组织
- Go SDK变更:开发接口的兼容性变化
- 远程任务驱动支持移除:不再支持远程任务驱动
- 插件目录结构调整:插件存放路径规范变更
- Sentinel策略应用变更:策略执行逻辑调整
- 亲和性/扩散策略优化:调度算法改进
- Vault/Consul令牌管理:与这些系统的集成方式变化
1.9.x版本升级要点
1.9.9版本新增功能
服务器启动超时控制:
- 同1.10.1版本,新增
start_timeout
配置项
1.9.5版本网络修复
CNI插件兼容性:
- 修复了客户端主机重启后网络恢复的bug
- 需要CNI参考插件v1.2.0+版本支持
- 建议直接从CNI项目获取插件而非使用系统包管理器
1.9.4版本安全增强
默认拒绝列表更新:
- 模板函数拒绝列表新增
executeTemplate
防止递归执行 - 客户端环境变量拒绝列表扩展了更多敏感变量
1.9.3版本GC机制改进
垃圾回收优化:
- 采用基于时钟的GC机制
- 支持任意长的GC间隔设置
- 要求服务器时间保持同步(GC可能由follower发起)
1.9.0版本重大变更
客户端兼容性:
- 不再支持1.6.0以下版本的客户端
- 旧客户端节点会被标记为丢失并触发任务重新调度
密钥存储架构变更:
- 密钥材料改存于Raft而非外部密钥库
- 自动迁移现有密钥(首个GC间隔后执行)
- 仍需备份旧密钥库直至不再需要旧快照
HCLv1支持移除:
- 不再支持HCLv1格式的作业规范
- Docker标签等配置需改用HCLv2语法
1.8.x版本升级要点
1.8.4版本Docker基础镜像变更
默认基础镜像更新:
- 因gcr.io仓库废弃,默认
infra_image
改为registry.k8s.io/pause-<arch>:3.3
1.8.3版本密钥轮换优化
密钥预发布机制:
- 在达到
root_key_rotation_threshold
一半时间时预发布新密钥 nomad operator root keyring rotate
命令需指定-prepublish
或-now
参数
1.8.2版本Windows安全增强
Docker驱动安全改进:
- 默认隔离模式从
process
改为更安全的hyperv
- 新增
windows_allow_insecure_container_admin
配置项控制ContainerAdmin权限
1.8.0版本网络约束
CNI插件检测:
- 使用
bridge
网络的作业会检查节点是否安装CNI插件 - 建议先升级所有客户端再提交网络作业
升级最佳实践
- 分阶段升级:先升级少量节点验证稳定性
- 版本跨度控制:避免跨多个主版本升级
- 配置备份:升级前备份关键配置和密钥
- 兼容性检查:确认客户端/插件版本要求
- 监控观察:升级后密切监控系统行为
通过理解这些版本特定变更,您可以制定更稳妥的升级策略,确保Nomad集群平稳过渡到新版本。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考