본문으로 건너뛰기

풀 프로세스 가속화

이 섹션의 솔루션은 이미지 풀 프로세스를 개선하여 컨테이너 시작 시간을 줄입니다. 이미지의 계층화된 내부 구조에 의존하여 컨테이너 레지스트리에서 네트워크를 통해 레이어를 검색하는 방법을 변경하거나 레지스트리를 완전히 건너뛰어 이를 수행합니다.

컨테이너 이미지는 Amazon ECR과 같은 레지스트리에 저장된 콘텐츠 주소 지정 가능 blob으로 구현된 레이어로 구성됩니다. Pod가 워커 노드에 스케줄링되면 컨테이너 런타임(일반적으로 containerd)은 OverlayFS와 같은 유니온 파일 시스템을 사용하여 이러한 읽기 전용 레이어를 검색하고 마운트한 다음 컨테이너 파일 시스템을 완성하기 위해 상단에 쓰기 가능한 임시 레이어를 연결합니다.

containerd는 여러 플러그 가능한 구성 요소가 있는 모듈식 컨테이너 런타임으로 구현됩니다. 처음 두 솔루션의 초점인 snapshotter는 이미지 레이어의 조립을 담당하는 플러그 가능한 구성 요소입니다. 기본 OverlayFS snapshotter는 컨테이너 시작 전에 이미지 레이어를 디스크에 완전히 언팩하며 지연 또는 부분 레이어 추출을 지원하지 않습니다. 모든 레이어가 언팩되고 OverlayFS를 통해 마운트된 후에야 컨테이너의 통합 파일 시스템이 제공될 수 있습니다.

위에서 설명한 프로세스의 마지막 단계는 차단적이고 순차적이므로 컨테이너 시작 시간에 매우 큰 영향을 미칩니다.

각 레이어를 디스크에 완전히 추출하는 대신, SOCI(Seekable OCI) 또는 Nydus와 같은 고급 snapshotter는 가상의 마운트 가능한 스냅샷을 생성하여 접근할 때 레지스트리나 원격 스토리지에서 파일을 지연 로딩합니다. 이는 I/O 오버헤드가 낮고 컨테이너 시작 시간을 크게 개선합니다.

컨테이너 이미지 레이어 검색 및 저장을 최적화하여 풀 프로세스를 개선하는 대신, 마지막 솔루션은 CI/CD 프로세스 중에 Bottlerocket EC2 머신의 컨테이너 런타임 캐시인 데이터 볼륨에 모든 이미지 레이어를 미리 가져옵니다. 그런 다음 프로세스는 볼륨의 스냅샷을 가져와 EKS Bottlerocket 워커 노드에 마운트하여 컨테이너 런타임에 대한 워밍업된 캐시를 생성합니다.