Docker Swarm 与 Kubernetes 部署方式对比
Swarm 与 K8s 同一应用两种部署实战:安装设置、部署流程、扩缩容、高可用、网络、生态逐项对比。Swarm 简单够用,K8s 强大复杂——选型看团队规模与业务需求。
直接回答:同一演示应用两种编排部署的对比结论——Swarm 可用 docker stack deploy 部署兼容的旧版 Compose v3 文件,K8s 需要理解 Pod/Service/Deployment 多层抽象但换来更强的自愈、弹性与生态。中小集群 Swarm 够用,规模化与长期演进选 K8s。
部署体验对比
Swarm:
docker swarm init
docker stack deploy -c compose.yml myapp # 先构建并推送镜像,stack deploy 不执行 build
docker service scale myapp_web=5
Kubernetes:
# 预先准备 Deployment + Service 两份清单
kubectl apply -f deployment.yaml -f service.yaml
kubectl scale deployment web --replicas=5
Swarm 复用 Compose 心智模型;K8s 要新建一套对象模型词汇表。
能力矩阵
| 维度 | Swarm | K8s |
|---|---|---|
| 上手 | 极快 | 陡峭 |
| 伸缩 | 手动/简单 | HPA 自动弹性 |
| 自愈 | 基础重调度 | 探针+多策略自愈 |
| 网络 | overlay 内置 | CNI 生态(Calico 等) |
| 扩展 | Docker Engine 内置编排 | Operator/Helm/GitOps |
| 配置 | 旧版 Compose v3 语义 | Kubernetes API 清单 |
选型
- 几台到十几台机器、服务个位数、团队小:Swarm(或 k3s 这类轻量 K8s)
- 要弹性伸缩、多团队、多环境、长期演进:K8s,且优先云托管版
- 验证故障恢复时,分别检查期望副本、实际副本和调度事件;Swarm 与 Kubernetes 对象不同,迁移时也要重新核对监控查询。
常见问题(FAQ)
Q:Swarm 是不是被淘汰了?
A:Docker 仍提供 Swarm mode 文档;商业支持范围与期限需核对合同,不能凭生态印象宣布停更。存量集群应持续检查支持版本;新建项目默认建议 K8s 生态。
Q:从 Swarm 迁到 K8s 难吗?
A:Compose 文件可经 Kompose 转换起步,但 Service/Ingress/ConfigMap 的语义差异要逐个消化——按服务逐个迁移,别大爆炸式重写。
Q:k3s 算什么位置?
A:轻量 K8s 发行版(单二进制、低资源)——边缘/小集群场景的较轻量的 Kubernetes 路线,运维成本仍需评估。
官方参考
本文依据官方文档整理,示例未在本文中进行运行验证。生产部署需按所用版本、权限和实际负载验证。