资讯专栏INFORMATION COLUMN

从容器到容器编排

Hydrogen / 807人阅读

摘要:从容器到容器编排平台以及周边生态系统包含很多工具来管理容器的生命周期。终止运行中的容器。发现在由运行于多个主机上的容器组成的分布式部署容器发现至关重要。类似的,当容器崩溃时,编排工具可以启动替换。

从容器到容器编排

Docker平台以及周边生态系统包含很多工具来管理容器的生命周期。例如,Docker Command Line Interface(CLI)支持下面的容器活动:

从注册表中拉取仓库。

运行容器并可选的附加一个终端给它。

将容器提交新镜像。

上传镜像到注册中心。

终止运行中的容器。

CLI满足在单个主机上管理容器的需求,但是面对部署在多个主机上的容器时就无所适从了。为了超越单个容器管理,我们必须转向编排工具(业务流程工具)。

编排工具将生命周期管理能力扩展到部署在大量机器集群上部署的复杂的、多容器工作负载。

通过抽象主机基础结构, 编排工具允许用户将整个集群视为单个部署目标。

基本特征(Baseline Features)

编排过程一般涉及应用管理所有方面自动化的工具,例如初始布局、调度和部署到稳态活动例如更新、部署,支持扩展和故障转移的更新和健康监控功能。这些能力已经成为用户希望现代容器编排工具提供的核心特点中的一部分。

声明配置

编排工具为DevOps团队提供了一个用于声明应用负载和它的标准方案配置的蓝图选项, 它们使用yaml或json格式。 这些定义还包含支持工作负载的仓库、网络(ports)、存储(volumes)和日志的信息。这种方法允许编排工具多次应用同一配置,并且总是在目标系统上产生相同的结果。 它还允许工具在同一个应用的不同阶段, 例如开发阶段、测试阶段和生产阶段接受不同的配置。

规则和限制

工作负载通常对主机放置、性能和高可用具有特殊的策略或要求。例如,在同一主机上提供主备数据库容器是无意义的;它破坏了目的性。类似的,在web服务器同一机器上放置内存缓存可能是个好主意。 编排工具支持定义容易放置的亲和性和约束的机制。

Provisioning

供应(Provisioning)或调度是处理容器在集群中的放置和启动的。这个过程包括根据配置选择合适的主机。除了容器提供API, 编排工具也涉及针对主机环境的基础设施API。

发现

在由运行于多个主机上的容器组成的分布式部署, 容器发现至关重要。Web服务器需要动态发现数据库服务器,负载均衡需要发现并注册web服务器。 编排工具提供或期望有一个分布式key-value存储, 轻量级DNS或一些其他能够发现容器的机制。

健康监控

既然编排工具知道系统的期望配置,所以它们能够唯一的监控系统容器和主机的健康情况。在主机故障的情况下,这个工具可以重新定位容器。类似的,当容器崩溃时,编排工具可以启动替换。编排工具确保部署始终处于开发人员或操作人员声明的期望状态。

仔细看看三种流行的编排工具 Docker Swarm

Docker Swarm的目标是使用和核心Docker引擎一起工作同样的Docker API。API端点的目标不是代表一个Docker引擎,Swarm透明的处理与Docker引擎池相关联的端点。这种方法的关键优势在于现有工具和API能够和对待单个实例的相同方式对待集群。Docker的工具/CLI和Compose是开发者如何创建它们应用程序的,因此,它们不得不重新编排来容纳一个编排器。

遵循Docker的"自带电源、可移动"的哲学思想,支持数个发现后端,包括静态文件和IP地址,etcd, Consul和ZooKeeper。调度策略也是可插拔的。

etcd: CoreOS 团队发起的一个管理配置信息和服务发现的项目。

Consul: 另外一个提供服务发现的工具,它是分布式的、高可用、横向可扩展的。

ZooKeeper: 一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

Docker Swarm由几个内置的调度策略组成,给予用户指导容器放置的能力, 以最大化或最小化容器在集群中的扩散。也支持随机放置。

