AWS Bottlerocket更新算子BRUPOP:EKS节点更新与Terraform状态疑问
Bottlerocket更新算子BRUPOP的更新机制与Terraform状态同步
一、BRUPOP的实例更新方式
BRUPOP采用原地更新的方式处理Bottlerocket节点的版本升级,不会替换现有的EC2实例。具体流程是:
- 先将目标节点标记为不可调度,驱逐其上运行的Pod(遵循Kubernetes的Pod驱逐规则)
- 在原实例上执行Bottlerocket的系统更新流程,完成版本升级
- 更新完成后重启节点,重新标记为可调度,让Pod重新调度至该节点
二、Terraform状态同步相关说明
因为BRUPOP是原地更新而非替换实例,Terraform状态中记录的自管理节点实例ID、配置等信息不会发生变化,所以不需要额外操作来同步Terraform状态。
如果是假设场景下的实例替换(比如自定义的节点替换策略),则需要注意以下Terraform状态同步方式:
- 若实例替换操作是在Terraform外部完成的,
terraform plan会检测到原有实例资源缺失,默认会尝试重新创建实例。此时可以通过terraform import命令将新的EC2实例ID导入到对应Terraform资源的状态中,让状态与实际资源匹配。 - 若自管理节点是通过Auto Scaling Group(ASG)管理的,建议在Terraform中通过
data "aws_ami"动态获取最新的Bottlerocket AMI,由Terraform管理ASG的滚动更新,这样实例替换后Terraform状态会自动同步,无需手动操作。
内容的提问来源于stack exchange,提问作者Franklin Ashok
相关产品推荐
相关产品推荐

