开源云原生制品仓库 Harbor 2.1 上月正式发布了!2.1版本增加了好几项新功能,给镜像管理带来很大的便利和提高了效率,可以挽救不少运维工程师的发际线了:

● 镜像的代理和缓存

● 非阻塞的镜像垃圾回收

● P2P镜像分发的预热

● 机器学习模型的管理

● Sysdig镜像扫描器

下面我们来详细聊聊几个大家关心的热门问题!下文部分内容节选自最新出版的《Harbor权威指南》,本书为 Harbor 开源项目维护者邹佳和贡献者张道军,是第一本关于Harbor的技术参考书。


镜像代理

先说说用户关心已久的镜像代理问题,这个问题可能要追溯到 Docker Registry 刚发布的时候。在很多客户的环境下,机器都不能访问外部互联网,或者访问互联网络的带宽有限,同时有大量的容器镜像需要从外部下载,如果每次开发、测试、部署时都需要从互联网下载容器镜像,则将占用大量的带宽而且效率较低。同时,在某些场景如物联网场景中,需要使用移动网络接入互联网,这时带宽可能是系统部署的瓶颈。更为严重的问题是,有些公有云容器镜像服务(如Docker Hub见下表)对客户端有限流设置,当镜像拉取操作达到一定流量时,会导致服务无法使用。

Docker Hub最新免费服务条款(11月1日生效),付费用户不受此限制:

匿名用户,每 6 小时只允许 pull 100 次

登录用户,每 6 小时只允许 pull 200 次

通过镜像代理服务可以解决上面的问题:当内网客户端需要拉取镜像时,镜像代理可代为到外网拉取镜像(镜像代理服务器需要连通外网),然后返回镜像给内网客户端。同时,代理可以缓存镜像,供后续内部网络拉取时使用。容器镜像代理目前常见的方法有开源项目“docker/distribution”的实现。这种方法需要设置mirror-registry (镜子镜像仓库),并且以proxy的配置启动一个“docker/distribution”的容器,配置好要代理的账户名和密码。这种方案用起来比较复杂,而且只能代理 Docker Hub 的镜像。这个方案还有一个明显的不足,即一旦 docker/distribution 被设置为缓存代理模式,将无法提供其他镜像管理功能,只能是个具有缓存功能的代理。Harbor 项目组一直对此问题“铭记在心”,只是囿于 docker/distribution 的限制,无法提供代理能力。

在 Harbor 2.0 中对架构做了较大重构,绝大部分镜像元数据由 Harbor 直接管理,为解决上述问题带来了曙光。Harbor 2.1 增加了一种项目(project)类型——代理项目,系统管理员可以新建一个代理项目,如 dockerhub_proxy,并且关联到要代理的镜像仓库,如 Docker Hub 的某个镜像库。在代理项目新建好之后,用户只要有权限访问这个代理项目,就可以通过这个代理拉取Docker Hub的容器镜像。配置界面如下:

如果用户需要拉取Docker Hub上面的“myproject/hello-world:latest”镜像,则首先需要登录 Harbor,再运行“docker pull”命令:

$ docker login harbor.example.com
$ docker pull harbor.example.com/dockerhub_proxy/myproject/hello-world:latest

这样就可以通过代理把镜像拉取到本地了。在 Harbor 上缓存了这个镜像,下次同样的请求发到 Harbor 服务时,不通过外部网络就可以直接返回本地缓存的镜像。在 Harbor 上可以看到,“hello-world:latest”镜像被缓存在 dockerhub_proxy 项目的下的“myproject/hello-world:latest”镜像库中。在使用缓存响应请求时,Harbor都会先检查源镜像库是否有更新,如果有更新,则本地缓存镜像失效,需要重新从源镜像库拉取镜像。

Harbor 原有的基于项目的功能,如权限控制、镜像保存策略、配额、CVE白名单,都可以继续使用。如果需要只保存7天内访问过的容器镜像,则只需设置一个镜像保存策略,将超过7天没有访问的缓存镜像删除即可。

总而言之,使用镜像代理功能可以帮助用户节约有限的外网带宽资源,加快镜像获取的速度,同时最小限度地减少对用户既有拉取镜像方法的改动。

P2P镜像预热

接下来说说 P2P 镜像预热功能。在云原生领域,特别是在大规模集群场景中,如何可靠并高效地分发镜像是个需要重点关注的问题。镜像分发在本质上也是文件分发,因此和文件分发一样,随着容器集群规模的增大,从中心化的镜像仓库中拉取镜像会出现镜像分发效率低、镜像仓库负载大等问题,同时网络带宽容量可能成为分发瓶颈,并最终造成分发效率无法提升的结果,进而影响到容器应用或者服务的部署过程。

