背景
生产环境有个Confluence,因为是用的公有云,最近想迁移到自己的自建k8s集群上。
由于项目是用的 docker-compose 启动运行的,首先是要备份数据。
1、备份PGSQL数据
docker exec 容器NAMES pg_dump -U User DB > /data/backup/db.sql
2、打包项目镜像
docker save confluence:latest | gzip > confluence.tar.gz
docker save postgresql:latest | gzip > postgresql.tar.gz
3、docker-compose 文件格式转换成 deployment
参考链接 https://kompose.io/setup/
参考链接 https://kubernetes.io/zh/docs/tasks/configure-pod-container/translate-compose-kubernetes/
转换完成,根据自己的需求在改改。
deployment
apiVersion: apps/v1 kind: Deployment metadata: namespace: ns-wiki name: postgresql labels: app: postgresql spec: replicas: 1 selector: matchLabels: app: postgresql template: metadata: name: postgresql labels: app: postgresql spec: restartPolicy: Always containers: - name: postgresql image: blacklabelops/postgres:9.5.4 imagePullPolicy: IfNotPresent env: - name: POSTGRES_COLLATE value: C - name: POSTGRES_COLLATE_TYPE value: C - name: POSTGRES_DB value: xxxxdb - name: POSTGRES_ENCODING value: UNICODE - name: POSTGRES_PASSWORD value: xxxx - name: POSTGRES_USER value: cxxxxdb resources: requests: cpu: 100m memory: 256Mi limits: cpu: 300m memory: 2Gi volumeMounts: - name: postgresql-data mountPath: /var/lib/postgresql/data - name: date-conf mountPath: /etc/localtime volumes: - name: postgresql-data persistentVolumeClaim: claimName: postgresql-data - name: date-conf hostPath: path: /etc/localtime
pvc
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: postgresql-data namespace: ns-wiki spec: storageClassName: resize-gfs-class accessModes: - ReadWriteMany resources: requests: storage: 50Gi
confluence 项目的大概也是这样
部署好了deployment 之后,导入数据到deployment的 pgsql
kubectl exec -i -n ns-wiki postgresql-5b9c8778ff-c98t6 -- psql -U xxxdb -d db < xxxxncedb.sql