背景
生產環境有個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
