抖音技术能力大揭密!钜惠大礼、深度体验,尽在火山引擎增长沙龙,就等你来! 立即报名>> 了解详情
写点什么

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

2018 年 5 月 31 日

看新闻很累?看技术新闻更累?试试下载 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

2018 年 5 月 31 日 12:271191
用户头像

发布了 1008 篇内容, 共 322.2 次阅读, 收获喜欢 293 次。

关注

评论

发布
暂无评论
发现更多内容

Vue进阶(八十六):iframe 结合 window.postMessage 实现跨域通信

No Silver Bullet

Vue 八月日更 iframe

最近很火的低代码到底是什么?

禅道项目管理

低代码 可视化 低代码平台

数仓出现“wait in ccn queue”的时候,怎么迅速定位处理?

华为云开发者社区

线程 hash 负载 数仓 GaussDB(DWS)

架构训练营第 1 期 模块六作业

高远

适女化科技(二):让女性更安全的两条技术路径:软件硬件化与硬件软件化

脑极体

突破四大要素  飞算SoFlu助力企业实现DevOps落地

飞算全自动软件工程平台

DevOps 自动化 软件工程

百度信誉认证中台架构解析

百度Geek说

后端 软件架构 中台架构

Rust从0到1-高级特性-函数和闭包进阶

rust 闭包 函数指针

python实现两台不同主机之间进行通信(客户端和服务端)——Socket

Python研究者

8 月日更

最近很火的低代码到底是什么?

禅道项目管理

前端 测试开发 语言 & 开发

故事点数VS工时,研发工作量到底怎么算?

LigaAI

敏捷开发 故事点数 工时 研发工作量

06. 第三次AI浪潮:有何不同?

数据与智能

人工智能

在线JSON转PHP Array工具

入门小站

工具

C#多线程开发-线程基础 01

Andy阿辉

C# 多线程 8 月日更 c#多线程

Spring的七大模块你了解吗?

4ye

Java spring 架构 后端 8 月日更

国产接口工具ApiPost如何利用CryptoJS对请求参数进行MD5/AES加解密

Proud lion

前端 后端 加密解密 Postman 接口文档

一起吐槽接口文档

FunTester

接口文档 接口测试 API Jira FunTester

Linux之tr命令

入门小站

Linux

微信业务架构&学生管理系统架构选型

John

【浪潮云说】直播间第七期今日准时开播!

浪潮云

云计算运维

Hadoop MapReduce原理、序列化

binfirechen

云小课|原来云备份不仅仅是能备份...

华为云开发者社区

云备份 迁移数据 复制备份

解析ThreadPoolExecutor类是如何保证线程池正确运行的

华为云开发者社区

线程池 任务 注释 Worker类

centos7中docker安装

消失的子弹

Docker Kubernetes 云原生

轮询锁在使用时遇到的问题与解决方案!

王磊

8 月日更

接口测试,负载测试,并发测试,压力测试区别

与风逐梦

软件测试 接口测试

互动直播应用快速开发实践(基于声网)

大伟

LeetCode 每日一题「搜索插入位置」

陈皮的JavaLib

Java 面试 算法 LeetCode 8 月日更

带你走进MySQL全新高可用解决方案-MGR

vivo互联网技术

数据库 分布式 MySQL 高可用

面试Go语言开发?让这本书帮你感动面试官!

博文视点Broadview

易华录 X ShardingSphere|葫芦 App 后台数据处理的逻辑捷径

SphereEx

数据库 开源

Study Go: From Zero to Hero

Study Go: From Zero to Hero

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