为了解决上述问题,很多项目在 P2P (点对点)内容分发技术基础之上实现了对镜像分发的加速,即 P2P 镜像分发,这是目前解决镜像分发行之有效的技术之一,也是 P2P 内容分发技术在镜像分发场景中的实际应用。比较有代表性的项目包括阿里巴巴贡献的 CNCF 托管开源项目 Dragonfly(蜻蜓)和 Ube r公司开源的Kraken(海妖)项目。

P2P 镜像分发项目的基本工作机制大致相同。要分发的镜像被分割为固定大小的数据分片来传输,各节点可以从不同的节点(Peer)并发地下载数据分片来组装成完整的镜像内容,这样有效地降低了对上游镜像仓库的请求负载,可就近获取所需内容,大大提升了分发效率。据 Dragonfly 官方文档的介绍,Dragonfly 的镜像分发机制能够提升镜像仓库的吞吐量,同时节省镜像仓库大部分的网络带宽。

Harbor 容器镜像仓库专注于镜像的管理和常规分发,并没有 P2P 相关的功能支持。Harbor 的 P2P 工作组提出了 P2P 镜像预热方案,即通过轻量级松耦合的方式,将 P2P 镜像分发引擎集成到 Harbor 中,并通过策略将满足预设条件的镜像提前下发到 P2P 网络中缓存起来,在节点请求到来时可直接开始 P2P 数据片分发过程,就像 P2P 网络之前已经分发过相同的内容一样,网络已经“热”起来了。

P2P预热的核心思路如下图所示。通过适配器接口将具有预热能力的P2P引擎(目前有 Dragonfly 和 Kraken )集成到 Harbor 侧并由系统管理员统一管理,项目管理员可以在项目中创建一个或者多个预热策略。每个策略都针对一个目标P2P引擎实例,并通过镜像库(repository)过滤器和 Tag 过滤器确定要预热镜像的范围,同时可叠加更多的预设条件来确保只有满足特定要求的镜像才允许预热。策略可被设定为手动执行、定时周期性执行及基于特定事件的发生执行。

当策略执行时,通过其中的过滤器和预设条件可以得到所有满足条件的镜像列表,如果此列表不为空,则其中所含镜像的相关信息被发送给 P2P 引擎。P2P 引擎会在其 P2P 网络缓存中检查是否存在相关内容,如果不存在,则从Harbor拉取镜像并将其内容缓存到 P2P 网络中。这样 P2P 引擎在之后响应镜像拉取请求时,可直接使用缓存的内容,减少等待延迟,进而提升整体的镜像分发效率。

镜像预热的一个直接使用场景是:在 CI 系统构建出应用镜像后,Harbor能及时地将满足条件的“已就绪”镜像发送到 P2P 网络中,这样应用就可以快速部署出来。

P2P预热功能已经在 Harbor 2.1中推出,主要实现工作由 VMware、腾讯、网易云、灵雀云、阿里巴巴 Dragonfly 及 Uber 的贡献者负责。

Harbor 2.1 还有其他给工程师的“护发”功能,例如,之前文章介绍过的机器学习模型管理,利用 OCI 制品的功能,镜像仓库秒变模型仓库,减少了不必要的组件。另一个运维法宝是非阻塞的镜像垃圾回收功能,在垃圾回收的时候,可以避免 Harbor 进入只读模式,满足生产系统不停机的需要。

新书上市

▊《Harbor权威指南:容器镜像、Helm Chart等云原生制品的管理与实践》

张海宁 等 著

在云原生生态中,容器镜像和其他云原生制品的管理与分发是至关重要的一环。本书对开源云原生制品仓库Harbor展开全面讲解,由Harbor开源项目维护者和贡献者倾力撰写,内容涵盖Harbor的架构、原理、功能、部署与配置、运维、定制化开发、API、项目治理和成功案例等,还有很多未公开发表的内容在本书中都有详尽讲解!

