보조 부팅 디스크를 사용하여 데이터 또는 컨테이너 이미지 미리 로드


이 페이지에서는 Google Kubernetes Engine(GKE)의 보조 부팅 디스크를 사용하여 새 노드에서 데이터 또는 컨테이너 이미지를 미리 로드하여 워크로드 시작 지연 시간을 개선하는 방법을 보여줍니다. 이를 통해 워크로드가 빠른 콜드 스타트를 수행하고 프로비저닝된 리소스의 전체 사용률을 개선할 수 있습니다.

이 페이지에서는 Google Cloud, Kubernetes, 컨테이너, YAML, containerd 런타임, Google Cloud CLI에 대한 지식이 있다고 가정합니다.

개요

표준 클러스터의 GKE 버전 1.28.3-gke.1067000과 Autopilot 클러스터의 GKE 버전 1.30.1-gke.1329000부터 보조 부팅 디스크로 노드 풀을 구성할 수 있습니다. 노드를 프로비저닝하고 머신러닝 모델 또는 컨테이너 이미지와 같은 데이터를 미리 로드하도록 GKE에 지시할 수도 있습니다. 보조 디스크에 미리 로드된 컨테이너 이미지 또는 데이터를 사용하면 워크로드에 다음과 같은 이점이 있습니다.

  • 대용량 컨테이너 이미지를 가져오거나 데이터를 다운로드할 때 지연 시간 감소
  • 빠른 자동 확장
  • 유지보수 이벤트 및 시스템 오류와 같은 중단에서 더 빠르게 복구

다음 섹션에서는 GKE Autopilot 및 Standard 클러스터에서 보조 부팅 디스크를 구성하는 방법을 설명합니다.

보조 부팅 디스크 작동 방식

보조 부팅 디스크의 미리 로드된 컨테이너 이미지 또는 데이터를 사용하여 워크로드를 더 빠르게 시작할 수 있습니다. 보조 부팅 디스크의 특징은 다음과 같습니다.

  • 보조 부팅 디스크는 분산 블록 스토리지에서 지원되는 Persistent Disk입니다. 디스크 이미지가 영역에서 이미 사용 중인 경우 동일한 디스크 이미지의 모든 후속 디스크 생성 시간이 더 단축됩니다.
  • 보조 부팅 디스크 유형은 노드 부팅 디스크와 동일합니다.
  • 보조 부팅 디스크의 크기는 디스크 이미지 크기에 따라 결정됩니다.

노드 풀에 보조 부팅 디스크를 추가해도 노드 프로비저닝 시간은 늘어나지 않습니다. GKE는 노드 프로비저닝 프로세스와 동시에 디스크 이미지에서 보조 부팅 디스크를 프로비저닝합니다.

미리 로드된 컨테이너 이미지를 지원하기 위해 GKE는 보조 부팅 디스크에서 컨테이너 이미지를 읽는 플러그인으로 containerd 런타임을 확장합니다. 컨테이너 이미지는 기본 레이어에서 재사용됩니다. 작은 상위 레이어를 Container Registry에서 가져올 수 있는 동안 큰 기본 레이어를 보조 부팅 디스크에 미리 로드하는 것이 좋습니다.

시작하기 전에

시작하기 전에 다음 태스크를 수행했는지 확인합니다.

  • Google Kubernetes Engine API를 사용 설정합니다.
  • Google Kubernetes Engine API 사용 설정
  • 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화합니다. 이전에 gcloud CLI를 설치한 경우 gcloud components update를 실행하여 최신 버전을 가져옵니다.

요구사항

보조 부팅 디스크를 사용할 때는 다음 요구사항이 적용됩니다.

  1. 클러스터가 GKE Standard에서 GKE 버전 1.28.3-gke.1067000을 실행하거나 GKE Autopilot에서 버전 1.30.1-gke.1329000을 실행합니다.
  2. 디스크 이미지를 수정할 때 새 노드 풀을 만듭니다. 기존 노드의 디스크 이미지 업데이트는 지원되지 않습니다.
  3. 보조 부팅 디스크 기능을 사용하도록 이미지 스트리밍을 구성합니다.
  4. containerd 노드 이미지와 함께 Container-Optimized OS를 사용합니다. Autopilot 노드는 기본적으로 이 노드 이미지를 사용합니다.
  5. 빌드 중에 준비된 데이터 또는 미리 로드된 컨테이너 이미지로 디스크 이미지를 준비합니다. 클러스터에서 노드에 로드할 디스크 이미지에 대한 액세스 권한이 있는지 확인하세요. CI/CD 파이프라인에서 디스크 이미지를 자동화하는 것이 좋습니다.

