您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

容器编排工具与 Kuberneters

试想这样的场景:

我们使用 Docker 运行服务应用,当,单一实例无法满足需要时,我们就得这个实例部署的,并配置容器间均衡,而所有这些操作都需要我们手动处理,并且这些操作也仅仅被限制一台 Docker 宿主机中,如果宿主机故障,那么整套应用就会崩溃。

为了避免这种情况发生,我们需要耗费大量的精力去依次配置这些容器和主机的监控系统,以便实时掌握宿主机的运行状况,及时处理出现故障的容器。当运行的容器随着业务量逐步,生产环境中可能会有成千上万个容器需要被监控和管理,这时就需要容器编排工具出马了。

使用容器编排工具可以化和管理任务,例如:

Tips
编排这一术语来源于音乐领域,根据作曲家的作品,编曲决定音乐作品的某一部分由某种乐器以某种方式在某个时机来演奏,这一过程称为编排。编排这一术语被借用到了IT领域。容器编排负责容器的启停调度,同时通过管理容器集群来提升容器使用率。

目前,主流的容器编排工具有:

Docker Compose 已经是老朋友了,它不太适用与多宿主机场景, 下面我们介绍后三个用于集群部署的容器编排工具。

Docker Swarm 是由 Docker 开发的调度框架。它的使用方式接近 Docker 本身,加之 Docker Machine 可以创建部署 Docker 宿主机,使得 Swarm 整体部署和使用非常简单,易于上手。

集群管理集成进 Docker Engine;

去中心化设计;

声明式服务模型;

服务扩容缩容;

协调预期状态与实际状态的一致性;

多主机网络;

服务发现;

均衡;

安全策略;

滚动更新。

Mesos 是开源的集群管理框架,它可以将数据中心放在一台电脑里运行,从数据中心、操作系统的角度提供资源视图。对外提供简单的 API,同时隐藏内部的很多复杂架构。它由 UC Berkeley 的Benjemin Hinderman,Andy Konwinski 和 Matei Zaharia 开发,早于 Docker 产生,Mesos 作为资源管理器,后来在 Twitter 里发展成熟,并很快成为 Apache 基金会的顶级项目。

Kubernetes 是最初由 Google 工程师开发和设计的开源容器编排工具。2015 年,Google 将 Kubernetes 项目捐赠给新成立的云原生计算基金会。Kubernetes是目前最流行的开源容器编排案框架,基于 Google 庞大的生态圈及 RedHat(OpenShift)的企业。 如果 OpenShift(可以看作基于Kubernetes构建的发行版产品),Kubernetes 占有容器调度编排市场的份额高达 9 成,因而Kubernetes 社区也成为了容器编排工具中最大的社区。

Kubernetes官网展示了它的基本结构示意图,如下所示:

其中:

在 Kubernetes 上部署应用时,Master 启动应用容器。 Master 就编排容器在群集的 Node 上运行。 Node 使用 Master 暴露的 Kubernetes API 与 Master 通信。终端也可以使用 Kubernetes API 与集群交互。

Tips
Kubernetes 最初只 docker 作为运行时,为了能够让 Kubernetes 变得更具有可扩展性,在 1.5 版本了 容器运行时接口 CRI(the Container Runtime Interface),在随后的演进中,CRI 被抽出来做成了独立的项目。Kubelet 作为 CRI 的客户端,而容器运行时则需要实现 CRI 的服务端。只要某个容器引擎实现了 CRI 约定的接口,就能接入 k8s 作为 Container Runtime。

本节中我们了解了容器编排的概念和工具。
Docker Swarm 的大体局限在个人或小型开发团队,看重的是部署和使用方便,使用的都是比较基础的;Mesos 得益于它的出身,大数据领域的生态相对健全。

对于通用领域的容器编排项目,Kubernetes 是可靠的选择。得益于庞大的社区,和 也非常丰富。但对于初学者来说,复杂的配置和部署仍旧是一道难关,后面的章节中,我们来讲解如何从 0 搭建一套多节点的 Kubernetes 集群。


联系我
置顶