Harbor 2.1发布,工程师的发际线有救了!相关推荐

  1. 发际线有救了!这款app可一键AI生发,拯救你的自拍焦虑

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者 | 吴彤 编辑 | 青暮 比起卡粉,闷痘,油光,手残,新一代年 ...

  2. 程序员四大焦虑瞬间:拿什么拯救你,我日益后退的发际线?

    参加 2018 AI开发者大会,请点击 大会官网 一场突如其来的降温,再度把程序员的格子衬衫送上热搜,和"发际线 = 专业水平"等常见标签一样,这往往被视作一种"程序员式 ...

  3. 程序员学历要求越来越高,薪酬天花板犹如发际线,原因很简单!

    2019独角兽企业重金招聘Python工程师标准>>> 对于优秀的程序员来说,薪酬的天花板犹如发际线,没有最高只有更高.而对于只想「混日子」的程序员来说,高薪很可能是泡沫,风一吹就碎 ...

  4. 爬取 4400 条淘宝洗发水数据,拯救你的发际线!(附代码和数据集)

    本文通过淘宝"防脱发洗发水"爬取和分析,来提供爬取海量淘宝商品信息的思路,除了基础爬虫外,还应该思考拿到类似的商品数据之后如何清洗,以及作为一个分析者可以从什么维度去分析. 作者 ...

  5. 想怎么GAN就怎么GAN,一键拯救发际线

    郭一璞 劈图栗 乾明 发自 亚龙湾  量子位 报道 | 公众号 QbitAI GAN可GAN,非常GAN. 生成对抗网络(GAN)除了生成各种各样的人脸,现在还能对人脸进行各种各样的精确"整 ...

  6. 除了霸王洗发水,还能怎么拯救程序员的发际线?

    程序员的工作除了写代码就是优化代码,加班加出来的锃亮的秃顶,才是工作颁发的最佳码农勋章. 除了章光101和霸王生发剂,有没有更好的办法从根本上解决这个问题呢?答案是,有. 为了使开发更加轻松和高效,现 ...

  7. 一段语音生成说话视频,连发际线都可以分好几种,网友:利好视频博主

    杨净 发自 凹非寺 量子位 报道 | 公众号 QbitAI 只需一段语音,就能生成说话视频. 就像这样. 可以看到,表情.动作.神情全都在线,还有不同的穿搭. 就连发型.甚至发际线,都可以不同.(手动 ...

  8. 学会这个用这个做PPT,把24小时的工作变成1秒!高效神器保住你的发际线~

    回想2020年,最让你脱发的软件是什么? 是Python?Java?-还是你并不擅长的办公软件? 据Facebook调查研究显示:80%的职场人每天工作都会涉及到PPT. PPT演示文档肯定是IT/互 ...

  9. 发际线预警!10本程序员必读烧脑经典,你敢挑战一本吗?

    导读:高考结束了,第2批.第3批00后沿着前辈们趟出来的路,报考了计算机专业.还有人挑战了人工智能.大数据等新开设的专业.要问学计算机相关的专业是一种怎样的体验?第1批00后学长或许这样回答: 不过没 ...

  10. 发际线不符合有经验形象,程序员面试遭拒绝,网友:只招秃子?

    都说现在是个看脸的社会,颜值是一个人最大的财富.很多帅哥美女什么都会不会,仅仅因为长得好看,或者说整的好看,于是便受到无数人的追捧,靠着颜值轻轻松松的走上人生巅峰.因此,社会上的整容之风大行其道,各种 ...

最新文章

  1. rancher部署项目Validation failed in API: Deployment.apps“”must be no more than 63 characters问题原因及解决方法
  2. [C#项目开源] MongoDB 可视化管理工具 (2011年10月-至今)
  3. c语言的0变成奇怪的图形,Word打开后图片中的文字变成了奇怪的符号
  4. 基础数学:关于二次无理数
  5. 项目质量管理:质量与质量管理概念
  6. hello-world
  7. ReactJs 第三章 React元素的渲染
  8. iscroll.js 下拉刷新和上拉加载
  9. arm Linux 低成本方案,参赛作品《低成本基于ARM+Linux平台搭建web服务器的物联网学习板》...
  10. jQuery的加法运算,val()获取的结果相加变成了字符串连接。
  11. 洛谷——P1744 采购特价商品
  12. Wireshark实战分析之IP协议(三)
  13. java商城的面试题,Java商城系统面试题(一)
  14. Linux 学习之路(一)——Linux 发行版本的选择以及opensuse 13.1 安装
  15. 1179: 带参宏定义(函数专题)
  16. 持续维护中|最全数据分析资料汇总(趣味Python、商业数据分析、爬虫、高效工具等等)
  17. 戴尔 Inspiron灵越 14 7447(游匣7000)酷睿 i7 4代全新机回收价格
  18. linux计算字符串md5值,计算字符串md5的几个方法
  19. (5)CC3200学习之串口
  20. Rust的面向对象(五)——面向对象

热门文章

  1. jQuery常用语法总结
  2. for XML path 转义
  3. linux 开放端口
  4. wamp3.1.0下载地址
  5. API文档自动生成,Swagger的配置
  6. Linux内核分析学习心得
  7. 暑假集训单切赛第一场 CF 191A Dynasty Puzzles
  8. 正在打dota的过程中,接到淘宝网面试电话
  9. LC-410 分割数组的最大和
  10. TreeList(一)