Openshift私有仓库爆了,怎么办??!!

文章介绍了如何使用ocadmprune命令来清理Openshift集群中的镜像,以解决私有仓库磁盘使用率达到100%的问题。ocadmpruneimages命令可以删除不必要的镜像,但需要注意保持必要的镜像和Tag。此外,命令还可以用于清理Deployments和Builds。文章提供了命令选项的详细说明,并给出了定时清理的示例脚本,以确保系统资源的有效管理。

背景

像大家担心的那样,Openshift私有仓库磁盘爆了,使用率100%!!!
使用oc adm prune来作对openshift集群的清理,你敢吗?
会不会把需要的镜像也一并删了呢,要是如此,就只能像DBA一样走人了。
今天就来探讨下oc adm prune的用法。

先给出答案

如你所料,我们最终的清理镜像的办法是oc adm prune images

oc login -u admin -p admin
oc adm prune images --keep-younger-than=400m --confirm

注意以上oc adm prune images命令只能在普通用户下执行,无法在system:admin用户下执行,所以必须先登录普通用户,同时用户拥有system:image-pruner权限。

精减镜像命令oc adm prune images的用法

为了让镜像不占用过多的磁盘空间,需要对它全精减。很多时候,比如重复地构建镜像,会留下很多不必要的镜像层,而这些镜像层会占用非常多的空间。

oc adm prune images [<options>]

options说明

参数说明
--all默认:true,删除除了私有镜像仓库中的多余的镜像外,也删除ImageStream中连接外部镜像的ImageStream。如果只删除私有镜像仓库中的镜像则设置--all=false
--certificate-authority访问私有镜像仓库的证书,openshift中的路径在master节点中的/etc/origin/master/registry.crt。如果是在集群中的master节点执行命令,这个参数不需要添加
--confirm确认执行,如果不加只是进行检查演练
--force-insecure强制使用不安全的连接,不作证书检查
--keep-tag-revisions=<N>默认:3,为每个ImageStream中的每个Tag保留N个镜像
--keep-younger-than=<duration>默认:60m,不清理创建时间低于duration时间内的镜像,也不清理任何创建时间低于duration时间的对象引用的镜像
--prune-over-size-limit清理同一个项目下超过指定LimitRanges的镜像,该先项不能与--keep-tag-revisions和--keep-younger-than同时使用
--registry-url私有镜像链接,如果是在集群中的master节点执行命令,这个参数不需要添加

使用--keep-tag-revisions--keep-younger-than来清理镜像,以下情况对应的镜像不会被清理

  • 创建时间在--keep-younger-than指定的时间以内的所有Pod
  • 创建时间在--keep-younger-than指定的时间以内的所有ImageStream
  • 所有正在运行的Pod
  • 所有状态为pending状态的Pod
  • 所有的replication controllers
  • 所有的build configurations
  • 所有的builds
  • ImageStream的状态items下最近的--keep-tag-revisions镜像

使用--prune-over-size-limit清理超过指定Limit的镜像,以下情况下指向的镜像不会清理

  • 所有正在运行的Pod
  • 所有状态为pending状态的Pod
  • 所有的replication controllers
  • 所有的build configurations
  • 所有的builds

注意:以下情况并不会真正删除镜像

  1. 手动删除image,这只会删除etcd中的数据,不会删除私有仓库中的镜像
oc delete image <sha256:image-id>

oc adm prune用来清理deployments与builds

当然oc adm prune并不仅仅只是用于清理镜像,它还用来清理deployments与builds

oc adm prune deployments/builds [<options>]

options说明

参数说明
--confirm确认执行,如果不加只是进行检查演练
--orphans清理所有的deploymentconfig/buildconfig不存在的deployment/build
--keep-complete=<N>默认:5,保留最近N个成功的deployment/build
--keep-failed=<N>默认:1,保留最近N个出错的deployment/build
--keep-younger-than=<duration>默认:60m,不清理创建时间低于duration时间内的deployment/build

实例:清理deployments/builds

oc adm prune deployments --orphans --keep-complete=5 --keep-failed=1 --keep-younger-than=60m --confirm
oc adm prune builds --orphans --keep-complete=5 --keep-failed=1 --keep-younger-than=60m --confirm

定时清理,做到永无后患

$ cat cleanregistry.sh
#!/bin/bash
date
oc login -u admin -p password
oc adm prune builds --orphans --keep-complete=25 --keep-failed=5 --keep-younger-than=60m --confirm
oc adm prune deployments --orphans --keep-complete=25 --keep-failed=10 --keep-younger-than=60m --confirm
oc adm prune images --keep-younger-than=400m --confirm

$ crontab -l
0 0 * * * /usr/bin/cleanregistry.sh >> /var/log/cleanregistry.log 2>&1

【完美复现】面向配电网韧性提升的移动储能预布局与动态调度策略【IEEE33节点】(Matlab代码实现)内容概要:本文介绍了基于IEEE33节点的配电网韧性提升方法,重点研究了移动储能系统的预布局与动态调度策略。通过Matlab代码实现,提出了一种结合预配置和动态调度的两阶段优化模型,旨在应对电网故障或极端事件时快速恢复供电能力。文中采用了多种智能优化算法(如PSO、MPSO、TACPSO、SOA、GA等)进行对比分析,验证所提策略的有效性和优越性。研究不仅关注移动储能单元的初始部署位置,还深入探讨其在故障发生后的动态路径规划与电力支援过程,从而全面提升配电网的韧性水平。; 适合人群:具备电力系统基础知识和Matlab编程能力的研究生、科研人员及从事智能电网、能源系统优化等相关领域的工程技术人员。; 使用场景及目标:①用于科研复现,特别是IEEE顶刊或SCI一区论文中关于配电网韧性、应急电源调度的研究;②支撑电力系统在灾害或故障条件下的恢复力优化设计,提升实际电网应对突发事件的能力;③为移动储能系统在智能配电网中的应用提供理论依据和技术支持。; 阅读建议:建议读者结合提供的Matlab代码逐模块分析,重点关注目标函数建模、约束条件设置以及智能算法的实现细节。同时推荐参考文中提及的MPS预配置与动态调度上下两部分,系统掌握完整的技术路线,并可通过替换不同算法或测试系统进一步拓展研究。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值