← 返回博客

从 Docker 到 Kubernetes:容器编排的渐进式指南

不是所有项目都需要 K8s。我们用一张决策图帮你判断何时该从 Docker Compose 升级到 Kubernetes,以及如何平滑迁移。

M
esanmu.2026-03-03

不是所有项目都需要 K8s。我们用一张决策图帮你判断何时该从 Docker Compose 升级到 Kubernetes,以及如何平滑迁移。

容器编排的三个阶段

阶段一:单机 Docker Compose

适用场景:开发环境 & 小型生产部署(1-5 个服务,单服务器)

优势是简单直接。一个 docker-compose.yml 就能定义整个应用栈。但局限也很明显:没有自动扩缩容、没有自动故障恢复、没有滚动更新。

阶段二:Docker Swarm

适用场景:多节点部署,但团队不想为 K8s 的复杂性买单

Swarm 的学习曲线远低于 K8s,docker stack deploy 就能实现多节点编排。适合小团队的过渡方案。

阶段三:Kubernetes

适用场景:微服务架构、需要精细化运维控制、多环境管理

当你需要以下能力时,K8s 是唯一选择:

  • 跨节点的自动调度与负载均衡
  • 基于 HPA/VPA 的自动扩缩容
  • 金丝雀发布和蓝绿部署
  • 基于命名空间的多租户隔离

迁移路径

  1. 先容器化:确保所有服务都有 Dockerfile,本地用 Compose 跑通
  2. 抽象配置:环境变量和配置文件外部化,为 ConfigMap/Secret 做准备
  3. 编写 Manifest:从 Deployment + Service 开始,逐步添加 Ingress、HPA
  4. 选择托管方案:GKE / EKS / AKS 省去集群运维负担

常见误区

  • 过早引入 K8s:3 个服务 + 1 台服务器的项目用 Compose 足够了
  • 不做资源限制resources.limitsrequests 是必填项,否则一个 OOM 影响全部 Pod
  • 忽略可观测性:没有 Prometheus + Grafana + 日志聚合的 K8s 集群就是盲飞