보조 부팅 디스크 준비

보조 부팅 디스크를 준비하려면 컨테이너 이미지를 미리 로드하기 위해 이미지 탭을 선택하거나 데이터를 미리 로드하기 위해 데이터 탭을 선택한 후 다음 안내를 완료합니다.

이미지

GKE는 가상 머신(VM)을 만들고 디스크에서 컨테이너 이미지를 가져온 후 디스크에서 디스크 이미지를 만들 수 있도록 gke-disk-image-builder라는 도구를 제공합니다.

미리 로드된 여러 컨테이너 이미지가 있는 디스크 이미지를 만들려면 다음 단계를 완료합니다.

  1. Cloud Storage 버킷을 만들어 gke-disk-image-builder의 실행 로그를 저장합니다.
  2. gke-disk-image-builder로 디스크 이미지를 만듭니다.
go run ./cli \
    --project-name=PROJECT_ID \
    --image-name=DISK_IMAGE_NAME \
    --zone=LOCATION \
    --gcs-path=gs://LOG_BUCKET_NAME \
    --disk-size-gb=10 \
    --container-image=docker.io/library/python:latest \
    --container-image=docker.io/library/nginx:latest

다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 이름입니다.
  • DISK_IMAGE_NAME: 디스크의 이미지 이름입니다. 예를 들면 nginx-python-image입니다.
  • LOCATION: 클러스터 위치입니다.
  • LOG_BUCKET_NAME: 실행 로그를 저장할 Cloud Storage 버킷의 이름입니다. 예를 들면 gke-secondary-disk-image-logs/입니다.

gke-disk-image-builder로 디스크 이미지를 만들면 Google Cloud에서 프로세스를 완료하기 위해 여러 리소스를 만듭니다(예: VM 인스턴스, 임시 디스크, 영구 디스크). 실행 후 이미지 빌더는 생성된 디스크 이미지를 제외한 모든 리소스를 삭제합니다.

데이터

다음 단계를 완료하여 데이터 소스로 커스텀 디스크 이미지를 만듭니다.

  1. 빈 디스크가 있는 VM 만들기
  2. SSH를 사용하여 VM에 연결하기
    1. 빈 디스크를 마운트하기
    2. 빈 디스크에 데이터 다운로드
  3. 디스크에서 커스텀 이미지 만들기

보조 부팅 디스크 구성

GKE Autopilot 또는 Standard 클러스터에서 보조 부팅 디스크를 구성할 수 있습니다. 완전 관리형 Kubernetes 환경을 위해서는 Autopilot을 사용하는 것이 좋습니다. 워크로드에 가장 적합한 GKE 작업 모드를 선택하려면 GKE 작업 모드 선택을 참조하세요.

GKE Autopilot 사용

이 섹션에서는 기존 GKE Autopilot 클러스터에서 디스크 이미지를 허용하도록 디스크 이미지 허용 목록을 만듭니다. 그런 다음 보조 부팅 디스크를 사용하도록 포드 노드 선택기를 수정합니다.

프로젝트의 디스크 이미지 허용

이 섹션에서는 GKE가 Google Cloud 프로젝트의 디스크 이미지에서 보조 부팅 디스크로 노드를 만들 수 있도록 GCPResourceAllowlist를 만듭니다.

  1. 다음 매니페스트를 allowlist-disk.yaml로 저장합니다.

    apiVersion: "node.gke.io/v1"
    kind: GCPResourceAllowlist
    metadata:
      name: gke-secondary-boot-disk-allowlist
    spec:
      allowedResourcePatterns:
      - "projects/PROJECT_ID/global/images/.*"
    

    PROJECT_ID를 디스크 이미지를 호스팅할 프로젝트 ID로 바꿉니다.

  2. 매니페스트를 적용합니다.

    kubectl apply -f allowlist-disk.yaml
    

    GKE는 프로젝트의 모든 디스크 이미지에서 보조 부팅 디스크를 사용하여 노드를 만듭니다.

보조 부팅 디스크를 사용하도록 포드 노드 선택기 업데이트

