14.5. 自动修剪镜像
因为年龄、状态或超过限制,已不再被系统需要的来自 OpenShift 镜像 registry 的镜像会被自动修剪。集群管理员可以配置 Pruning 自定义资源,或挂起它。
先决条件
- 您可以使用具有集群管理员权限的账户访问 OpenShift Container Platform 集群。
-
安装
oc
CLI。
流程
-
验证名为
imagepruners.imageregistry.operator.openshift.io/cluster
的项包括以下spec
和status
字段:
spec: schedule: 0 0 * * * 1 suspend: false 2 keepTagRevisions: 3 3 keepYoungerThanDuration: 60m 4 keepYoungerThan: 3600000000000 5 resources: {} 6 affinity: {} 7 nodeSelector: {} 8 tolerations: [] 9 successfulJobsHistoryLimit: 3 10 failedJobsHistoryLimit: 3 11 status: observedGeneration: 2 12 conditions: 13 - type: Available status: "True" lastTransitionTime: 2019-10-09T03:13:45 reason: Ready message: "Periodic image pruner has been created." - type: Scheduled status: "True" lastTransitionTime: 2019-10-09T03:13:45 reason: Scheduled message: "Image pruner job has been scheduled." - type: Failed staus: "False" lastTransitionTime: 2019-10-09T03:13:45 reason: Succeeded message: "Most recent image pruning job succeeded."
- 1
schedule
:CronJob
格式的调度。这是可选字段,默认为每日的午夜。- 2
suspend
: 如果设置为true
,CronJob
运行的修建操作会被挂起。这是可选字段,默认为false
。新集群上的初始值为false
。- 3
keepTagRevisions
:要保留的每个标签的修订版本数量。这是可选字段,默认为3
。初始值为3
。- 4
keepYoungerDuration
:保留比此时间段更早的镜像。这是可选字段。如果没有指定值,则使用keepYoungerThan
,或默认值60m
(60分钟)。- 5
keepYoungerThan
:已弃用。与keepYoungerThanDuration
相同,但持续时间被指定为纳秒的整数。这是可选字段。当设置keepYoungerThanDuration
时,会忽略此字段。- 6
资源
:标准 pod 资源请求和限值。这是可选字段。- 7
affinity
:标准 pod 关联性。这是可选字段。- 8
nodeSelector
:标准 pod 节点选择器。这是可选字段。- 9
tolerations
:标准 pod 容限。这是可选字段。- 10
successfulJobsHistoryLimit
:要保留的作业的最大值。必须是>= 1
才能确保报告指标。这是可选字段,默认为3
。初始值为3
。- 11
failedJobsHistoryLimit
:要保留的最大失败作业数。必须是>= 1
才能确保报告指标。这是可选字段,默认为3
。初始值为3
。- 12
observedGeneration
: Operator 观察到的生成。- 13
条件
:带有以下类型的标准条件对象:-
可用
:指示修剪任务是否已创建。原因可以是 Ready 或 Error。 -
调度
:指示是否调度了下一个修剪任务。原因可调度、挂起或出错。 -
失败
:指示最新修剪任务是否失败。
-
重要
Image Registry Operator 管理修剪器的行为与在 Image Registry Operator 的 ClusterOperator
对象上指定的 managementState
关联。如果 Image Registry Operator 没有处于 Managed
状态,则镜像修剪器仍然可以被 Pruning Custom Resource 配置和管理。
但是,Image Registry Operator 的 managementState
会更改部署的镜像修剪器任务的行为:
-
Managed
: 镜像修剪器的--prune-registry
标志被设置为true
。 -
Removed
: 镜像修剪器的--prune-registry
标志被设置为false
,这意味着它只在 etcd 中修剪镜像元数据。