Jenkins 跨 node 迁移步骤
1. 修改 devops-jenkins deploy replica 为 0
# kubectl scale --replicas=0 deploy/devops-jenkins -n kubesphere-devops-system
deployment.apps/devops-jenkins scaled
2. 查看对应的 pv 所在 node 和目录
查看 pv name
# kubectl get pv | grep kubesphere-devops-system/devops-jenkins
pvc-1da03e0b-716a-47f2-a113-6352ddaab945 8Gi RWO Delete Bound kubesphere-devops-system/devops-jenkins local 4d2h
查看 node 和目录
# kubectl get pv pvc-1da03e0b-716a-47f2-a113-6352ddaab945 -o yaml
...
local:
fsType: ""
path: /var/openebs/local/pvc-1da03e0b-716a-47f2-a113-6352ddaab945
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- node1
...
3. 旧 node 上备份 pv 数据(如:node1)
# cd /var/openebs/local/pvc-1da03e0b-716a-47f2-a113-6352ddaab945/
# tar -czvf /tmp/pvc.tgz .
4. 删除 pvc(自动删除 pv)
# kubectl edit pvc devops-jenkins -n kubesphere-devops-system
删除以下两行
finalizers:
- kubernetes.io/pvc-protection
# kubectl delete pvc devops-jenkins -n kubesphere-devops-system
persistentvolumeclaim “devops-jenkins” deleted
5. 重新创建 pvc(自动创建 pv)
# cat pvc.yaml apiVersion: v1
kind: PersistentVolumeClaim
metadata:
annotations:
meta.helm.sh/release-name: devops
meta.helm.sh/release-namespace: kubesphere-devops-system
pv.kubernetes.io/bound-by-controller: “yes”
volume.beta.kubernetes.io/storage-provisioner: openebs.io/local
volume.kubernetes.io/selected-node: node2
volume.kubernetes.io/storage-provisioner: openebs.io/local
labels:
app: devops-jenkins
app.kubernetes.io/managed-by: Helm
chart: jenkins-0.19.5
heritage: Helm
release: devops
name: devops-jenkins
namespace: kubesphere-devops-system
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 8Gi
storageClassName: local
其中注意:
volume.kubernetes.io/selected-node: node2
这行改成要迁移到的新节点:node2
# kubectl apply -f pvc.yaml
6. 查看新创建的 pv 对应的 name
# kubectl get pv | grep kubesphere-devops-system/devops-jenkins
pvc-4958dfda-8350-4ad8-9cbd-348511be6449 8Gi RWO Delete Bound kubesphere-devops-system/devops-jenkins local 3m45s
7. 迁移 pv 数据到新节点(如:node2)
# ssh root@node2
# scp root@node1:/tmp/pvc.tgz /var/openebs/local/pvc-4958dfda-8350-4ad8-9cbd-348511be6449/
# cd /var/openebs/local/pvc-4958dfda-8350-4ad8-9cbd-348511be6449/
# tar -xzvf pvc.tgz
# rm -rf pvc.tgz
8. 修改 devops-jenkins deploy replica 为 1
# kubectl scale –replicas=1 deploy/devops-jenkins -n kubesphere-devops-system
deployment.apps/devops-jenkins scaled