이 섹션에서는 GKE가 보조 부팅 디스크를 사용하여 노드를 만들도록 포드 사양을 수정합니다.

  1. 포드 템플릿에 nodeSelector를 추가합니다.

    nodeSelector:
        cloud.google.com.node-restriction.kubernetes.io/gke-secondary-boot-disk-DISK_IMAGE_NAME=CONTAINER_IMAGE_CACHE.PROJECT_ID
    

    다음을 바꿉니다.

    • DISK_IMAGE_NAME: 디스크 이미지의 이름
    • PROJECT_ID: 디스크 이미지를 호스팅할 프로젝트 ID
  2. kubectl apply 명령어를 사용하여 포드 템플릿에 Kubernetes 사양을 적용합니다.

  3. 보조 부팅 디스크 캐시가 사용 중인지 확인합니다.

    kubectl get events --all-namespaces
    

    출력은 다음과 비슷합니다.

    75s         Normal      SecondaryDiskCachin
    node/gke-pd-cache-demo-default-pool-75e78709-zjfm   Image
    gcr.io/k8s-staging-jobsejt/pytorch-mnist:latest is backed by secondary disk cache
    
  4. 이미지 가져오기 지연 시간을 확인합니다.

    kubectl describe pod POD_NAME
    

    POD_NAME을 포드의 이름으로 바꿉니다.

    출력은 다음과 비슷합니다.

    …
      Normal  Pulled     15m   kubelet            Successfully pulled image "docker.io/library/nginx:latest" in 0.879149587s
    …
    

이미지 크기에 관계없이 캐시된 컨테이너 이미지에 대한 예상 이미지 가져오기 지연 시간이 크게 줄여야 합니다.

GKE Standard 사용

GKE Standard 클러스터 및 노드 풀을 만들려면 컨테이너 이미지를 미리 로드할지 또는 보조 부팅 디스크에 데이터를 미리 로드할지 여부에 따라 이미지 또는 데이터 탭을 선택하여 다음 안내를 완료합니다.

이미지

Google Cloud CLI 또는 Terraform을 사용하여 보조 부팅 디스크를 구성할 수 있습니다.

gcloud

  1. 이미지 스트리밍이 사용 설정된 GKE Standard 클러스터를 만듭니다.

    gcloud container clusters create CLUSTER_NAME \
        --location=LOCATION \
        --cluster-version=VERSION \
        --enable-image-streaming
    

    다음을 바꿉니다.

    • CLUSTER_NAME: 클러스터 이름입니다.
    • LOCATION: 클러스터 위치입니다.
    • VERSION: 사용할 GKE 버전입니다. GKE 버전은 1.28.3-gke.106700 이후 버전이어야 합니다.
  2. 동일한 프로젝트에서 보조 부팅 디스크가 있는 노드 풀을 만듭니다.

    gcloud container node-pools create NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location LOCATION \
    --enable-image-streaming \
    --secondary-boot-disk=disk-image=global/images/DISK_IMAGE_NAME,mode=CONTAINER_IMAGE_CACHE
    

    다음을 바꿉니다.

    • NODE_POOL_NAME: 노드 풀의 이름입니다.
    • CLUSTER_NAME: 기존 클러스터의 이름입니다.
    • LOCATION: 클러스터의 쉼표로 구분된 컴퓨팅 영역입니다.
    • DISK_IMAGE_NAME: 디스크 이미지의 이름

    다른 프로젝트의 디스크 이미지로 보조 부팅 디스크를 사용하여 노드 풀을 만들려면 다른 프로젝트의 보조 부팅 디스크 사용의 단계를 완료합니다.

  3. 포드 템플릿에 nodeSelector를 추가합니다.

    nodeSelector:
        cloud.google.com/gke-nodepool: NODE_POOL_NAME
    
  4. 보조 부팅 디스크 캐시가 사용 중인지 확인합니다.

    kubectl get events --all-namespaces
    

    출력은 다음과 비슷합니다.

    75s       Normal      SecondaryDiskCachin
    node/gke-pd-cache-demo-default-pool-75e78709-zjfm Image
    gcr.io/k8s-staging-jobsejt/pytorch-mnist:latest is backed by secondary disk cache
    
  5. 다음 명령어를 실행하여 이미지 가져오기 지연 시간을 확인합니다.

    kubectl describe pod POD_NAME
    

    POD_NAME을 포드의 이름으로 바꿉니다.

    출력은 다음과 비슷합니다.

    …
      Normal  Pulled     15m   kubelet            Successfully pulled image "docker.io/library/nginx:latest" in 0.879149587s
    …
    

