Harbor的镜像保留规则

运维有笔谈 2024-04-21 07:13:20

容器离不开镜像,镜像需要存放的仓库,仓库需要管理,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,真正的释放空间。同理可以手动执行或者定时任务处理。

如果您在日常运维工作中遇到了任何问题或挑战,无论是关于系统配置、性能优化、故障排除还是其他方面,都欢迎您随时留言或私信我。我会尽我所能为您提供解决方案或建议。相互学习,积累更多的经验和知识,让工作更加顺畅高效!

0 阅读:0

运维有笔谈

简介:感谢大家的关注