如何扩容Terraform管理的EKS节点磁盘且不重建节点避免状态不同步
EKS节点磁盘在线扩容(不替换节点、无状态漂移)操作指引
为什么添加disk_size参数会提示替换节点
你使用的v12.2.0版本的EKS Terraform模块,修改节点组的disk_size配置默认会更新关联的启动模板(Launch Template)版本,模块默认触发节点组的滚动更新,所以会提示替换现有节点。
操作步骤
第一步:仅更新Terraform启动模板配置,不触发节点替换
在node_groups配置中添加disk_size = 40参数:
module "eks" { source = "terraform-aws-modules/eks/aws" version = "12.2.0" cluster_name = local.cluster_name cluster_version = "1.19" subnets = module.vpc.private_subnets # 其他原有配置保持不变 node_groups = { first = { desired_capacity = 1 max_capacity = 5 min_capacity = 1 instance_type = "m5.large" # 新增磁盘配置 disk_size = 40 } } }
执行命令仅更新启动模板,跳过节点组滚动更新:
terraform apply -target=module.eks.aws_launch_template.this["first"]
执行完成后,启动模板已经更新为40GB磁盘配置,后续新扩容的节点会自动使用40GB磁盘,现有运行节点不受影响。
第二步:在线扩容现有节点的EBS卷
- 在EC2控制台找到对应EKS节点挂载的根卷,直接执行卷扩容操作,将容量调整为40GB
- 登录到EKS节点,完成操作系统文件系统扩展,确认
df -h输出中根分区容量已更新为40GB
第三步:验证状态一致性
执行terraform plan,此时不会再提示任何资源变更,Terraform状态与云端实际资源配置完全同步,无漂移问题。
可选长期优化
如果后续需要避免类似磁盘调整触发节点替换,可以在node_groups配置中添加如下参数,自定义节点组更新策略:
update_config = { max_unavailable = 0 }
内容的提问来源于stack exchange,提问作者tech4242
相关产品推荐
相关产品推荐