캐시된 컨테이너 이미지의 예상 이미지 가져오기 지연 시간은 이미지 크기에 관계없이 몇 초 이하여야 합니다.

Terraform

  1. Terraform을 사용하여 기본 노드 풀로 클러스터를 만들려면 다음 예시를 참조합니다.

    resource "google_container_cluster" "default" {
      name               = "default"
      location           = "us-central1-a"
      initial_node_count = 1
      # Set `min_master_version` because secondary_boot_disks require GKE 1.28.3-gke.106700 or later.
      min_master_version = "1.28"
      # Setting `deletion_protection` to `true` would prevent
      # accidental deletion of this instance using Terraform.
      deletion_protection = false
    }
  2. 동일한 프로젝트에서 보조 부팅 디스크가 있는 노드 풀을 만듭니다.

    resource "google_container_node_pool" "secondary-boot-disk-container" {
      name               = "secondary-boot-disk-container"
      location           = "us-central1-a"
      cluster            = google_container_cluster.default.name
      initial_node_count = 1
    
      node_config {
        machine_type = "e2-medium"
        image_type   = "COS_CONTAINERD"
        gcfs_config {
          enabled = true
        }
        secondary_boot_disks {
          disk_image = ""
          mode       = "CONTAINER_IMAGE_CACHE"
        }
      }
    }

    Terraform 사용에 대한 자세한 내용은 GKE에 대한 Terraform 지원을 참조하세요.

  3. 포드 템플릿에 nodeSelector를 추가합니다.

    nodeSelector:
        cloud.google.com/gke-nodepool: NODE_POOL_NAME
    
  4. 보조 부팅 디스크 캐시가 사용 중인지 확인합니다.

    kubectl get events --all-namespaces
    

    출력은 다음과 비슷합니다.

    75s       Normal      SecondaryDiskCachin
    node/gke-pd-cache-demo-default-pool-75e78709-zjfm Image
    gcr.io/k8s-staging-jobsejt/pytorch-mnist:latest is backed by secondary disk cache
    
  5. 다음 명령어를 실행하여 이미지 가져오기 지연 시간을 확인합니다.

    kubectl describe pod POD_NAME
    

    POD_NAME을 포드의 이름으로 바꿉니다.

    출력은 다음과 비슷합니다.

    …
      Normal  Pulled     15m   kubelet            Successfully pulled image "docker.io/library/nginx:latest" in 0.879149587s
    …
    

캐시된 컨테이너 이미지의 예상 이미지 가져오기 지연 시간은 이미지 크기에 관계없이 몇 초 이하여야 합니다.

Terraform 사용에 대한 자세한 내용은 GKE에 대한 Terraform 지원을 참조하세요.

데이터

Google Cloud CLI 또는 Terraform을 사용하여 보조 부팅 디스크를 구성하고 데이터를 미리 로드할 수 있습니다.

gcloud

  1. 이미지 스트리밍이 사용 설정된 GKE Standard 클러스터를 만듭니다.

    gcloud container clusters create CLUSTER_NAME \
        --location=LOCATION \
        --cluster-version=VERSION \
        --enable-image-streaming
    

    다음을 바꿉니다.

    • CLUSTER_NAME: 클러스터 이름입니다.
    • LOCATION: 클러스터 위치입니다.
    • VERSION: 사용할 GKE 버전입니다. GKE 버전은 1.28.3-gke.106700 이후 버전이어야 합니다.
  2. --secondary-boot-disk 플래그를 사용하여 보조 부팅 디스크가 있는 노드 풀을 만듭니다.

    gcloud container node-pools create NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location LOCATION \
    --enable-image-streaming \
    --secondary-boot-disk=disk-image=global/images/DISK_IMAGE_NAME
    

    다음을 바꿉니다.

    • NODE_POOL_NAME: 노드 풀의 이름입니다.
    • CLUSTER_NAME: 기존 클러스터의 이름입니다.
    • LOCATION: 클러스터의 쉼표로 구분된 컴퓨팅 영역입니다.
    • DISK_IMAGE_NAME: 디스크 이미지의 이름

    다른 프로젝트의 디스크 이미지로 보조 부팅 디스크를 사용하여 노드 풀을 만들려면 다른 프로젝트의 보조 부팅 디스크 사용의 단계를 완료합니다.

    GKE는 각 노드에 미리 로드된 데이터가 포함된 보조 디스크가 있는 노드 풀을 만듭니다. GKE가 노드에 보조 부팅 디스크를 연결하고 마운트합니다.

  3. 필요한 경우 hostPath 볼륨 마운트를 사용하여 포드 컨테이너에 보조 디스크 이미지를 마운트할 수 있습니다. 다음 매니페스트를 사용하여 포드 리소스를 정의하고 hostPath 볼륨 마운트를 사용하여 컨테이너에 데이터 디스크를 미리 로드하세요.

    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-name
    spec:
      containers:
      ...
      volumeMounts:
      - mountPath: /usr/local/data_path_sbd
        name: data_path_sbd
    ...
    volumes:
      - name: data_path_sbd
        hostPath:
            path: /mnt/disks/gke-secondary-disks/gke-DISK_IMAGE_NAME-disk
    

    DISK_IMAGE_NAME을 디스크 이미지 이름으로 바꿉니다.

