로컬 SSD 지원 임시 스토리지 프로비저닝 및 사용


이 페이지에서는 로컬 SSD 스토리지를 Google Kubernetes Engine(GKE) 클러스터에 프로비저닝하는 방법과 클러스터의 노드에 연결된 로컬 SSD 지원 임시 스토리지의 데이터를 사용하도록 워크로드를 구성하는 방법을 설명합니다.

GKE의 로컬 SSD 지원에 대한 자세한 내용은 로컬 SSD 스토리지 정보를 참조하세요.

시작하기 전에

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

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

로컬 SSD 지원 임시 스토리지로 클러스터 또는 노드 풀 만들기

Google Cloud CLI를 사용하여 로컬 SSD 지원 임시 스토리지가 있는 클러스터 또는 노드 풀을 만듭니다.

--ephemeral-storage-local-ssd 옵션을 사용하여 로컬 SSD 볼륨으로 지원되는 완전 관리형 로컬 임시 스토리지를 연결합니다. 이 스토리지는 포드의 수명 주기에 연결됩니다. 포드가 임시 스토리지를 요청하면 GKE는 로컬 SSD 볼륨이 임시 스토리지로 구성된 노드에서 실행되도록 포드를 예약합니다. 로컬 SSD를 더 전문적으로 또는 세부적으로 제어하려면 대신 로컬 SSD 지원 원시 블록 스토리지를 사용하는 것이 좋습니다.

클러스터 자동 확장을 사용 설정한 경우 클러스터에 임시 스토리지 공간이 더 필요할 때 GKE가 노드를 자동 확장합니다. 포드는 emptyDir 볼륨을 통해 로컬 SSD 볼륨의 데이터에 액세스할 수 있습니다.

클러스터 또는 노드 풀을 만들기 위해 실행하는 gcloud CLI 명령어는 선택한 머신 유형의 머신 계열 세대에 따라 다릅니다. 예를 들어 N1 및 N2 머신 유형은 각각 1세대 및 2세대 머신 시리즈에 속하고 C3 머신 유형은 3세대 머신 시리즈에 속합니다.

로컬 SSD로 클러스터 만들기

1세대 또는 2세대

1세대 또는 2세대 머신 시리즈의 머신 유형을 사용하는 경우 --ephemeral-storage-local-ssd count=NUMBER_OF_DISKS 옵션을 지정하여 클러스터를 만듭니다. 이 옵션은 kubelet 임시 스토리지에 사용할 지정된 수의 로컬 SSD 볼륨을 각 노드에 프로비저닝합니다.

이 설정은 기본 노드 풀에만 적용됩니다. 후속 노드 풀에 로컬 SSD가 필요한 경우 노드 풀 생성 중에 지정합니다.

GKE 버전 1.25.3-gke.1800 이상에서 기본 풀이 로컬 SSD 볼륨을 사용하는 클러스터를 만들려면 다음 명령어를 실행합니다.

gcloud container clusters create CLUSTER_NAME \
    --ephemeral-storage-local-ssd count=NUMBER_OF_DISKS \
    --machine-type=MACHINE_TYPE \
    --release-channel CHANNEL_NAME

다음을 바꿉니다.

  • CLUSTER_NAME: 클러스터의 이름입니다.
  • NUMBER_OF_DISKS: 각 노드에서 프로비저닝할 로컬 SSD 볼륨 수입니다. 이러한 볼륨은 노드 설정 중에 단일 논리 볼륨으로 결합됩니다. 최대 볼륨 수는 머신 유형 및 리전에 따라 달라집니다. 일부 로컬 SSD 용량은 시스템용으로 예약되어 있습니다.
  • MACHINE_TYPE: 사용할 머신 유형입니다. 로컬 SSD를 기본 e2-medium 유형과 함께 사용할 수 없으므로 이 필드는 필수 항목입니다.
  • CHANNEL_NAME: GKE 버전이 1.25.3-gke.1800 이상인 출시 채널입니다. 출시 채널을 사용하지 않으려면 1.25.3-gke.1800 이상의 유효한 버전을 지정하여 --release-channel 대신 --cluster-version 플래그를 사용할 수도 있습니다. 유효한 버전을 확인하려면 gcloud container get-server-config 명령어를 사용합니다.

