이미지 스트리밍을 사용하여 컨테이너 시작 시간 줄이기

이 문서에서는 이미지 스트리밍을 사용하여 컨테이너 이미지를 Batch 컨테이너 작업으로 가져오는 방법을 설명합니다.

이미지 스트리밍을 사용 설정하면 컨테이너 이미지 다운로드가 완료될 때까지 기다리지 않고 Batch 작업을 초기화할 수 있으므로 다음과 같은 이점이 있습니다.

  • 대용량 이미지를 가져올 때 지연 시간 감소
  • 작업 실행 시작 시간 단축

시작하기 전에

  1. Batch를 사용한 적이 없으면 Batch 시작하기를 검토하고 프로젝트 및 사용자 기본 요건을 완료하여 Batch를 사용 설정하세요.
  2. 작업을 만드는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.

    역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

    커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

  3. 아직 Container File System API를 사용 설정하지 않았으면 다음 명령어를 실행하여 사용 설정합니다.

    gcloud services enable containerfilesystem.googleapis.com
    
  4. 컨테이너 이미지가 VPC 서비스 제어로 보호되는 경우 containerfilesystem.googleapis.com이 포함되도록 서비스 경계를 업데이트합니다.

제한사항

Batch 이미지 스트리밍에는 다음과 같은 제한사항이 있습니다.

  • Batch는 Artifact Registry에 저장된 컨테이너 이미지의 이미지 스트리밍만 지원합니다. 현재 Container Registry를 사용하여 컨테이너 이미지를 관리하는 경우 Artifact Registry로 전환할 수 있습니다.
  • Batch 작업 VM을 Artifact Registry에 컨테이너 이미지를 저장하는 위치와 같은 위치에서 실행해야 합니다.
  • Docker 이미지 매니페스트 버전 2, 스키마 1을 사용하는 컨테이너는 지원되지 않습니다.
  • 이미지 스트리밍을 사용하는 경우 컨테이너 실행 가능 항목은 다음 필드만 지원합니다.
    • imageUri
    • commands
    • entrypoint
    • volumes
    • enableImageStreaming
  • 비어 있거나 중복된 레이어가 있는 컨테이너 이미지는 지원되지 않습니다.

이미지 스트리밍을 사용하는 작업 만들기

다음을 수행하여 이미지 스트리밍을 사용하는 Batch 컨테이너 작업을 만듭니다.

Google Cloud CLI 또는 REST API를 사용하여 컨테이너 작업을 만듭니다. 컨테이너 실행 가능 항목에 이미지 스트리밍을 사용 설정하려면 enableImageStreaming 필드를 true로, imageUri 필드를 작업 VM 위치가 포함된 Artifact Registry 위치에 저장된 이미지로 설정합니다.

"container": {
    ...
    "enableImageStreaming": true
        }

예를 들어 이미지 스트리밍을 사용하는 작업에는 다음과 비슷한 JSON 구성 파일이 있습니다.

{
    "taskGroups": [
        {
            "taskCount": "1",
            "taskCountPerNode": "1",
            "taskSpec": {
                "runnables": [
                    {
                        "container": {
                            "imageUri": "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE:TAG",
                            "enableImageStreaming": true
                        }
                    }
                ]
            }
        }
    ],
    "allocationPolicy": {
        "instances": [
            {
                "policy": {
                    "machineType": "e2-standard-4"
                }
            }
        ]
    },
    "logsPolicy": {
        "destination": "CLOUD_LOGGING"
    }
}

다음 값을 바꿉니다.

  • LOCATION: 이미지가 저장된 저장소의 리전 또는 멀티 리전 위치입니다(예: us-east1 또는 us). 컨테이너 위치는 Batch 작업 VM의 위치와 같아야 합니다.
  • PROJECT-ID: 컨테이너 이미지가 포함된 프로젝트입니다. 프로젝트 ID에 콜론(:)이 포함되어 있으면 도메인 범위 프로젝트를 참조하세요.
  • REPOSITORY: 이미지가 저장된 저장소의 이름입니다.
  • IMAGE: 컨테이너 이미지의 이름입니다.
  • TAG: 이미지에 적용된 태그입니다.

다음 단계