Terraform

  1. Terraform을 사용하여 기본 노드 풀로 클러스터를 만들려면 다음 예시를 참조합니다.

    resource "google_container_cluster" "default" {
      name               = "default"
      location           = "us-central1-a"
      initial_node_count = 1
      # Set `min_master_version` because secondary_boot_disks require GKE 1.28.3-gke.106700 or later.
      min_master_version = "1.28"
      # Setting `deletion_protection` to `true` would prevent
      # accidental deletion of this instance using Terraform.
      deletion_protection = false
    }
  2. 동일한 프로젝트에서 보조 부팅 디스크가 있는 노드 풀을 만듭니다.

    resource "google_container_node_pool" "secondary-boot-disk-data" {
      name               = "secondary-boot-disk-data"
      location           = "us-central1-a"
      cluster            = google_container_cluster.default.name
      initial_node_count = 1
    
      node_config {
        machine_type = "e2-medium"
        image_type   = "COS_CONTAINERD"
        gcfs_config {
          enabled = true
        }
        secondary_boot_disks {
          disk_image = ""
        }
      }
    }

    Terraform 사용에 대한 자세한 내용은 GKE에 대한 Terraform 지원을 참조하세요.

  3. 필요한 경우 hostPath 볼륨 마운트를 사용하여 포드 컨테이너에 보조 디스크 이미지를 마운트할 수 있습니다. 다음 매니페스트를 사용하여 포드 리소스를 정의하고 hostPath 볼륨 마운트를 사용하여 컨테이너에 데이터 디스크를 미리 로드하세요.

    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-name
    spec:
      containers:
      ...
      volumeMounts:
      - mountPath: /usr/local/data_path_sbd
        name: data_path_sbd
    ...
    volumes:
      - name: data_path_sbd
        hostPath:
            path: /mnt/disks/gke-secondary-disks/gke-DISK_IMAGE_NAME-disk
    

    DISK_IMAGE_NAME을 디스크 이미지 이름으로 바꿉니다.

보조 부팅 디스크를 사용한 클러스터 자동 확장

Google Cloud CLI를 사용하여 노드 풀을 만들고 보조 부팅 디스크에서 클러스터 자동 확장을 구성할 수 있습니다.

  gcloud container node-pools create NODE_POOL_NAME \
      --cluster=CLUSTER_NAME \
      --location LOCATION \
      --enable-image-streaming \
      --secondary-boot-disk=disk-image=global/images/DISK_IMAGE_NAME,mode=CONTAINER_IMAGE_CACHE \
      --enable-autoscaling \
      --num-nodes NUM_NODES \
      --min-nodes MIN_NODES \
      --max-nodes MAX_NODES

