博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
大规模集群中Docker镜像如何分发管理?试试Uber刚开源的Kraken
阅读量:6265 次
发布时间:2019-06-22

本文共 1016 字,大约阅读时间需要 3 分钟。

Docker注册表的主要目的是存储和分发Docker镜像,看似是一个相对简单的任务,但是如果遇到了像Uber这样的大规模计算集群,就很容易成为可伸缩性的瓶颈。在多区域和混合云系统的计算环境中,镜像分发会变得更具挑战性。

为了解决遗留Docker注册表堆栈的性能问题,Uber的集群管理团队开发了一个开源对等(P2P)Docker注册表kraken。

Docker容器是Uber基础设施的基础构建块,但是随着计算集群数量和大小的增加,一个简单的带有sharding和缓存的Docker注册表设置无法跟上高效分发Docker映像所需的吞吐量。

Kraken重点关注在可扩展性和可用性方面,用于混合云环境中的Docker镜像管理、复制和分发。支持可插拔的后端,Kraken可以作为分发层插入到现有的Docker注册表设置中。

\"\"

图1 Docker图像层分布在Kraken集群中的可视化

架构

在Kraken研发时,Uber探索了多种设计,最终选择了p2p架构。Kraken使用针对数据中心网络环境定制的P2P协议,并在企业级改进了微服务生命周期管理。

\"image\"

代替管理数据块,Kraken支持可插入存储选项,可以插入可靠的blob存储选项,如S3、HDFS或其他注册表,且存储接口简单,易于添加新选项。

另外,Kraken在现有的成熟技术上建立了独特的数据分发解决方案,支持自我修复,易于维护,支持集群之间的无损和基于规则的异步复制。

大规模的性能改进

2018年年初,Kraken首次部署在了Uber中,其在遗留Docker注册表堆栈中遇到的性能问题迎刃而解。

据悉,在Uber最繁忙的时候,Kraken集群每天分发超过100万个blob,其中有10万个分发的blob大小超过1GB或更多。在生产高峰期,Kraken可以在30秒内分发20000个100MB到1GB的blob。

Kraken的高可扩展性使其能够支持至少8000台主机的集群,并以超过集群中主机最大下载速度限制50%的速度分发Docker镜像。另外,对Kraken来说,集群和镜像大小对下载速度没有显著影响。

自内部发布以来,Kraken一直被用于管理和分发Uber的所有Docker镜像。这次将该工具开源出来,Uber表示希望能够激发有关工程和设计最佳实践的讨论,以便与Docker一起构建一个适应性强且可靠的基础设施。

Kraken的GitHub地址:

Uber博客的原文链接:

转载地址:http://lycpa.baihongyu.com/

你可能感兴趣的文章
基于 IdentityServer3 实现 OAuth 2.0 授权服务数据持久化
查看>>
是什么时候开始学习gulp了
查看>>
【Cocos2d-x游戏开发】细数Cocos2d-x开发中那些常用的C++11知识
查看>>
otl使用存储过程或是LEFT JOIN时提示输出类型未知的问题
查看>>
集群(cluster)原理(转)
查看>>
小数格式:
查看>>
【MyBatis学习06】_parameter:解决There is no getter for property named in class java.lang.String...
查看>>
Eclipse导入别人的项目报错:Unable to load annotation processor factory 'xxxxx.jar' for project...
查看>>
与孩子一起学编程10章
查看>>
【再探backbone 03】博客园单页应用实例(提供源码)
查看>>
android 圆角编写(懒得去找,写给自己看的)
查看>>
chrome 搜索 jsonView
查看>>
chrome浏览器:chrome 69 恢复默认UI
查看>>
Irony - 一个 .NET 语言实现工具包
查看>>
Java之Static静态修饰符详解
查看>>
修改weblogic部署的应用名称
查看>>
aaronyang的百度地图API之LBS云与.NET开发 Javascript API 2.0【基本地图的操作】
查看>>
Java Nio 多线程网络下载
查看>>
C++不让程序一闪而过
查看>>
C# 中的枚举类型 enum (属于值类型)
查看>>