不是所有项目都需要 K8s。我们用一张决策图帮你判断何时该从 Docker Compose 升级到 Kubernetes,以及如何平滑迁移。
容器编排的三个阶段
阶段一:单机 Docker Compose
适用场景:开发环境 & 小型生产部署(1-5 个服务,单服务器)
优势是简单直接。一个 docker-compose.yml 就能定义整个应用栈。但局限也很明显:没有自动扩缩容、没有自动故障恢复、没有滚动更新。
阶段二:Docker Swarm
适用场景:多节点部署,但团队不想为 K8s 的复杂性买单
Swarm 的学习曲线远低于 K8s,docker stack deploy 就能实现多节点编排。适合小团队的过渡方案。
阶段三:Kubernetes
适用场景:微服务架构、需要精细化运维控制、多环境管理
当你需要以下能力时,K8s 是唯一选择:
- 跨节点的自动调度与负载均衡
- 基于 HPA/VPA 的自动扩缩容
- 金丝雀发布和蓝绿部署
- 基于命名空间的多租户隔离
迁移路径
- 先容器化:确保所有服务都有 Dockerfile,本地用 Compose 跑通
- 抽象配置:环境变量和配置文件外部化,为 ConfigMap/Secret 做准备
- 编写 Manifest:从 Deployment + Service 开始,逐步添加 Ingress、HPA
- 选择托管方案:GKE / EKS / AKS 省去集群运维负担
常见误区
- 过早引入 K8s:3 个服务 + 1 台服务器的项目用 Compose 足够了
- 不做资源限制:
resources.limits和requests是必填项,否则一个 OOM 影响全部 Pod - 忽略可观测性:没有 Prometheus + Grafana + 日志聚合的 K8s 集群就是盲飞