# K8s 服務遷移指南 ## 遷移目標 將 Docker 服務遷移到 K8s,保留所有配置和資料。 ## 服務清單 | 服務 | 來源 | 目標 | 資料位置 | |------|------|------|---------| | n8n | Docker | K8s tools namespace | /var/lib/docker/volumes/n8n_data | | Superset | Docker | K8s tools namespace | superset-postgres + superset_home | ## 遷移步驟 ### 步驟 1:備份資料 ```bash # n8n 資料備份 ssh wooo@192.168.0.110 " mkdir -p /home/wooo/backups/k8s-migration docker run --rm -v n8n_data:/data -v /home/wooo/backups/k8s-migration:/backup \ alpine tar czf /backup/n8n_data_$(date +%Y%m%d).tar.gz -C /data . " # Superset PostgreSQL 備份 ssh wooo@192.168.0.110 " docker exec superset-postgres pg_dump -U superset superset > \ /home/wooo/backups/k8s-migration/superset_db_$(date +%Y%m%d).sql " # Superset home 備份 ssh wooo@192.168.0.110 " docker run --rm -v superset_superset_home:/data -v /home/wooo/backups/k8s-migration:/backup \ alpine tar czf /backup/superset_home_$(date +%Y%m%d).tar.gz -C /data . " ``` ### 步驟 2:部署 K8s 服務 ```bash # 建立 namespace kubectl apply -f k8s/tools/00-namespace.yaml # 部署 n8n kubectl apply -f k8s/tools/01-n8n.yaml # 部署 Superset kubectl apply -f k8s/tools/02-superset.yaml ``` ### 步驟 3:還原資料 ```bash # 找到 PVC 的實際路徑 N8N_PV=$(kubectl get pvc n8n-data -n tools -o jsonpath='{.spec.volumeName}') N8N_PATH="/var/lib/rancher/k3s/storage/${N8N_PV}" # 還原 n8n 資料 ssh wooo@192.168.0.110 " sudo tar xzf /home/wooo/backups/k8s-migration/n8n_data_*.tar.gz -C ${N8N_PATH} " ``` ### 步驟 4:更新 Nginx 更新 /etc/nginx/sites-enabled/monitor 指向 K8s Services ### 步驟 5:停止 Docker 服務 ```bash docker stop momo-n8n momo-superset superset-postgres superset-redis docker rm momo-n8n momo-superset superset-postgres superset-redis ``` ## 回滾計畫 如果遷移失敗,從備份還原 Docker 容器: ```bash # 還原 n8n docker run -d --name momo-n8n --restart unless-stopped \ -p 5678:5678 \ -e N8N_BASIC_AUTH_USER=admin \ -e N8N_BASIC_AUTH_PASSWORD=Wooo_N8n_2026 \ -e N8N_RUNNERS_DISABLED=true \ -v n8n_data:/home/node/.n8n \ n8nio/n8n:latest # 還原 Superset cd /home/wooo/momo_pro_system/docker/superset docker compose up -d ```