BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

支持多进程容器的ContainerPilot 3.0已正式发布

| 作者 Hrishikesh Barua 关注 15 他的粉丝 ,译者 大愚若智 关注 9 他的粉丝 发布于 2017年8月2日. 估计阅读时间: 3 分钟 | CNUTCon 了解国内外一线大厂50+智能运维最新实践案例。

Joyent最近发布的3.0版ContainerPilot是一种可在容器内部运行多个进程的Init系统。该系统可自动实现服务注册,服务发现、运行状况检查,以及进程的生命周期管理任务。它提供了一种基于HTTP的全新API,简化的配置语言,目前仅支持Consul。

通过处理随后启动的子进程,容器中的Init系统可顺利应对PID-1问题。ContainerPilot最初在构建时采用了单一“主”应用程序的概念,在第3版中,它可以充当容器内多个进程的控制器,这一改进主要来自用户反馈,因为很多用户对进程间依赖性的不同选项感到困惑。在本次发布的新版本中,每个进程都有自己的运行状况检查、依赖性、运行频率,以及启动和关闭过程中的生命周期钩子等机制。

如果诸如服务发现代理等支撑进程独立于主应用运行,通常就会导致容器中运行多个进程。此类进程的配置方法可能与主应用有所不同,同时主要还取决于同一个容器或外部容器中运行的其他服务。这些因素导致编排任务变得复杂无比。

对此Joyent提出了一种名为“Autopilot”的概念,借此可将编排方面的所有工作转移给应用程序本身,这样就不再需要外部的编排程序了。此时的编排通常涉及服务端点在注册表中的注册操作,注册后才能被其他服务查找,此外还提供了运行状况检查的相关定义,以及依赖项的定义和生命周期管理。在ContainerPilot的产品中,目前的最新版仅支持使用Hashicorp的Consul作为服务发现机制。原本对etcd的支持已取消。


图片来源:https://www.joyent.com/blog/containerpilot-hello-world

ContainerPilot中基于HTTP的全新API可供用户向控制应用程序及其环境发送信号。HTTP请求可发送至容器内部的Socket中,借此更新环境变量,切换维护模式,记录Prometheus端点的度量指标,或重载ContainerPilot配置。这种方式取代了原本基于信号的机制,原先的机制只能切换状态,但无法提供结果反馈。

第3版中的配置语言整合了用户定义服务生命周期事件之间依赖性的方法。例如,可以定义nginx仅在内部的Consul代理启动之后再启动。这种依赖性可以通过启动或停止其他服务的方式定义,或针对服务的任何中间状态来定义。该版本还将之前定义的所有“行为”钩子进行了整合,组成了一种名为作业(Job)的抽象。不同作业可相互绑定,借此创建由依赖应用组成的链条。

ContainerPilot是由Joyent原有的一个名为ContainerBuddy的产品发展而来的,目前该产品也已成为一个开源项目,可访问这里获取。

阅读英文原文ContainerPilot 3.0 Released with Multiprocess Container Support

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT