暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【干货分享】Harbor镜像仓库部署实践(四)

稻壳编程 2019-11-22
1148



作者简介

211工程院校贵州大学管理学院硕士研究生、互联网金融行业资深DevOps研发工程师. 曾在国内多家知名互联网公司 平安科技、微众银行、顺丰科技、魅族任职. 具有多年国内一线互联网公司自动化运维平台设计与开发经验。



Harbor高可用集群解决方案--实践篇

双主复制与镜像清理

写在前面:

所谓的双主复制其实就是利用主从复制的方式实现两个Harbor节点之间的双向同步来保证数据的一致性。在两台harbor前端加入负载均衡(LVS、HAProxy、F5等)将进来的请求分流到不同的实例中去,只要有一个实例中有了新的镜像,就会自动的同步复制到另外的的实例中去,这样既实现了负载均衡又避免了单点故障,可以在一定程度上实现Harbor仓库的高可用性。但是根据笔者本人实际工作中踩过的坑,不太推荐使用这种方式实现高可用,原因如下:

  • 多台Harbor实例的账号体系是相互独立的, HarborA的账号与权限在其他的Harbor实例上也需要创建并授权

  • 配置相对繁琐人工介入成本增加,需在WEB管理台中额外配置项目同步策略

  • 如果镜像既大且多, Harbor实例之间进行镜像同步将会占用大量磁盘IO与网络IO,实时性差


镜像清理:

此处会分别介绍在Harbor新老版本中进行镜像清理的方式,老版本采用v1.5、新版采用v1.8。新版本中解决了在老版本Harbor中镜像清理的繁琐的过程,可以在图形化界面中配置垃圾回收,实现镜像清理。

 1 

双主复制

双主复制配置过程可以通过Harbor WEB管理控制台以图形化的形式完成,详细请看以下步骤

步骤1. 新建镜像同步目标


步骤2. 配置目标Harbor实例参数



步骤3.  目标添加成功


步骤4. 配置同步策略


步骤5. 编辑策略详情


步骤6. 添加策略成功执行初始化同步任务


步骤7. 查看同步状态

综上,新Harbor节点上接收到了主节点发送过来的容器镜像,同步配置成功。


 2 

镜像清理

2.1 Harbor(v1.5)镜像删除

Harbor仓库中的镜像如果不再使用可以通过WEB管理台进行清理,但通过这种方式清理镜像仅仅只是实现了在WEB页面上不再显示,实际上并没有删除磁盘上的文件并释放磁盘空间。由于磁盘空间并没有被释放,这就导致了随着时间的累积,Harbor服务器所占用的磁盘空间就会越来越大,这显然是不合理的。

那么如何才能深度删除镜像并释放磁盘空间呢?  下面我们一起来一探究竟。


2.1.1 自定义配置文件如下

version: 0.1

log:

  fields:

    service: registry

storage:

  cache:

    blobdescriptor: inmemory

  filesystem:

    rootdirectory: storage


2.1.2 拷贝配置文件至registry容器

[root@harbor-a tmp]# docker cp tmp/clean_regsitry.yml  fbe86b16c669:/


2.1.3 在registry容器中关联配置文件执行镜像清理指令

[root@harbor-a tmp]# docker exec fbe86b16c669 registry  garbage-collect --dry-run clean_regsitry.yml

注意:

--dry-run参数用来进行清理检测,将会删除的镜像及各镜像之间的依赖关系,并不是真正的执行删除操作,所以在真正执行删除任务之前,建议先使用该参数,验证一下删除操作究竟会删除哪些数据。


输出如下:

webapps/harbor-ui

webapps/harbor-ui: marking manifest sha256:a20152e75eda6bf425f44d1560db683ff5b141af7653bee25aacac23153a0bf3 

webapps/harbor-ui: marking blob sha256:a942b187d9a4c360075db0cb1a5d299fe1e88aa51010c85a50f042488e3c8199

webapps/harbor-ui: marking blob sha256:67b38845fad17e2bc52920dabbc7324b676262cc7671ffa3ac2b8a44625bb734

webapps/harbor-ui: marking blob sha256:6fde824ffce37d8597395138461d648ed734f8126ba6e6fbd74067d48c1bfed9

webapps/harbor-ui: marking blob sha256:ec536270c9157b8b2ae6299fc63de06316a9406ccfb3f8ef3ceab29cb1f8e314

webapps/harbor-ui: marking blob sha256:35c180d9141a5f565f5ba8700c13259a359af77a938b1f055b67308222ffb5b1

webapps/harbor-ui: marking blob sha256:9689a4ba6d4c1d76de069ee3a66828be04a16222f909892a8c24b6eccbe911ea

webapps/harbor-ui: marking blob sha256:6e3021be2c44415cbb44fd39cb055f5c5f97d5aab8d50679ea88567fec80832e

webapps/ngins


8 blobs marked, 3 blobs eligible for deletion

blob eligible for deletion: sha256:745d4571052dd39d20825635cc2fc0668d313d8147bbe4366d41d3584b4a687e

blob eligible for deletion: sha256:cd19d787004dd245ad49dab9f17b2a394135f5dfd0604b1b5b3a4c543511f79f

blob eligible for deletion: sha256:de393f48e89e3c018415deb7fb35981773772d7f37f96b651264d937d15c23fa


2.1.4 删除前查看Harbor镜像目录所占空间

[root@harbor-a tmp]# du -sh mnt/harbor_disk/

117M    mnt/harbor_disk/


2.1.5 正式清理镜像

[root@harbor-a tmp]#  docker exec fbe86b16c669 registry  garbage-collect  clean_regsitry.yml 


2.1.6 再次查看磁盘空间

[root@harbor-a tmp]# du -sh mnt/harbor_disk/

95M     /mnt/harbor_disk/

综上Harbor镜像所占用的磁盘空间从115M降低至95M,镜像深度清理成功!


2.2. Harbor(v1.8)镜像删除

在新版Harbor中,镜像清理工作不再像老版本中那样繁琐,在WEB控制台可通过图形化界面即可进行配置。清理周期根据实际情况选择小时、天等维度。


步骤1. 配置清理策略


步骤2. 查看清理历史



 3 

结束语

如果本文可以对您的工作学习带来帮助,请扫描左侧赞赏码以资鼓励作者;文章勘误请扫描右侧二维码联系作者。


文章转载自稻壳编程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论