BT

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

Atlassian发布Kubernetes节点自动化扩展工具Escalator

| 作者 Hrishikesh Barua 关注 12 他的粉丝 ,译者 谢丽 关注 9 他的粉丝 发布于 2018年6月1日. 估计阅读时间: 4 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料!

Atlassian把他们的内部工具Escalator发布为开源项目。该工具针对Kubernetes节点提供了配置驱动的抢占式纵向扩容和更快地纵向缩容。

2013到2014年,Atlassian采用了容器,并构建了自己基于Docker的PaaS,使用它运行内部的平台和服务。除了pod的基本调度和运行外,他们的编排还需要具有弹性,以应对云硬件故障及响应负载,快速实现纵向扩容或缩容。Kubernetes就符合要求,团队就使用它作为他们的编排器。他们的构建工程基础设施所包含的工作负载需要配备数以百计的虚拟机——这是他们需要首先迁移的其中一个部分。

Kubernetes有两个自动扩展器——横向的pod自动扩展器集群扩展器。前者实现pod——容器或一组相关容器之上的一种抽象——的横向扩容和缩容,因此,它依赖于底层计算资源(通常是虚拟机)的可用性。集群自动扩展器用于扩展计算基础设施本身。可以理解,由于虚拟机需要的配置时间更多,所以纵向扩容和缩容需要的时间都比较长。集群自动扩展器的任何延迟都会转变成pod自动扩展器的延迟。类似地,pod可以非常快速地缩容,但计算VM要用更多的时间才能做到。这会导致来自空闲计算VM的巨大成本,尤其是在Atlassian这样的基础设施规模上。Atlassian的问题仅限于对扩容和缩容延迟容忍度较低的批处理工作负载。他们决定编写自己的自动扩展功能,在Kubernetes之上解决这些问题。

Escalator是用Go编写的,它为计算VM的容量上限和下限提供了可配置的阈值。其中有些配置属性是通过修改Kubernetes一项名为“taint”的特性实现的。VM节点可以被特定的值“污染”(标记),那样,有相关标记的pod就不会调度到它上面。标记之后,Kubernetes标准的集群自动扩展器就可以更快地拿下未使用的节点。纵向扩容配置参数是一个用使用率表示的阈值,通常小于100,以便有个缓冲。当使用率达到阈值时,Escalator会自动扩展计算VM,为稍后可能出现的容器提供空间,使它们可以快速启动。

图片来源:https://developers.atlassian.com/blog/2018/05/introducing-escalator/

像AWS这样的公有云提供商试图使用类似Fargate这样的解决方案来解决VM管理问题,不过,它们没有提供Escalator那样的配置选项。在容器环境中,计算扩展/收缩是一个常见的问题。如果计算VM需要几分钟才能启动起来,那么容器启动的速度优势就不存在了。保持VM运行解决了这个问题,代价是运行可能空闲的VM。需要注意的是,Escalator解决了一个在两个Kubernetes自动扩展器的情况下非常特殊的问题,就是批处理工作负载。

Escalator的运行需要Kubernetes 1.8+和Golang 1.8+。目前,对于云提供商,它仅支持AWS。Atlassian之前已经开源了另外一个Kubernetes相关的项目Smith

查看英文原文Atlassian Releases Escalator, an Autoscaling Tool for Kubernetes Nodes

评价本文

专业度
风格

您好,朋友!

您需要 注册一个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