다음을 바꿉니다.

  • NODE_POOL_NAME: 노드 풀의 이름입니다.
  • CLUSTER_NAME: 기존 클러스터의 이름입니다.
  • LOCATION: 클러스터의 쉼표로 구분된 컴퓨팅 영역입니다.
  • DISK_IMAGE_NAME: 디스크 이미지의 이름
  • MIN_NODES: 영역당 지정된 노드 풀에서 자동으로 확장되는 최소 노드 수입니다. GKE 버전 1.24 이상에서 전체 노드 풀의 최소 노드 수를 지정하려면 --total-min-nodes를 사용합니다. --total-min-nodes--total-max-nodes 플래그를 --min-nodes--max-nodes 플래그와 함께 사용할 수 없습니다.
  • MAX_NODES: 영역당 지정된 노드 풀에서 자동으로 확장되는 최대 노드 수입니다. GKE 버전 1.24 이상에서 전체 노드 풀의 최대 노드 수를 지정하려면 --total-max-nodes를 사용합니다. --total-min-nodes--total-max-nodes 플래그를 --min-nodes--max-nodes 플래그와 함께 사용할 수 없습니다.

보조 부팅 디스크를 사용하여 노드 자동 프로비저닝

GKE 1.30.1-gke.1329000 이상에서는 워크로드의 리소스 수요를 충족하기 위해 노드 풀을 자동으로 만들고 삭제하도록 노드 자동 프로비저닝을 구성할 수 있습니다.

  1. 다음과 비슷하게 GKE 노드 자동 프로비저닝을 위한 보조 부팅 디스크의 디스크 이미지 허용 목록 커스텀 리소스를 만듭니다.

    apiVersion: "node.gke.io/v1"
    kind: GCPResourceAllowlist
    metadata:
      name: gke-secondary-boot-disk-allowlist
    spec:
      allowedResourcePatterns:
      - "projects/<PROJECT_ID>/global/images/.*"
    

    PROJECT_ID를 디스크 이미지를 호스팅할 프로젝트 ID로 바꿉니다.

  2. 클러스터에 허용 목록 커스텀 리소스를 배포하고 다음 명령어를 실행합니다.

    kubectl apply -f ALLOWLIST_FILE
    

    ALLOWLIST_FILE을 매니페스트 파일 이름으로 바꿉니다.

  3. 보조 부팅 디스크를 사용하도록 포드 노드 선택기를 업데이트합니다.

    nodeSelector:
        cloud.google.com.node-restriction.kubernetes.io/gke-secondary-boot-disk-DISK_IMAGE_NAME=CONTAINER_IMAGE_CACHE.PROJECT_ID
    

    다음을 바꿉니다.

    • DISK_IMAGE_NAME: 디스크 이미지의 이름
    • PROJECT_ID: 디스크 이미지를 호스팅할 프로젝트 ID

다른 프로젝트에서 보조 부팅 디스크 사용

보조 부팅 디스크가 있는 노드 풀을 만들 때 --secondary-boot-disk 플래그를 사용하여 GKE가 다른 프로젝트의 디스크 이미지를 사용하도록 지시할 수 있습니다.

  1. --secondary-boot-disk 플래그를 사용하여 다른 프로젝트의 디스크 이미지에서 보조 부팅 디스크가 있는 노드 풀을 만듭니다. 예를 들면 다음과 같습니다.

    gcloud beta container node-pools create NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --location LOCATION \
        --enable-image-streaming \
        --secondary-boot-disk=disk-image=projects/IMAGE_PROJECT_ID/global/images/DISK_IMAGE_NAME,mode=CONTAINER_IMAGE_CACHE
    
    

    다음을 바꿉니다.

    • DISK_IMAGE_NAME: 디스크 이미지의 이름
    • IMAGE_PROJECT_ID: 디스크 이미지가 속한 프로젝트의 이름

    GKE는 각 노드에 미리 로드된 데이터가 포함된 보조 디스크가 있는 노드 풀을 만듭니다. 그러면 보조 부팅 디스크가 노드에 연결 및 마운트됩니다.

  2. 클러스터 서비스 계정에 'Compute 이미지 사용자' 역할을 추가하여 다른 프로젝트에 속한 디스크 이미지에 대한 액세스 권한을 부여합니다.

    • 기본 Compute 서비스 계정: CLUSTER_PROJECT_NUMBER@cloudservices.gserviceaccount.com
    • GKE 서비스 계정: service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com
    gcloud projects add-iam-policy-binding IMAGE_PROJECT_ID \
        --member serviceAccount:CLUSTER_PROJECT_NUMBER@cloudservices.gserviceaccount.com \
        --role roles/compute.imageUser
    
    gcloud projects add-iam-policy-binding IMAGE_PROJECT_ID \
        --member serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \
        --role roles/compute.imageUser
    

다음 단계