Menu Close

12.6.4. 이미지 정리 문제

이미지가 정리되지 않음

이미지가 계속 누적되고 prune 명령을 실행해도 예상한 이미지의 일부만 제거되는 경우 이미지를 정리 후보로 간주하기 위해 적용해야 하는 이미지 정리 조건을 이해하고 있는지 확인하십시오.

제거할 이미지가 각 태그 내역에서 선택한 태그 리버전 임계값보다 위에 있어야 합니다. 예를 들어 sha:abz라는 오래되고 더 이상 사용되지 않는 이미지를 고려해 보십시오. 이미지에 태그가 지정된 네임스페이스 N에서 다음 명령을 실행하면 myapp이라는 단일 이미지 스트림에서 이미지에 태그가 세 번 지정됩니다.

$ oc get is -n N -o go-template='{{range $isi, $is := .items}}{{range $ti, $tag := $is.status.tags}}'\
  '{{range $ii, $item := $tag.items}}{{if eq $item.image "'"sha:abz"\
  $'"}}{{$is.metadata.name}}:{{$tag.tag}} at position {{$ii}} out of {{len $tag.items}}\n'\
  '{{end}}{{end}}{{end}}{{end}}'

출력 예

myapp:v2 at position 4 out of 5
myapp:v2.1 at position 2 out of 2
myapp:v2.1-may-2016 at position 0 out of 1

기본 옵션을 사용하면 myapp:v2.1-may-2016 태그 기록의 위치 0에서 이미지 정리가 수행되지 않으므로 이미지가 정리되지 않습니다. 정리할 이미지에 대해 관리자는 다음 중 하나를 수행해야 합니다.

  • oc adm prune images 명령을 사용하여 --keep-tag-revisions=0을 지정합니다.

    주의

    이 작업에서는 태그가 지정된 임계값 미만이거나 지정된 임계값 미만의 오브젝트에서 참조하는 경우를 제외하고 기본 이미지가 있는 모든 네임스페이스에서 태그를 모두 제거합니다.

  • 위치가 리버전 임계값 미만인 istags를 모두 삭제합니다. 즉 myapp:v2.1myapp:v2.1-may-2016을 삭제합니다.
  • 새 빌드를 동일한 istag로 내보내거나 다른 이미지에 태그를 지정하여 내역에서 이미지를 더 이동합니다. 이전 릴리스 태그에는 이 작업이 적절하지 않을 수 있습니다.

이미지를 정의되지 않은 시간 동안 보존해야 하는 경우를 제외하고 이름에 특정 이미지 빌드의 날짜 또는 시간이 포함된 태그는 사용하지 않도록 합니다. 이러한 태그는 내역에 하나의 이미지만 있어 정리되지 않습니다.

비보안 레지스트리에 대한 보안 연결 사용

oc adm prune images 명령 출력에 다음과 유사한 메시지가 표시되면 레지스트리가 안전하지 않은 것이며 oc adm prune images 클라이언트에서 보안 연결을 사용하려고 합니다.

error: error communicating with registry: Get https://172.30.30.30:5000/healthz: http: server gave HTTP response to HTTPS client
  • 해결책은 레지스트리를 보호하는 것이 좋습니다. 또는 명령에 --force-insecure를 추가하여 클라이언트에서 비보안 연결을 사용하도록 할 수 있지만 이 방법은 권장되지 않습니다.
보안 레지스트리에 대해 비보안 연결 사용

oc adm prune images 명령 출력에 다음 오류 중 하나가 표시되면 연결 확인을 위해 oc adm prune images 클라이언트에서 사용하는 인증 기관이 아닌 다른 인증 기관에서 서명한 인증서를 사용하여 레지스트리를 보호하고 있음을 나타냅니다.

error: error communicating with registry: Get http://172.30.30.30:5000/healthz: malformed HTTP response "\x15\x03\x01\x00\x02\x02"
error: error communicating with registry: [Get https://172.30.30.30:5000/healthz: x509: certificate signed by unknown authority, Get http://172.30.30.30:5000/healthz: malformed HTTP response "\x15\x03\x01\x00\x02\x02"]

기본적으로 사용자의 구성 파일에 저장된 인증 기관 데이터가 사용됩니다. Master API와의 통신도 마찬가지입니다.

--certificate-authority 옵션을 사용하여 컨테이너 이미지 레지스트리 서버에 대한 올바른 인증 기관을 제공합니다.

잘못된 인증 기관 사용

다음 오류는 보안 컨테이너 이미지 레지스트리의 인증서에 서명하는 데 사용하는 인증 기관이 클라이언트에서 사용하는 기관과 다르다는 것을 나타냅니다.

error: error communicating with registry: Get https://172.30.30.30:5000/: x509: certificate signed by unknown authority

--certificate-authority 플래그를 사용하여 올바른 정보를 제공하십시오.

해결 방법으로 --force-insecure 플래그를 대신 추가할 수도 있습니다. 하지만 이 방법은 권장되지 않습니다.