什么时候用 Docker,什么时候不用 Kubernetes
High Contrast
Dark Mode
Light Mode
Sepia
Forest
4 min read837 words

什么时候用 Docker,什么时候不用 Kubernetes

很多团队的问题不是"没上 Kubernetes",而是"上得太早"。

技术选型决策路径

graph TD A[需要容器化?] --> B{环境一致性是主要痛点?} B -->|是| C[Docker + Compose 单机] B -->|否| D[可能不需要容器,先解决真正的问题] C --> E{服务数量 > 10 或需要跨机器扩容?} E -->|否| F[继续 Compose,成本最低] E -->|是| G{团队有专职平台工程师?} G -->|否| H[托管 Kubernetes: GKE/EKS/AKS] G -->|是| I[自建 Kubernetes 集群]

Docker + Compose 什么时候就够了

适合的场景:

Docker Compose 能解决的问题:

问题 Compose 的解法
"在我机器上能跑" docker-compose.yml 锁定依赖版本
多服务依赖顺序 depends_on + healthcheck
数据库持久化 Named volumes
零停机重启 docker compose up -d --no-deps web

何时考虑升级到 Kubernetes

真正需要 Kubernetes 的信号(不是因为"高级",而是因为"痛"):

信号 说明
需要跨多台机器调度容器 Compose 只能管理单机
需要自动水平扩容(HPA) 流量峰值时需要动态增加实例
需要滚动发布 + 自动回滚 多实例场景的零停机发布
运维在服务发现/负载均衡上消耗大量时间 Kubernetes 内置服务发现
微服务数量超过 20 个 Compose 管理复杂度过高

不应该上 Kubernetes 的理由:


成本对比(参考数字)

方案 月费用参考 运维负担 适合规模
单台 VPS + Compose $20–50(4核8G) 月活 < 10 万
2–3 台 VPS + Compose $60–150 月活 10–50 万
GKE Autopilot(最小) $100–300+ 低(托管) 需要弹性扩容
EKS(AWS,3节点) $200–500+ 中(托管) 需要 AWS 生态
自建 K8s(3 master + 工作节点) 硬件 + 大量人力 极高 大型团队

注意:托管 Kubernetes 的控制面(master)有额外费用。GKE: 约 $74/月/集群;EKS: 约 $73/月/集群。


合理的演进路径

阶段 1:单机 systemd(适合起步)
└─ 无容器,直接部署,运维最简单
阶段 2:Docker + Compose(推荐大多数团队)
└─ 环境一致性,依赖隔离,单机编排
阶段 3:托管 Kubernetes(业务需要时再升级)
└─ GKE/EKS/AKS,无需自己维护控制面
阶段 4:自建 Kubernetes(极少数团队需要)
└─ 特殊合规/定制需求,需要专职平台团队

跳过阶段 2 直接到阶段 4 是常见错误:Kubernetes 的运维复杂度是 Compose 的 10 倍以上,在业务没有这个需求之前,它只会拖慢交付速度。


常见误区

误区 正确做法
"Kubernetes 是免费的" 托管控制面 $70–80/月,加上节点费用;自建 K8s 需要专职工程师
"上了 K8s 就不会宕机了" K8s 增加了新的故障点(etcd、scheduler、DNS 等)
"Compose 是开发用的,生产要用 K8s" 大量中小型生产系统长期运行在 Compose 上,稳定可靠
"先上 K8s,以后好扩展" 过早引入 K8s 会让交付速度降低,先把单机跑好更重要

本节执行清单

下一章AWS 版本实战——把前面的方法映射到第一家云平台。