2.6.3. 공유 NFS 볼륨을 사용하여 확장 레지스트리가 포함된 이미지 푸시 오류
공유 NFS 볼륨과 함께 확장된 레지스트리를 사용하는 경우 이미지를 푸시하는 동안 다음 오류 중 하나가 표시될 수 있습니다.
-
다이제스트 유효하지 않음: 제공된 다이제스트가 업로드된 콘텐츠와 일치하지 않습니다
-
Blob 업로드 알 수 없음
-
Blob 업로드가 잘못되었습니다
이러한 오류는 Docker에서 이미지를 푸시하려고 할 때 내부 레지스트리 서비스에서 반환됩니다. 이러한 원인은 노드에서 파일 속성의 동기화에서 발생합니다. NFS 클라이언트 측 캐싱, 네트워크 대기 시간 및 계층 크기와 같은 요인은 모두 기본 라운드 로빈 로드 밸런싱 구성을 사용하여 이미지를 푸시할 때 발생할 수 있는 잠재적인 오류에 기여할 수 있습니다.
다음 단계를 수행하여 이러한 실패 가능성을 최소화할 수 있습니다.
docker-registry 서비스의
sessionAffinity
가ClientIP
로 설정되어 있는지 확인합니다.$ oc get svc/docker-registry --template='{{.spec.sessionAffinity}}'
그러면 최근 OpenShift Container Platform 버전에서 기본값인
ClientIP
가 반환되어야 합니다. 그렇지 않은 경우 변경합니다.$ oc patch svc/docker-registry -p '{"spec":{"sessionAffinity": "ClientIP"}}'
-
NFS 서버에 있는 레지스트리 볼륨의 NFS 내보내기 줄에
no_wdelay
옵션이 나열되어 있는지 확인합니다.no_wdelay
옵션을 사용하면 서버가 쓰기를 지연시키지 못하므로 레지스트리 요구 사항인 쓰기 후 읽기 일관성이 크게 향상됩니다.
테스트 결과 RHEL NFS 서버를 컨테이너 이미지 레지스트리의 스토리지 백엔드로 사용하는 데 문제가 있는 것으로 표시됩니다. 여기에는 OpenShift Container Registry 및 Quay가 포함됩니다. 따라서 RHEL NFS 서버를 사용하여 핵심 서비스에서 사용하는 PV를 백업하는 것은 권장되지 않습니다.
마켓플레이스의 다른 NFS 구현에는 이러한 문제가 나타나지 않을 수 있습니다. 이러한 OpenShift 핵심 구성 요소에 대해 완료된 테스트에 대한 자세한 내용은 개별 NFS 구현 벤더에 문의하십시오.