Docker寻址遵循"自带电源,但可移动"的原则,意思就是当前只使用少量的简单调度后端搬运,但是将来通过可插拔接口它能支持额外的后端。基于给定用例的规模和复杂度,开发人员和操作人员可以选择插入恰当的替代后端。

Docker Swarm支持确定容易在特定主机放置的约束和亲和力。

约束(Constraints)定义了需要选择用于调度的节点子集的要求。它们可以基于存储类型、地理位置、环境以及内核版本等属性。
亲和力(Affinity)定义了在主机上分配容器的需求。

为了在每个主机上发现容器,Swarm使用了可插拔后端架构,它与一个简单的托管发现服务、静态文件、IP列表、etcd、Consul和ZooKeeper一起工作。

Swarm支持基本的将康监控,这样可以防止在故障主机上提供容器。

Kubernetes

来自Google - 声称每天处理20亿容器的公司 - 的Kubernetes享有独特的声誉。

Kubernetes的架构是基于一个带有很多奴仆的主服务器。命令行工具叫做kubecfg, 连接主服务器端点API来管理和编排奴仆节点。下面是运行在Kubernetes环境里边的每个组件的定义:

Master: 运行Kubernetes管理进程的服务器,包括API服务,替换控制器和调度器。

Minion: 运行kubelet服务和Docker引擎的主机。Minions从master接收命令。

Kubelet: Kubernetes中的节点级别的管理器; 运行在minion上的。

Pod: 部署在同一个minion上的容器集合。

Replication controller: 定义需要运行的pods或容器数量。

Service: 定义允许发现由每个容器以及使用通信的外部代理发布的服务/ports。

Kubecfg: 和master沟通用于管理Kubernetes部署的命令行接口。

服务定义以及规则和约束是用JSON文件描述的。对于服务发现,Kubernetes提供了一个稳定的IP地址和相对于动态的pods集合的DNS名。当运行在Kubernetes pod上的容器连接到这个地址,连接被一个本地代理(叫做kube-proxy)转发到一个具体的后端容器。

Kubernetes支持用户实现的应用程序健康检查。这些检查由运行在每个minion上的kubelet执行, 以确保应用程序正确操作。当前,Kubernetes支持三种类型的健康检查:

HTTP健康检查: kubelet将调用web端点。如果响应码是200到399之间,它就认为是成功的。

Container exec: kubelet将在容器中执行一个命令。如果返回OK, 认为就是成功的。

TCP socket: kubelet将尝试打开一个到容器的socket, 并确立一个连接。如果连接产生的话,就认为是健康的。

Apache Mesos

Apache Mesos是一个开源集群管理器,简化了在共享服务器池上运行任务的复杂度。最初设计用于支持高性能计算负载, Mesos在0.20.0发布版本添加了Docker的支持。

一般的Mesos集群由一个或多个运行mesos-master服务器和运行了mesos-slave组件的服务器组成。每个slave注册到master来提供资源。 master和部署框架交互来给slaves委派任务。 下面是Mesos的架构:

Master daemon: The mesos-master service runs on a master node and manages slave daemons.

Slave daemon: The mesos-slave service runs on each slave node to run tasks that belong to a framework.

Framework: An application definition consisting of a scheduler that registers with the master to receive resource offers, along with one or more executors to launch tasks on the slaves.

Offer: The list of a slave node’s resources. Each slave node sends offers to the master, and the master provides offers to registered application frameworks.

Task: The unit of work scheduled by a framework to be executed on a slave node.

Apache ZooKeeper: The software used to coordinate the collection of master nodes.

Unlike other tools, Mesos ensures high availability of the master nodes using Apache ZooKeeper, which replicates the masters to form a quorum. A high availability deployment requires at least three master nodes. All nodes in the system, including masters and slaves, communicate with ZooKeeper to determine which master is the current leading master. The leader performs health checks on all the slaves and proactively deactivates any that fail.

