커스텀 부팅 디스크 구성


이 페이지에서는 Google Kubernetes Engine(GKE) 클러스터노드 풀에서 노드 부팅 디스크를 맞춤설정하는 방법을 보여줍니다.

개요

GKE 클러스터 또는 노드 풀을 만들 때는 각 노드의 Kubernetes 노드 파일 시스템을 설치할 영구 디스크 유형을 선택할 수 있습니다. 기본적으로 GKE는 표준 영구 디스크를 사용합니다. SSD 영구 디스크도 지정할 수 있습니다.

SSD 영구 디스크는 특정 워크로드의 노드 성능을 향상시킬 수 있습니다. 하지만 SSD 영구 디스크를 노드 부팅 디스크로 선택하면 추가 비용이 발생합니다. 자세한 내용은 스토리지 옵션을 참조하세요.

SSD 부팅 디스크 사용 시 이점

SSD 영구 디스크를 노드의 부팅 디스크로 사용하면 몇 가지 성능상의 장점을 제공합니다.

  • 노드의 부팅 시간이 빨라집니다.
  • 컨테이너에서 제공되는 바이너리 및 파일을 노드에 빠르게 제공할 수 있습니다. 이를 통해 정적 파일을 호스팅하는 웹 제공 애플리케이션이나 단기간 실행되는 I/O 집약적 일괄 작업과 같은 I/O 집약적 워크로드 성능을 높일 수 있습니다.
  • 노드의 로컬 미디어(hostPath 또는 emptyDir 볼륨을 통해 노출)에 저장된 파일은 향상된 I/O 성능을 경험할 수 있습니다.

SSD 영구 디스크와 표준 영구 디스크의 성능 비교에 대한 자세한 내용은 블록 스토리지 성능 비교를 참조하세요.

노드 부팅 디스크 유형 지정

클러스터 또는 노드 풀을 만들 때 부팅 디스크 유형, 표준 또는 SSD를 지정할 수 있습니다.

gcloud

커스텀 부팅 디스크로 클러스터를 만들려면 다음 명령어를 실행하세요.

[DISK-TYPE]은 다음 중 하나일 수 있습니다.

  • pd-standard는 표준 영구 디스크입니다(기본값).
  • pd-balanced는 균형있는 영구 디스크입니다.
  • pd-ssd는 SSD 영구 디스크입니다.

이 선택 항목에 대한 자세한 내용은 영구 디스크 유형을 참조하세요.

gcloud container clusters create [CLUSTER_NAME] --disk-type [DISK_TYPE]

기존 클러스터에서 노드 풀을 만들려면 다음을 사용하세요.

gcloud container node-pools create [POOL_NAME] --disk-type [DISK_TYPE]

예를 들어 다음 명령어는 SSD 영구 디스크 유형 pd-ssd를 사용하여 example-cluster 클러스터를 만듭니다.

gcloud container clusters create example-cluster --disk-type pd-ssd

Console

Google Cloud Console로 클러스터를 만들 때 부팅 디스크를 선택하려면 다음 안내를 따르세요.

  1. Cloud Console에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 만들기를 클릭합니다.

  3. 원하는 대로 클러스터를 구성합니다.

  4. 탐색창에서 default-pool을 펼치고 노드를 클릭합니다.

  5. 부팅 디스크 유형 드롭다운 목록에서 표준 영구 디스크 또는 SSD 영구 디스크를 선택합니다.

  6. 만들기를 클릭합니다.

기존 클러스터의 커스텀 부팅 디스크로 노드 풀을 만들려면 다음 안내를 따르세요.

  1. Cloud Console에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 클러스터 목록에서 수정하려는 클러스터 이름을 클릭합니다.

  3. 노드 풀 추가를 클릭합니다.

  4. 노드 풀을 원하는 대로 구성합니다.

  5. 탐색창에서 노드를 클릭합니다.

  6. 부팅 디스크 유형 드롭다운 목록에서 표준 영구 디스크 또는 SSD 영구 디스크를 선택합니다.

  7. 만들기를 클릭합니다.

노드 부팅 디스크 보호

노드 부팅 디스크는 기본적으로 컨테이너 이미지, 일부 시스템 프로세스 로그, pod 로그, 쓰기 가능한 컨테이너 레이어를 저장합니다.

워크로드에 configMap, emptyDir 또는 hostPath 볼륨이 사용되는 경우 pod가 부팅 디스크에 추가 데이터를 쓸 수 있습니다. 이를 중지하려면 tmpfs의 지원을 받도록 emptyDir을 구성하면 됩니다. 방법을 알아보려면 Kubernetes 문서를 참조하세요. secret, downwardAPI, projected 볼륨이 tmpfs의 지원을 받으므로 이를 사용하는 pod가 노드 부팅 디스크에 데이터를 쓰지 않습니다.

기본적으로 Google Cloud는 노드 부팅 디스크를 포함한 고객 저장 콘텐츠를 암호화하고 GKE는 사용자의 별도 조치 없이도 암호화를 자동으로 관리합니다.

하지만 노드 부팅 디스크에 데이터를 쓰는 볼륨을 사용하는 경우 GKE에서 워크로드 데이터가 보호되는 방식을 추가로 제어하는 것이 좋습니다. 그러려면 Pod가 노드 부팅 디스크에 데이터를 쓰지 못하게 방지하거나 노드 부팅 디스크에 고객 관리 암호화 키(CMEK)를 사용해야 합니다.

pod가 부팅 디스크에 기록하지 못하도록 방지

pod가 노드 부팅 디스크에 데이터를 직접 쓰지 못하게 방지하고 연결된 디스크에만 데이터를 쓰도록 할 수 있습니다. Pod가 부팅 디스크에 데이터를 쓰지 못하도록 제한하려면 PodSecurityPolicyvolumes 필드에서 다음 볼륨을 제외합니다.

  • configMap
  • emptyDir(tmpfs가 지원하지 않는 경우)
  • hostPath

다음에 나오는 PodSecurityPolicy 예시 preventWritingToBootDisk.yaml에서는 부팅 디스크에 데이터를 쓰지 못하게 방지합니다.

apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: preventWritingToBootDisk
spec:
  Volumes: # Exclude configMap, emptyDir (if not backed by tmpfs), and hostPath.
           # Include all other desired volumes.
     - 'persistentVolumeClaim'
  # Required fields.
  runAsUser:
    rule: 'RunAsAny'
  seLinux:
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'RunAsAny'
  fsGroup:
    rule: 'RunAsAny'

고객 관리 암호화

암호화 키 순환을 직접 제어하고 관리하려면 고객 관리 암호화 키(CMEK)를 사용하면 됩니다. 이러한 키는 데이터 암호화용으로 사용되는 데이터 암호화 키를 암호화하는 데 사용됩니다. 노드 부팅 디스크에 CMEK를 사용하는 방법을 알아보려면 고객 관리 암호화 키 사용을 참조하세요.

노드 부팅 디스크에 CMEK를 사용하는 경우 몇 가지 제한사항이 있습니다.

  • 기존 클러스터 또는 노드 풀의 부팅 디스크를 대상으로 고객 관리 암호화를 사용 설정하거나 사용 중지할 수는 없습니다.
  • pd-standardpd-ssd 영구 디스크에만 CMEK를 사용할 수 있습니다.

다음 단계