选择你的Docker管理工具:Kubernetes或Swarm

来源:互联网 发布:大麦网抢票软件个人版 编辑:程序博客网 时间:2024/04/20 11:37

Docker概述

Docker

Docker 容器技术一直是推动云技术发展的最重要的技术之一。如果你还没有使用容器技术,你很可能很快就会使用到它,不论以什么样的方式。

使用这种技术有两个步骤。首先,你必须理解容器的概念。之后你需要一个编排工具来安排和管理你的容器。你的选择取决于你的技术偏好和需求。

Docker是一种先进的技术,为用户带来很多计算方面的优势。这篇入门介绍是该复杂的计算机进程的一个概要。将使用简单直接的方式呈现它的基础知识。

Docker是一个容器的软件平台。容器将一个计算任务 (或者一系列任务 ) 所需要的东西打包然后在隔离的环境中运行它们。简而言之,容器为软件包提供运行的平台,无需完整的操作系统的支持就可以运行软件包。

这个简单的描述让容器听起来就像一个被吹嘘的虚拟机。但这并不正确。一个VM可以部署很多的服务,并在一个计算机上运行不同的计算进程。虽然这个宽泛的解释基本上一样适用于容器,但是它们的区别在于部署方式。

例如,这两种方式的本质区别之一就是运行它们的裸机(bare metal)。VM需要一个宿主计算机,并且必须要能共享它的资源。VM 运行在 hypervisor (管理虚拟机的程序平台)上。因此,不是所有的计算机都能支持虚拟复制。

这个支持取决与计算机的处理器。这个限制是巨大的。要在同一台计算机或服务器上运行很多的VM会话会受到宿主机器资源丰富度的限制。

虚拟机需要依赖于一个安装好的操作系统才能运行。另一方面,容器只需要操作系统的某些部分就能运行。这意味着容器的运行效率更高、系统资源占用更少,使得它们相较于VM更实用,发挥更好的计算作用。

与容器的另一个显著差别是VM可以单独运行应用程序,而容器没有独立运作的能力并因此遭致问题。因为容器没有操作系统或者 hypervisor,所以需要有自己的管理系统。

目前有两个流行的开源技术在这个容器控制领域进行竞争。Docker开发了Swarm,现在将它整合进了 Docker Toolbox。另外一个更加成熟的容器管理器是 Google 的Kubernetes。它们都解决了缺乏独立运行能力的问题,通过提供一个能跨多主机、多数据中心、多云环境运行的系统。

选择权在你手里。无论你选择那种工具,Docker都能运行的很好。决定那个工具更好,首先是要理解它们的区别。

Kubernetes

Kubernetes
Kubernetes是可以用来自动部署、伸缩和管理容器化应用的开源系统。Kubernetes集群包含一些基本组成部分。这里简要的概括一下:

  • Kubernetes成组地部署和调度容器,这个组叫Pod,常见的Pod包含一个到五个容器,它们协作来提供一个 Service。
  • Kubernetes默认使用扁平的网络模式。通过让在一个相同 Pod 中的容器共享一个 IP 并使用 localhost 上的端口,允许所有的 Pod 彼此通讯。
  • Kubernetes 使用 Label 来搜索和更新多个对象,就好像对一个集合进行操作一样。
  • Kubernetes 会搭设一个 DSN 服务器来供集群监控新的服务,然后可以通过名字来访问它们。
  • Kubernetes 使用 Replication Controller 来实例化的 Pod。作为一个提升容错性的机制,这些控制器对一个服务的中运行的容器进行管理合监控。

Swarm

Swarm
Docker的开发者现在将Docker Machine、Compose 和 Swarm 打包到 Docker Toolbox 中。你可以对这三重工具进行配置来让它们负责容器的配置、管理或者集群化容器。

Docker Swarm,现在作为一个 beta 版本,是一个 Docker 的集群化工具。它通过使用一个或者多个 Docker 主机来组成一个 Swarm 集群。 Swarm 的旨在将容器打包到主机上,所以它能为更大的容器预留其他的主机资源。较之于随机地将容器调度到集群中的一个主机上,这种集群的组成方式能取得更加经济的伸缩性能。

下面是 Swarm 和 Kubernetes 关键的不同点:

  • Swarm 有能将一组 Docker 引擎转变为一个虚拟的 Docker 引擎的原生能力。
  • 一个 swarm 只包含两个组件:agent 和 manager。
  • 一个集群有一个主机来运行一个 Swarm agent,另外一个主机来运行 Swarm manager。
  • 这对于运作来说是必要的,因为 manager 负责容器在主机上的编排和调度。
  • Swarm 使用一个发现机制来处理主机的发现和向集群的添加。
  • Swarm 提供了标准的 Docker API。这使得它提供了开箱即用的能力,能让所有既有的 Docker 管理工具 ( 包括第三方的产品)能自动地、透明地在多个主机上进行伸缩。

Kubernetes和Swarm间的微妙差异

vs
两种方式 Kubernetes 和 Swarm 都能处理同一种类型的工作负载,以云原生应用的方式。然而,一个很大的不同点是如何处理伸缩。

在Kubernetes中,每一个应用层被定义成一个 Pod。一次部署或者复制控制器可以手工地或自动地处理伸缩。在Swarm中,对于单个容器的伸缩定义在 Compose 文件中。

其他的不同点在于管理器系统如何处理高可用、负载均衡、应用滚动更新和回滚、日志和监控、存储、网络、服务发现以及性能合伸缩性上。

结论

Kubernetes 和 Swarm 都能大规模构建虚拟的容器。它们提供了两种不同的手段来达到同一目的。 它们的运作方式不同,并提供功能l可能更好地适应你具体需求的功能。

不要仅仅因为 Docker Swarm 是Docker Toolkit 自带的就是用它作为解决方案。首先,让你的 IT 团队的成员上手熟悉两种工具。然后让 IT 团队根据自己公司的情况来建言,哪一种方式配置和部署更加容易。

用最简单的比喻来说,选择Kubernetes或Swarm就像在将所有选项缩小到两个之后选择最喜欢的Linux桌面。 哪个更满足你的需要才是决定因素。

原文链接:Choose your Docker Management Tool: Kubernetes or Swarm

阅读全文
0 0
原创粉丝点击