Kubernetes集群HDD到SSD iSCSI后端存储在线迁移操作咨询
Kubernetes HDD iSCSI PVC 迁移至 SSD iSCSI 存储实操指南
一、存储类需修改的核心内容
建议直接新建SSD专属存储类(比如iscsi-ssd),不要修改旧HDD存储类,避免影响未迁移业务,需调整的参数如下:
- CSI驱动参数:替换为SSD阵列的iSCSI配置
targetPortal:SSD存储阵列的iSCSI目标IP+端口(默认3260)iqn:SSD阵列的目标IQN标识lun:静态迁移时填克隆后的LUN编号;动态配置则替换为SSD阵列的存储池参数(比如storagePoolName)
- 基础属性:回收策略(
reclaimPolicy)保持和旧存储类一致,静态迁移建议设为Retain防止误删;volumeBindingMode设为WaitForFirstConsumer更稳妥
二、在线迁移(无停机)步骤
- 准备新PVC:
- 静态方式:先手动创建对应SSD克隆LUN的PV(配置好SSD的iSCSI参数),再创建绑定该PV的PVC
- 克隆方式:如果CSI驱动支持,直接基于旧PVC克隆到新SSD存储类的PVC
- 在线同步数据:
给运行中的Pod添加临时同步容器,把旧PVC数据复制到新PVC:kubectl patch deployment <deploy-name> -p '{"spec":{"template":{"spec":{"containers":[{"name":"sync-data","image":"busybox","command":["sh","-c","cp -av /old/* /new/"],"volumeMounts":[{"name":"old-pvc","mountPath":"/old"},{"name":"new-pvc","mountPath":"/new"}]}]}}}' - 切换PVC挂载:
数据同步完成后,更新Deployment/StatefulSet的挂载配置,替换为新SSD PVC:kubectl set volume deployment/<deploy-name> --name=old-pvc --remove kubectl set volume deployment/<deploy-name> --add --name=new-pvc --persistentvolumeclaim claimName=<new-ssd-pvc> - 滚动更新Pod:Kubernetes会逐个重启Pod,自动挂载新PVC,实现无停机迁移
三、Pod重启/节点迁移后的行为
只要已经把Pod的挂载配置改成新PVC,Pod重启或被调度到其他节点时:
- Kubernetes会自动在目标节点执行iSCSI登录、映射SSD阵列的LUN
- 直接挂载新PVC到Pod,无需额外操作
- 前提是所有集群节点都能访问SSD阵列的3260端口,网络策略要放通
四、离线迁移流程(高一致性要求场景)
- 停止业务Pod:
kubectl scale deployment <deploy-name> --replicas=0 - 存储层面克隆LUN:在阵列端完成旧HDD LUN到SSD LUN的克隆(克隆前建议冻结文件系统保证一致性)
- 创建SSD PV/PVC:
手动编写PV配置(对应SSD克隆LUN的iSCSI参数),再创建绑定该PV的PVC,关联到新SSD存储类 - 恢复业务:更新Deployment/StatefulSet的PVC配置为新SSD PVC,恢复Pod副本数:
kubectl scale deployment <deploy-name> --replicas=<原副本数> - 清理旧资源:验证业务正常后,删除旧HDD的PV和PVC
五、测试集群识别新克隆LUN的操作
- 手动创建SSD PV:编写PV配置文件,填入SSD阵列的
targetPortal、iqn、克隆后的LUN编号 - 新建SSD存储类:配置文件中指定SSD阵列的iSCSI参数和驱动信息
- 绑定PVC:创建PVC时指定新存储类,并通过
volumeName绑定到手动创建的SSD PV - 验证:启动测试Pod挂载该PVC,检查是否能正常读取克隆的数据
内容的提问来源于stack exchange,提问作者ip master
相关产品推荐
相关产品推荐

