You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将AWS EBS备份恢复的新卷绑定到EKS StatefulSet Pod

如何将AWS Backup恢复的新EBS卷绑定到EKS StatefulSet的Pod

核心思路

StatefulSet的Pod依赖固定命名的PVC(格式为<statefulset名>-<volume模板名>-<序号>),恢复后的EBS卷需要通过手动创建匹配的PV/PVC,替换原有绑定关系,再让StatefulSet重新挂载。


步骤1:停止StatefulSet的Pod

先缩容StatefulSet到0,避免Pod自动重建干扰操作:

kubectl scale statefulset <你的StatefulSet名称> --replicas=0

步骤2:清理原有PV/PVC

删除对应Pod的PVC(比如你的StatefulSet名为mysql,卷模板名为data,序号0的PVC就是data-mysql-0):

kubectl delete pvc <原有PVC名称>
  • 如果原有PV是动态生成的,删除PVC后PV会自动被删除(取决于存储类的回收策略);如果PV是手动创建的,需要额外执行:
kubectl delete pv <原有PV名称>

步骤3:创建关联恢复EBS卷的PV

  1. 先拿到恢复后的EBS卷ID:

    • 可以通过AWS控制台查看,或者用AWS CLI命令:
      aws ec2 describe-volumes --filters "Name=tag:Name,Values=<恢复后的卷名称>"
      

    找到输出里的VolumeId(格式为vol-xxxxxxxxx)。

  2. 编写PV的YAML文件(比如restored-pv.yaml):

apiVersion: v1
kind: PersistentVolume
metadata:
  name: restored-pv-0 # 自定义PV名称
spec:
  capacity:
    storage: 10Gi # 必须和EBS卷实际大小一致
  accessModes:
    - ReadWriteOnce # 和原有卷的访问模式保持一致
  persistentVolumeReclaimPolicy: Retain # 可选:Delete/Retain,根据需求选择
  storageClassName: gp2 # 必须和你的存储类名称一致
  awsElasticBlockStore:
    volumeID: vol-xxxxxxxxx # 替换为刚才拿到的EBS卷ID
    fsType: ext4 # 和原有卷的文件系统保持一致(比如xfs)
  1. 应用PV:
kubectl apply -f restored-pv.yaml

步骤4:创建匹配StatefulSet的PVC

PVC必须使用原有PVC的名称,这样StatefulSet启动Pod时会自动关联它。编写PVC的YAML文件(比如restored-pvc.yaml):

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: data-mysql-0 # 替换为原有PVC的名称
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi # 和PV大小一致
  storageClassName: gp2
  volumeName: restored-pv-0 # 指定刚才创建的PV名称,强制绑定

应用PVC:

kubectl apply -f restored-pvc.yaml

步骤5:重启StatefulSet并验证

扩容StatefulSet到原有副本数:

kubectl scale statefulset <你的StatefulSet名称> --replicas=<原有副本数>

验证Pod启动和挂载情况:

# 查看Pod状态
kubectl get pods
# 检查卷挂载
kubectl exec <Pod名称> -- df -h

注意事项

  • AZ一致性:恢复后的EBS卷所在的可用区必须和Pod调度的节点AZ一致,否则会挂载失败。如果不一致,可以先将EBS卷迁移到目标AZ,或者调整StatefulSet的节点亲和性。
  • 多副本处理:如果是多副本StatefulSet,每个副本的PVC都需要重复上述PV/PVC创建步骤,确保每个序号对应的PVC都绑定到对应的恢复卷。
  • 存储类匹配:PV和PVC的storageClassName必须和原有配置完全一致,否则无法绑定。

内容的提问来源于stack exchange,提问作者Rainbird

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 01:00:59