能否通过Terraform调整GKE节点池磁盘大小且不重建集群、无停机?
如何用Terraform无停机调整GKE节点池磁盘大小(无需重建集群)
完全可以实现,不需要销毁重建整个集群或节点池,通过Terraform配置结合GKE的滚动更新策略,就能自动化迁移工作负载并完成磁盘大小调整,全程无停机。
具体操作步骤:
- 修改Terraform节点池配置
找到你的google_container_node_pool资源块,调整node_config里的disk_size_gb字段为目标值。例如:
resource "google_container_node_pool" "your_node_pool" { name = "your-node-pool-name" cluster = google_container_cluster.your_cluster.name node_count = 4 node_config { machine_type = "n2-standard-2" disk_size_gb = 100 # 这里改成你需要的磁盘大小 } # 关键:配置滚动更新策略,保证无停机 management { auto_repair = true auto_upgrade = true } update_config { max_surge = 1 # 滚动更新时最多新增1个节点 max_unavailable = 0 # 保证更新过程中没有节点不可用,零停机 } }
验证并执行变更
运行terraform plan检查变更内容——此时Terraform应该只会标记节点池的disk_size_gb为待更新项,不会出现销毁节点池的计划。确认无误后执行terraform apply。GKE滚动更新过程
Terraform会调用GKE API触发节点池的滚动更新:
- 先启动配置了新磁盘大小的节点
- 将旧节点上的Pod驱逐到新节点(依赖Kubernetes的Pod调度和副本控制器保证服务可用性)
- 旧节点完成负载迁移后被销毁
- 重复上述步骤直到所有节点都更新完毕
重要注意事项:
- 仅支持持久化磁盘(pd-standard/pd-balanced/pd-ssd),本地SSD无法调整大小
max_unavailable = 0可以严格保证零停机,但会延长更新时间;如果允许短暂的节点数减少,可以适当调整为1(需确保你的工作负载副本数足够)- 若之前未配置
update_config,建议先添加该配置并执行一次apply,再修改磁盘大小,避免出现批量销毁节点的情况
内容的提问来源于stack exchange,提问作者clustermania
相关产品推荐
相关产品推荐