When Mesos is used in conjunction with Marathon, service discovery can be enabled based on the HAProxy TCP/HTTP load balancer, along with an assistant script that uses Marathon’s REST API to regenerate a HAProxy configuration file periodically. Alternatively, Mesos-DNS, a DNS-based service discovery mechanism, has recently been released in beta.

总结

容器编排正快速发展。从主要的基础设施公司到PAAS供应商到早起的创业公司以及无服务器计算中,每个人都在叫嚣着在生态系统中占有一席之地。在容器编排工具上有很多贡献者,因为这些对于部署真实世界的应用程序是必不可少的,从而推动了Docker和容器的采用。 我们视图强调一些构建配置工具的关键贡献者,但它不仅仅是明显的编排工具,更重要的是,要查看构建、部署、CI/CD、Paas和编排器交互的其他工具,这是我们在自动化和编排目录涵盖大量篇幅的。

参考链接

https://thenewstack.io/contai...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27310.html

相关文章

  • 网易云深度剖析Kubernetes优化与实践

    摘要:最后,张晓龙透露未来网易云会在以下三个方面继续深耕研发高性能容器,跟进开源社区最新版本并适配,加大参与社区力度并反馈社区。文章来源网易云社区 欢迎访问网易云社区,了解更多网易技术产品运营经验。 10 月 15 日,聚焦 Kubernetes 中国行业应用与技术落地的首届中国 Kubernetes 用户大会(KEUC)在杭州成功举办。本次大会吸引了来自全球各地的技术精英齐聚一堂,共同探...

    fai1017 评论0 收藏0
  • 谈谈Pod在微服务中的运用

    摘要:本文整理自时速云线上微信群分享第十期本文主要包括的基本概念使用场景,以及如何在时速云平台上进行的编排部署,希望对大家在进行微服务架构实践时有所帮助。问关于提供访问容器数据的能力,中包含一个业务和一个服务,时速云的控制台可以进入到容器内部。 本文整理自【时速云线上微信群分享】第十期 本文主要包括Pod的基本概念、使用场景,以及如何在时速云平台上进行Pod的编排部署,希望对大家在进行微服务...

    MASAILA 评论0 收藏0
  • 阿里云容器服务新增支持Kubernetes编排系统,性能重大提升

    摘要:年底首次开启阿里云容器服务公测年月正式商业化年月成为国内唯一合作伙伴并推出专有云企业版,月实现产品国际化。阿里云容器服务为增加了阿里云云盘和等分布式存储服务支持。阿里云容器服务为此进一步提升了易用性,降低了部署管理和应用开发门槛。 摘要: 作为容器编排系统的两大流派, Kubernetes和Swarm的重要性不言而喻。融合了两大高性能集成的阿里云容器服务,不仅可以降低50%的基础架构成...

    keelii 评论0 收藏0
  • 如何用Docker编排容器

    摘要:应用被绑定到虚拟机或者容器并且成为主要的管理元素。采用的方法是他们正在使用的一系列实现容器自动化的工具,和。,使用相同的作为标准引擎实例,被设计用来提供容器可扩展的环境。 欢迎来到后硬件时代。在这个时代我们把容器或者是虚拟机迁移到我们需要的地方,而不需要考虑容器或者虚拟机。这里我们介绍一些新的Docker工具来做这份工作。 构建下一代应用是一回事,管理和运行它们是另一回事。 showI...

    xialong 评论0 收藏0
  • 容器趋势:计划,编排和CI——来自Bitnami的数据集

    摘要:数据集调查结果反映的电子邮件分布清单显得十分重要。数据集涵盖了包括容器使用容器计划的领域,使用容器的编排工具,工具和数据库选项。在这篇帖子中,我们会重点关注跟容器和有关的数据。人数在接受调查的人数中有是独立开发者,剩下的都是各个公司的雇员。 过去一周内,我们有机会处理了一大堆由Bitnami收集的数据(科普:Bitnami是一家RedMonk代理商)。Bitnami通过他们对整个用户群...

    cod7ce 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<