3세대

3세대 머신 계열의 머신 유형을 사용하는 경우 클러스터를 만들 때 로컬 SSD 옵션을 지정할 필요가 없습니다. 각 노드에 연결된 디스크 수는 머신 유형에 따라 다릅니다.

클러스터를 만들려면 다음 명령어를 실행하세요.

gcloud container clusters create CLUSTER_NAME \
  --machine-type=MACHINE_TYPE \
  --cluster-version CLUSTER_VERSION

다음을 바꿉니다.

  • CLUSTER_NAME: 클러스터의 이름입니다.
  • MACHINE_TYPE: 3세대 머신 시리즈에서 사용할 머신 유형입니다.
  • CLUSTER_VERSION: 3세대 머신 시리즈의 머신 유형에서 로컬 SSD를 지원하는 GKE 클러스터 버전입니다.

로컬 SSD로 노드 풀 만들기

1세대 또는 2세대

GKE 버전 1.25.3-gke.1800 이상에서 실행되고 로컬 SSD 볼륨을 사용하는 노드 풀을 만들려면 다음 명령어를 실행합니다.

gcloud container node-pools create POOL_NAME \
    --cluster=CLUSTER_NAME \
    --ephemeral-storage-local-ssd count=NUMBER_OF_DISKS \
    --machine-type=MACHINE_TYPE

다음을 바꿉니다.

  • POOL_NAME: 새 노드 풀의 이름입니다.
  • CLUSTER_NAME: 클러스터의 이름입니다.
  • NUMBER_OF_DISKS: 각 노드에서 프로비저닝할 로컬 SSD 볼륨 수입니다. 이러한 볼륨은 노드 설정 중에 단일 논리 볼륨으로 결합됩니다. 최대 볼륨 수는 머신 유형 및 리전에 따라 달라집니다. 일부 로컬 SSD 용량은 시스템용으로 예약되어 있습니다.
  • MACHINE_TYPE: 사용할 머신 유형입니다. 로컬 SSD를 기본 e2-medium 유형과 함께 사용할 수 없으므로 이 필드는 필수 항목입니다.

3세대

3세대 머신 계열의 머신 유형을 사용하는 경우 노드 풀을 만들 때 로컬 SSD 옵션을 지정할 필요가 없습니다. 각 노드에 연결된 볼륨 수는 머신 유형에 따라 다릅니다.

노드 풀을 만들려면 다음 명령어를 실행하세요.

gcloud container node-pools create POOL_NAME \
  --cluster=CLUSTER_NAME \
  --machine-type=MACHINE_TYPE \
  --node-version NODE_VERSION

다음을 바꿉니다.

  • POOL_NAME: 새 노드 풀의 이름입니다.
  • CLUSTER_NAME: 클러스터의 이름입니다.
  • MACHINE_TYPE: 3세대 머신 시리즈에서 사용할 머신 유형입니다.
  • NODE_VERSION: 3세대 머신 계열의 머신 유형에서 로컬 SSD를 지원하는 GKE 노드 풀 버전입니다.

노드 풀의 노드는 cloud.google.com/gke-ephemeral-storage-local-ssd=true 라벨과 함께 생성됩니다. 다음 명령어를 실행하여 라벨을 확인할 수 있습니다.

kubectl describe node NODE_NAME

Autopilot 클러스터에 로컬 SSD 기반 임시 스토리지 사용

다음 Autopilot 컴퓨팅 클래스에 로컬 SSD를 사용할 수 있습니다.

  • Performance
  • Accelerator

Performance 클래스의 경우 성능 클래스 포드에서 로컬 SSD 사용의 안내를 따릅니다.

