从 Docker Compose 迁移到 Kubernetes

适用场景

单机 Docker Compose 已经无法满足高可用、弹性和多环境发布。迁移到 Kubernetes 可以复用 Compose 的服务定义,但需要重新设计网络、存储、配置和发布。

前置条件

步骤

  1. 盘点 Compose 服务:
docker compose config
docker compose ps
docker compose images
  1. 用 Kompose 生成初始清单:
kompose convert -f docker-compose.yml -o k8s/
ls k8s/
  1. 修正生成结果:
  1. 创建 ConfigMap 和 Secret:
kubectl create configmap app-config --from-env-file=.env
kubectl create secret generic app-secret \
  --from-literal=DB_PASSWORD='***'
  1. 部署:
kubectl apply -f k8s/
kubectl get pods,svc,ingress
  1. 配置持久化:
kubectl apply -f - <<'EOF'
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: app-data
spec:
  accessModes: [ReadWriteOnce]
  resources:
    requests:
      storage: 20Gi
EOF
  1. 灰度切流,保留 Compose 环境作为回滚。

验证

回滚

常见坑

相关命令