容器编排正在快速发展,Kubernetes 和 Docker Swarm 是该领域的两大参与者。Kubernetes 和 Docker Swarm 都是用于在集群内部署容器的重要工具。Kubernetes 和 DockerSwarm 在这个领域有很多突出的利基 USP 和专业人士,他们会留在这里。尽管他们两人实现目标的方式截然不同且独特,但归根结底,他们的终点仍然很近。
Kubernetes 概述
Kubernetes 基于谷歌多年在大规模生产中运行工作负载的经验。根据Kubernetes 网站描述,Kubernetes 是一个开源系统,用于自动部署、扩展和管理容器化应用程序。
它将构成应用程序的容器分组为逻辑单元,以便于管理和发现。Kubernetes 建立在谷歌 15 年运行生产工作负载的经验之上,并结合了来自社区的最佳创意和实践。
Docker Swarm 概述:
Docker swarm 是 Docker 自带的容器的编排系统。它使用标准的 Docker API 和网络,可以很容易地进入您已经在使用 Docker 容器的环境。Docker Swarm 旨在围绕四个关键原则工作:
- 不那么杂乱/繁重,只用工作方法
- Docker Swarm 没有单点故障选项
- 由于自动生成安全证书而安全。
- 轻松兼容向后版本。
如果两者相同,使用哪一个?
尽管这两种编排工具非常相似,但存在一些技术和功能差异和差异,这使得它们各不相同,并且在各自的利基市场中也有好有坏。下面列出了其中一些要点。
- 安装和设置
在 Kubernetes 中,安装是手动的,需要认真规划才能启动和运行 Kubernetes。安装说明因操作系统而异。在 Kubernetes 中需要提前知道集群配置,例如节点的 IP 地址或哪个节点担任什么角色。需要安装各种第 3 方软件包,如 minikube/microk8s 和 kubectl/kubeadm 以用于 kubernetes 的工作和开发。
然而; 与 Kubernetes 相比,Docker Swarm 易于安装。使用 Docker,只需要一套工具来学习在环境和配置上构建。Docker Swarm 还提供了灵活性,允许任何新节点作为管理器或工作器加入现有集群。此外,Docker swarm 还具有使用 Docker API 和通用命令的额外优势,并且底层架构保持不变。
- 在两个系统上工作
它需要了解 CLI(命令行界面)才能在 Docker 之上运行 Kubernetes。您应该了解 Docker CLI 以在结构中导航,然后了解补充 Kubernetes 公共语言基础设施以运行这些程序。
由于 Docker Swarm 是 Docker 的一个工具,因此使用相同的通用语言在结构内导航。这为该工具提供了可变性和速度,并为 Docker 提供了重要的可用性优势。
- 记录和监控
当服务部署在集群内时,Kubernetes 支持多个版本的日志记录和监控:
- ELK Stack——ElasticSearch、Logstash、Kibana。
- Heapster/Grafana/ Influx 用于容器内监控
Docker Swarm 仅支持使用第三方应用程序进行监控。建议使用带有Reimann的 Docker进行监控,但是由于 Docker Swarm 具有开放的 API,因此可以更轻松地连接大量应用程序。
- 可扩展性
Kubernetes 更像是分布式系统的一体化框架。它是一个复杂的系统,因为它提供了一组统一的 API 和对集群状态的强有力保证,这会减慢容器部署和扩展的速度。
与 Kubernetes 相比,Docker Swarm 可以更快地部署容器;这允许快速反应时间按需扩展。
- 联网
Kubernetes 网络是扁平的,因为它使所有 Pod 能够相互通信. 在 Kubernetes 中,模型需要两个 CIDR(Classless Inter-Domain Routing)。第一个需要 pod 获取 IP 地址,另一个用于服务。
在 Docker Swarm 中,加入集群的节点会创建一个覆盖服务的网络,该网络跨越 Swarm 中的所有主机和一个仅用于容器的主机 Docker 桥接网络。在 Docker Swarm 中,用户可以选择在自己创建覆盖网络时加密容器数据流量。
Kubernetes 的优缺点Kubernetes 的优点:
- Kubernetes 由云原生计算基金会 (CNCF) 支持。
- Kubernetes 在容器编排工具中拥有一个令人印象深刻的庞大社区。超过 50,000 个提交和 1200 个贡献者。
- Kubernetes 是一种开源的模块化工具,适用于大多数操作系统。
- Kubernetes 通过 Pod 提供简单的服务组织
Kubernetes 的缺点
- 自己动手时,Kubernetes 安装可能会非常复杂,学习曲线陡峭。解决这个问题的一个选择是选择像我们这样的托管 Kubernetes 即服务。
- 在 Kubernetes 中,需要有一套独立的管理工具,包括 kubectl CLI。
- 它与现有的 Docker CLI 和 Compose 工具不兼容
Docker Swarm 的优缺点
Docker Swarm 的优点
- Docker Swarm 易于安装,设置快速
- Docker Swarm 是一个轻量级安装。部署更简单,并且 Swarm 模式包含在 Docker 引擎中。
- Docker Swarm 的学习曲线更容易。
- Docker Swarm 与 Docker Compose 和 Docker CLI 顺利集成。那是因为这些是原生的 Docker 工具。大多数 Docker CLI 命令都适用于 Swarm。
Docker Swarm 的缺点
- Docker Swarm 提供有限的功能。
- Docker Swarm 的容错能力有限。
- 与 Kubernetes 社区相比,Docker Swarm 的社区和项目更小
- 在 Docker Swarm 中,可以手动扩展服务。