Accelerator 컴퓨팅 클래스의 경우 NVIDIA L4 GPU를 사용 중이고 GKE 패치 버전 1.28.6-gke.1369000 이상 또는 1.29.1-gke.1575000 이상을 실행할 때 임시 스토리지에 로컬 SSD를 사용할 수 있습니다. NVIDIA H100(80GB) GPU 및 NVIDIA A100(80GB) GPU는 임시 스토리지로 항상 SSD를 사용하며, 사용자가 해당 GPU에 대해 다음 노드 선택기를 지정할 수 없습니다.

임시 스토리지에 로컬 SSD를 사용하려면 워크로드 매니페스트에 대해 cloud.google.com/gke-ephemeral-storage-local-ssd: "true" nodeSelector를 추가합니다. 포드 사양은 다음 예시와 비슷하게 표시됩니다.

apiVersion: v1
kind: Pod
metadata:
  name: l4-localssd-pod
spec:
  containers:
  - name: my-gpu-container
    image: nvidia/cuda:11.0.3-runtime-ubuntu20.04
    command: ["/bin/bash", "-c", "--"]
    args: ["while true; do sleep 600; done;"]
    resources:
      requests:
        cpu: 16
        memory: 64Gi
        ephemeral-storage: 800Gi
      limits:
       cpu: 16
       memory: 64Gi
       ephemeral-storage: 800Gi
       nvidia.com/gpu: 8
  nodeSelector:
    cloud.google.com/gke-accelerator: nvidia-l4
    cloud.google.com/gke-ephemeral-storage-local-ssd: "true"

기존 API 매개변수 사용

--local-ssd-count 옵션은 SCSI 로컬 SSD를 지원하는 기존 API 매개변수입니다. Compute Engine 3세대 머신 계열에서는 SCSI를 지원하지 않으며 NVMe만 지원합니다. 이 옵션은 Windows Server 클러스터에서만 사용해야 합니다. 현재 Linux 클러스터에서 기존 API 매개변수를 사용하는 경우 대신 --ephemeral-storage-local-ssd 옵션을 사용하는 것이 좋습니다.

Windows Server 클러스터의 로컬 SSD

Windows Server 노드 풀을 실행하는 클러스터에서 로컬 SSD를 사용하는 경우 노드를 사용하기 전에 노드에 로그인하고 볼륨을 포맷해야 합니다. 다음 예시에서 로컬 SSD 볼륨은 NTFS 파일 시스템으로 포맷됩니다. 볼륨 아래에 디렉터리를 만들 수도 있습니다. 이 예시에서는 디렉터리가 디스크 D 아래에 있습니다.

PS C:\> Get-Disk | Where partitionstyle -eq 'raw' | Initialize-Disk -PartitionStyle MBR -PassThru | New-Partition -AssignDriveLetter -UseMaximumSize | Format-Volume -FileSystem ntfs -Confirm:$false
PS C:\> mkdir D:\test-ssd

로컬 SSD 볼륨 액세스

다음 예에서는 로컬 SSD 지원 임시 스토리지에 액세스하는 방법을 보여줍니다.

emptyDir 볼륨의 임시 스토리지

emptyDir 볼륨을 포함하여 임시 스토리지에 로컬 SSD를 사용하도록 GKE 노드 풀을 구성할 수 있습니다.

다음 포드 매니페스트는 emptyDircloud.google.com/gke-ephemeral-storage-local-ssd의 노드 선택기를 사용합니다. 배포 매니페스트 또는 StatefulSet 매니페스트에 유사한 기법을 적용할 수 있습니다.

임시 스토리지 리소스 요청을 선택할 때는 시스템 사용을 위해 예약된 로컬 SSD 용량을 고려하세요.

apiVersion: v1
kind: Pod
metadata:
  name: POD_NAME
spec:
  containers:
    - name: CONTAINER_NAME
      image: "registry.k8s.io/pause"
      resources:
        requests:
          ephemeral-storage: "200Gi"
      volumeMounts:
        - mountPath: /cache
          name: scratch-volume
  nodeSelector:
    cloud.google.com/gke-ephemeral-storage-local-ssd: "true"
  volumes:
    - name: scratch-volume
      emptyDir: {}

문제 해결

문제 해결 안내는 GKE에서 스토리지 문제 해결을 참조하세요.

다음 단계