19.6. 이미지 정리
관리자는 다음 명령을 실행하여 수명, 상태 또는 제한 초과로 인해 시스템에서 더 이상 필요하지 않은 이미지를 정리할 수 있습니다.
$ oc adm prune images [<options>]
현재는 이미지를 정리하려면 먼저 액세스 토큰이 있는 사용자로 CLI 에 로그인해야 합니다. 사용자에게 클러스터 역할 system:image-pruner 이상이 있어야 합니다(예: cluster-admin).
--prune-registry=false
를 사용하지 않는 한 이미지를 정리하면 통합 레지스트리에서 데이터가 제거됩니다. 이 작업이 제대로 작동하려면 레지스트리가 storage:delete:enabled
가 true 로 설정되어 있는지 확인합니다.
--namespace
플래그를 사용하여 이미지를 정리하면 이미지는 제거되지 않고 스트림만 제거됩니다. 이미지는 네임스페이스가 아닌 리소스입니다. 따라서 특정 네임스페이스로 정리를 제한하면 현재 사용량을 계산할 수 없습니다.
기본적으로 통합 레지스트리는 메타데이터를 Blob하여 스토리지에 대한 요청 수를 줄이고 요청 처리 속도를 높입니다. 정리를 수행해도 통합 레지스트리 캐시는 업데이트되지 않습니다. 캐시에 메타데이터가 있는 정리된 계층은 푸시되지 않으므로 정리된 계층이 포함된 이미지가 손상됩니다. 따라서 정리 후 캐시를 지워야 합니다. 이 작업은 레지스트리를 재배포하여 수행할 수 있습니다.
$ oc rollout latest dc/docker-registry
통합 레지스트리에서 redis 캐시를 사용하는 경우 데이터베이스를 수동으로 정리해야 합니다.
정리 후 레지스트리 재배포가 옵션이 아닌 경우 캐시를 영구적으로 비활성화해야 합니다.
옵션 | 설명 |
---|---|
|
레지스트리로 내보내지 않았지만 pullthrough에 의해 미러링된 이미지를 포함합니다. 기본적으로 활성화되어 있습니다. 통합 레지스트리로 내보낸 이미지로 정리를 제한하려면 |
| OpenShift Container Platform 관리 레지스트리와 통신할 때 사용할 인증 기관 파일의 경로입니다. 기본값은 현재 사용자 구성 파일의 인증 기관 데이터입니다. 제공된 경우 보안 연결이 시작됩니다. |
|
시험 실행하는 대신 정리를 수행해야 함을 나타냅니다. 이를 위해서는 통합 컨테이너 이미지 레지스트리에 대한 올바른 경로가 필요합니다. 이 명령이 클러스터 네트워크 외부에서 실행되는 경우 |
| 이 옵션에는 주의가 필요합니다. HTTP를 통해 호스팅되거나 잘못된 HTTPS 인증서가 있는 Docker 레지스트리에 비보안 연결을 허용합니다. 자세한 내용은 보안 또는 비보안 연결 사용을 참조하십시오. |
|
각 이미지 스트림에 대해 태그당 최대 N |
|
현재 시간을 기준으로 |
|
동일한 프로젝트에 정의된 최소 제한을 초과하는 각 이미지를 정리합니다. 이 플래그는 |
|
레지스트리에 연결할 때 사용하는 주소입니다. 명령은 관리되는 이미지 및 이미지 스트림에서 결정된 클러스터 내부 URL 사용을 시도합니다. 실패하는 경우(레지스트리를 해석하거나 연결할 수 없음) 이 플래그를 사용하여 작동하는 대체 경로를 제공해야 합니다. 레지스트리 호스트 이름 앞에는 특정 연결 프로토콜을 적용하는 |
| 이 옵션은 다른 옵션에서 지정하는 조건과 함께 OpenShift Container Platform Image API 오브젝트에 해당하는 레지스트리의 데이터를 정리할지 여부를 제어합니다. 기본적으로 이미지 정리는 Image API 오브젝트와 레지스트리의 해당 데이터를 모두 처리합니다. 이 옵션은 이미지 오브젝트의 수를 줄이기 위해 etcd 콘텐츠만 제거하거나 레지스트리 스토리지를 정리하지 않는 경우 유용합니다. 또는 레지스트리의 적절한 유지 관리 기간 동안 Hard Pruning the Registry 를 별도로 수행하려고 합니다. |
19.6.1. 이미지 정리 조건
--keep
주석이 있는 이미지)를 제거하고 현재 다음과 같이 참조하지 않습니다.-younger-than분 전 생성된 모든 이미지 "OpenShift Container Platform에서 관리" (openshift.io/image.managed
-
--keep-younger-than
분 이내에 생성한 모든 Pod -
--keep-younger-than
분 이내에 생성된 모든 이미지 스트림. - 실행 중인 모든 포드.
- 보류 중인 포드.
- 모든 복제 컨트롤러.
- 모든 배포 구성.
- 모든 빌드 구성.
- 모든 빌드.
-
stream.status.tags[].items
의--keep-tag-revisions
최신 항목입니다.
-
동일한 프로젝트에 정의된 최소 제한을 초과하고 현재 다음을 참조하지 않는 "OpenShift Container Platform에서 관리" 이미지 (openshift
.io/image.managed
주석이 있는 이미지)를 제거합니다.- 실행 중인 모든 포드.
- 보류 중인 포드.
- 모든 복제 컨트롤러.
- 모든 배포 구성.
- 모든 빌드 구성.
- 모든 빌드.
- 외부 레지스트리에서 정리를 지원하지 않습니다.
-
이미지를 정리하면
status.tags
의 이미지에 대한 참조가 있는 모든 이미지 스트림에서 이미지에 대한 참조가 모두 제거됩니다. - 이미지에서 더 이상 참조하지 않는 이미지 계층도 제거됩니다.
--prune-over-size-limit
는 --keep-tag-revisions 또는
플래그와 결합할 수 없습니다. 이렇게 하면 이 작업을 허용하지 않는 정보가 반환됩니다.
--keep-
younger-than
--prune-registry=false
를 사용하여 OpenShift Container Platform Image API 오브젝트 및 이미지 데이터를 레지스트리에서 제거한 다음 레지스트리를 하드 정리하면 일부 타이밍 창이 좁히며 하나의 명령을 통해 정리하는 데 비해 더 안전합니다. 그러나 시차가 완전히 제거되지는 않습니다.
예를 들어 정리에서 정리할 이미지를 식별하므로 이미지를 참조하는 Pod를 계속 생성할 수 있습니다. 제거 작업 중에 이미지를 참조할 수 있는 API 오브젝트를 계속 추적해야 하므로 삭제된 콘텐츠에 대한 참조를 완화할 수 있습니다.
또한 --prune- registry 옵션 없이 또는 --prune-registry
=true를 사용하여 정리를 다시 수행해도 이전에
로 정리한 이미지의 이미지 레지스트리에서 연결된 스토리지를 정리하지 않습니다. --prune-registry=
false--prune-registry=false
를 사용하여 정리한 이미지는 레지스트리 정리를 통해 레지스트리 스토리지에서만 삭제할 수 있습니다.
정리 작업에서 삭제하는 항목을 확인하려면 다음을 수행합니다.
태그 리버전을 3개까지 유지하고 60분 내에 리소스(이미지, 이미지 스트림 및 Pod)를 유지합니다.
$ oc adm prune images --keep-tag-revisions=3 --keep-younger-than=60m
정의된 제한을 초과하는 모든 이미지를 정리합니다.
$ oc adm prune images --prune-over-size-limit
이전에 언급한 옵션에 대해 실제로 정리 작업을 수행하려면 다음 명령을 실행합니다.
$ oc adm prune images --keep-tag-revisions=3 --keep-younger-than=60m --confirm $ oc adm prune images --prune-over-size-limit --confirm