为什么需要编排框架?

说实话,我刚入行那会儿,压根没听过「编排框架」这个词。那时候公司就几台服务器,我手动 SSH 上去部署应用,一个 docker run 搞定所有事。后来业务量上来,服务器从几台变成几十台、几百台,问题就来了——

你想想看,手动管理几十个容器,谁部署在哪个节点、挂了怎么重启、流量怎么分配……全凭脑子记。这显然不现实。

编排框架,说白了就是帮你管理一群服务器的工具。它解决三个核心问题:

  • 调度:把容器放到合适的机器上运行
  • 服务发现与负载均衡:让容器之间能找到彼此,流量能均匀分发
  • 故障恢复:容器挂了自动重启,节点宕了自动迁移

我经历过一次线上事故:凌晨三点,一台宿主机磁盘写满,上面跑了十几个核心服务全部挂掉。我手动一台台迁移,折腾到天亮。那次之后,我下定决心——必须上编排框架。

一句话总结:没有编排框架,你就是在用手工方式管理分布式系统。规模小还能忍,规模一大,迟早出问题。

三大框架的定位与历史

目前主流的编排框架有三个:Kubernetes、Docker Swarm、Apache Mesos。它们出身不同,定位也不同。我一个个说。

Kubernetes —— 容器编排的「事实标准」

Kubernetes 是 Google 开源的,2014 年发布。它的前身是 Google 内部用了十几年的 Borg 系统。说白了,Google 把自己大规模集群管理的经验拿出来,做成了 Kubernetes。

Kubernetes 的定位很明确:容器编排的通用平台。它不挑容器运行时(虽然默认是 Docker),不挑云厂商,甚至不挑操作系统。你可以在本地、公有云、混合云上跑同一套 Kubernetes 集群。

我记得 2017 年第一次在生产环境用 Kubernetes,光是理解 Pod、Service、Deployment 这些概念就花了两周。但一旦上手,你会发现它的设计确实优雅——声明式 API、控制器模式、自动扩缩容……这些特性让运维变得可预测。

我的建议:如果你刚开始学编排,优先学 Kubernetes。虽然学习曲线陡,但它是目前生态最完善、社区最活跃的框架。招聘市场上,Kubernetes 相关岗位也是最多的。

Docker Swarm —— 简单易用的「轻量级方案」

Docker Swarm 是 Docker 公司自家的编排工具,2015 年推出。它的定位和 Kubernetes 完全不同——追求简单。

Swarm 的核心理念是:把一群 Docker 主机变成一个虚拟的 Docker 主机。你不需要学新概念,Docker Compose 怎么写,Swarm 就怎么用。部署一个 Swarm 集群,几分钟就能搞定。

我曾经在一个小团队里用过 Swarm。团队就五个人,没人懂 Kubernetes,但大家都会 Docker Compose。Swarm 上手零成本,两周就把所有服务迁上去了。运行了半年,没出过问题。

但 Swarm 的短板也很明显:功能少、生态弱。它没有 Kubernetes 那样的自动扩缩容、滚动更新、存储编排等高级特性。说白了,Swarm 适合「够用就好」的场景。

注意:Docker Swarm 在 2019 年后基本停止重大功能更新。Docker 公司把重心转向了 Kubernetes。如果你现在选型,Swarm 只适合小规模、低复杂度的场景。

Apache Mesos —— 大数据时代的「资源管理器」

Apache Mesos 比 Kubernetes 和 Swarm 都老,2009 年诞生于 UC Berkeley。它的定位不是容器编排,而是数据中心资源管理。

Mesos 的核心理念是:把集群中所有机器的 CPU、内存、磁盘等资源统一管理,然后分配给不同的框架使用。你可以同时跑 Hadoop、Spark、Kafka、Marathon(容器编排框架)等,Mesos 负责资源分配。

我记得 2016 年在一家大数据公司,他们用 Mesos 管理了 500 多台机器。上面同时跑着 Spark 作业和 Marathon 管理的容器。资源利用率确实高,但运维复杂度也高——Mesos 本身不提供容器编排能力,你需要搭配 Marathon 或 Kubernetes 使用。

Mesos 的定位决定了它的适用场景:大数据 + 容器混合部署。如果你主要跑大数据作业,顺便跑一些容器,Mesos 是个好选择。但如果你只做容器编排,Kubernetes 更合适。

三大框架对比一览

维度 Kubernetes Docker Swarm Apache Mesos
出身 Google(2014) Docker(2015) UC Berkeley(2009)
定位 容器编排通用平台 轻量级容器编排 数据中心资源管理
学习曲线 陡峭 平缓 中等
功能丰富度 极高 低 中等(需搭配其他框架)
生态 最活跃 基本停滞 大数据生态
适用场景 通用容器编排 小规模、低复杂度 大数据 + 容器混合

核心知识体系

下面这张图,帮你理清本章的知识结构:

编排框架知识体系 为什么需要编排框架? 调度 服务发现与负载均衡 故障恢复 Kubernetes Docker Swarm Apache Mesos 通用容器编排平台 轻量级、易上手 数据中心资源管理 选型关键 根据团队规模、技术栈、业务复杂度选择最合适的框架

我的选型建议

说了这么多,到底怎么选?我根据实际经验,给你几个参考:

  • 团队有 Kubernetes 经验,或者愿意投入学习:无脑选 Kubernetes。生态最全,社区最活跃,未来十年不会过时。
  • 团队小、业务简单、不想折腾:Docker Swarm 可以试试。但要做好未来迁移到 Kubernetes 的准备。
  • 大数据作业是核心,容器只是辅助:Apache Mesos 值得考虑。资源利用率高,但运维成本也高。

我的经验:如果你拿不准,就从 Kubernetes 开始。它虽然难学,但学完之后,其他框架的概念理解起来会轻松很多。我见过太多团队先上 Swarm,后来业务复杂了又迁到 Kubernetes,中间折腾了几个月。与其这样,不如一步到位。

嗯,这一章就到这里。记住一句话:编排框架不是银弹,但它能帮你把分布式系统的复杂度,从「不可控」变成「可控」。