迁移 pvc(local path 到 longhorn)
最近在 K3s 集群里部署了 Longhorn,创建的每个 PVC 会有两个副本,这样某个 VPS 宕机,还有副本可以继续提供服务。但是之前已经有一些 Pod 使用的 local-path 的方式挂载的 PVC。所以准备迁移他们到 Longhorn 上。
迁移步骤
创建新的 PVC
首先在 Longhorn 上创建一个新的 PVC。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: freshrss-pvc-new # 新创建的 PVC 名字
spec:
storageClassName: longhorn
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 500Mi # 设置为与原 PVC 相同或更大的大小
创建一个 pod
然后创建一个 Pod,同时挂载两个 PVC。
apiVersion: v1
kind: Pod
metadata:
name: migrator
spec:
containers:
- name: migrator
image: busybox
command: ["/bin/sh", "-c", "sleep 3600"]
volumeMounts:
- name: old-volume
mountPath: /old
- name: new-volume
mountPath: /new
volumes:
- name: old-volume
persistentVolumeClaim:
claimName: freshrss-pvc # 原 PVC 名字
- name: new-volume
persistentVolumeClaim:
claimName: freshrss-pvc-new # 新创建的 PVC 名字
在 Pod 里复制
cp -a /old/. /new/
修改 deployment 里面的 PVC
将 deployment 里面的 PVC 信息改成新的,就可以了。
如果 PVC 只允许挂载一个 Pod,就需要将前面的 migrator 这个 Pod 删掉。
Read other posts