容器离不开镜像,镜像需要存放的仓库,仓库需要管理,Harbor是一个企业级的镜像仓库管理平台。随着镜像越来越多会占用仓库的磁盘空间,而一些镜像可能是迭代了很多次的版本了,可以丢弃掉了,那么作为一个企业级别的镜像仓库管理平台Harbor是如何做的呢?
在Harbor中,镜像清理策略又叫镜像保留策略,它是基于镜像的标签(Tag)来区分和执行的。
本文主要讨论如何在Harbor上如何制定镜像保留的策略,至于原理(我不会啊[流泪])
保留策略总览
首先,策略是在每个项目(Projects)下,比如你的镜像仓库有个项目叫sre,我们点开sre,标签找到策略(Policy),如下图:
策略位置
然后,我们点 添加规则(ADD RULE),出现如下图:
添加策略
应用到仓库,我们可以选择匹配或者排除对应的仓库,默认** 是匹配所有的仓库,注意:Harbor的一个项目下可以有多个仓库,每个仓库下有多个tag的镜像。以 artifact 数量或天数为条件 ,有5个条件可以选择:保留最近推送的多少个;保留最近拉取的多少个;保留最近多少天被推送过的;保留最近多少天被拉取过的;以及保留全部。Tags 匹配,比如你的镜像tag是prod-1234,可以写成prod*其次,我们创建一个测试规则,保留最近推送的10个镜像,并且tag是dev-xxx的,我们可以写成如下:
规则1
同理,我们再创建一个测试规则,排除仓库ops1,保留最近拉取的10个镜像,并且tag是dev-xxx的,我们可以写成如下:
规则2
注意这两个策略是或的关系,满足两者任意一个就保留。已完成的保留策略,我们可以再次编辑,禁用或者删除。
规则可禁用,编辑,删除
再次,我们可以模拟运行下我们刚才制定的策略,查看下哪些镜像是被清理的。
模拟运行
模拟运行符合预期之后,我们可以手动点击立即运行清理掉多余的镜像,或者定时任务执行,每小时,每天,每周或者自定义(符合cronjob规则)
最后别忘记了清理服务中的垃圾清理,也就是镜像删除的GC,真正的释放空间。同理可以手动执行或者定时任务处理。
如果您在日常运维工作中遇到了任何问题或挑战,无论是关于系统配置、性能优化、故障排除还是其他方面,都欢迎您随时留言或私信我。我会尽我所能为您提供解决方案或建议。相互学习,积累更多的经验和知识,让工作更加顺畅高效!