前言
rbd-hub是基于Docker Registry封装
默认rbd-hub清理策略是清理30天内未使用的镜像,这会使磁盘较小的用户堆积无用的镜像。
因此可临时使用脚本来清理无用的镜像。
注意:无论是delete方法调用restful接口,还是registry 自带工具的GC清理,都需要registry开启允许删除功能
!!!删除镜像后不能在组件的构建版本历史中回滚了
一. 开启hub删除功能
修改rbd-hub环境变量,开启删除功能
添加环境变量 REGISTRY_STORAGE_DELETE_ENABLED=true
kubectl edit rbdcomponent rbd-hub -n rbd-system
spec:
env:
- name: REGISTRY_STORAGE_DELETE_ENABLED
value: "true"
image: registry.cn-hangzhou.aliyuncs.com/goodrain/registry:2.6.2
修改完成后,pod会自动重启。
二. 使用脚本清理镜像
此脚本清理策略是保留镜像最新的两个tag
wget https://storageclass.oss-cn-shanghai.aliyuncs.com/clean_images.sh && sh clean_images.sh
三. 指定仓库清理镜像
sh clean_images.sh \
-b $hub \
-r $repos \
-u $user \
-p $pass \
-n $pod_name \
-s $namespace
参数说明 | | |
-b –hub | registry url | 可使用 service ip + port |
-r –repos | registry repos | 多个用空格区分,例如:nginx tomcat 。也可以传入存储目录路径 |
-u –username | registry 账号 | 参考文档获取 |
-p –password | registry 密码 | 参考文档获取 |
-n –pod_name | registry 的pod名称 |
-s –namespace | registry 所在的命名空间 |
指定仓库,例子:
sh clean_images.sh \
-b http://10.10.10.10:5000 \
-r nginx tomcat \
-u admin \
-p admin \
-n rbd-hub-85b7b94846-frppq \
-s rbd-system