이 페이지에서는 Google Kubernetes Engine(GKE) 클러스터 및 노드 풀에서 노드 부팅 디스크를 맞춤설정하는 방법을 보여줍니다.
개요
GKE 클러스터 또는 노드 풀을 만들 때는 각 노드의 Kubernetes 노드 파일 시스템을 설치할 Persistent Disk 유형을 선택할 수 있습니다. 기본적으로 GKE는 버전 1.24 이상에서 균형 있는 영구 디스크를 사용합니다. 표준, SSD 등의 다른 Persistent Disk 유형을 지정할 수도 있습니다. 자세한 내용은 스토리지 옵션을 참조하세요.
균형 있는 Persistent Disk 및 SSD Persistent Disk의 디스크 할당량은 표준 Persistent Disk의 할당량과 다릅니다. 표준에서 균형 있는 Persistent Disk로 전환할 때는 할당량 상향 조정을 요청해야 할 수 있습니다. 자세한 내용은 리소스 할당량을 참조하세요.
SSD 부팅 디스크 사용 시 이점
SSD Persistent Disk를 노드의 부팅 디스크로 사용하면 몇 가지 성능상의 장점을 제공합니다.
- 노드의 부팅 시간이 빨라집니다.
- 컨테이너에서 제공되는 바이너리 및 파일을 노드에 빠르게 제공할 수 있습니다. 이를 통해 정적 파일을 호스팅하는 웹 제공 애플리케이션이나 단기간 실행되는 I/O 집약적 일괄 작업과 같은 I/O 집약적 워크로드 성능을 높일 수 있습니다.
- 노드의 로컬 미디어(
hostPath
또는emptyDir
볼륨을 통해 노출)에 저장된 파일은 향상된 I/O 성능을 경험할 수 있습니다.
노드 부팅 디스크 유형 지정
클러스터 또는 노드 풀을 만들 때 부팅 디스크 유형을 지정할 수 있습니다.
gcloud
커스텀 부팅 디스크로 클러스터를 만들려면 다음 명령어를 실행하세요.
[DISK-TYPE]
는 다음 값 중 하나일 수 있습니다.
pd-balanced
(버전 1.24 이상에서 기본값)pd-standard
(버전 1.23 이하에서 기본값)pd-ssd
hyperdisk-balanced
이 선택 항목에 대한 자세한 내용은 영구 디스크 유형을 참조하세요.
gcloud container clusters create [CLUSTER_NAME] --disk-type [DISK_TYPE]
기존 클러스터에서 노드 풀을 만들려면 다음을 사용하세요.
gcloud container node-pools create [POOL_NAME] --disk-type [DISK_TYPE]
예를 들어 다음 명령어는 SSD Persistent Disk 유형(pd-ssd
)을 사용하여 example-cluster
클러스터를 만듭니다.
gcloud container clusters create example-cluster --disk-type pd-ssd
콘솔
Google Cloud Console로 클러스터를 만들 때 부팅 디스크를 선택하려면 다음 안내를 따르세요.
Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.
add_box만들기를 클릭합니다.
필요에 따라 클러스터를 구성합니다.
탐색 메뉴에서 default-pool을 펼치고 노드를 클릭합니다.
부팅 디스크 유형 드롭다운 목록에서 Persistent Disk 유형을 선택합니다.
만들기를 클릭합니다.
기존 클러스터의 커스텀 부팅 디스크로 노드 풀을 만들려면 다음 안내를 따르세요.
Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.
클러스터 목록에서 수정하려는 클러스터 이름을 클릭합니다.
add_box 노드 풀 추가를 클릭합니다.
필요에 따라 노드 풀을 구성합니다.
탐색 메뉴에서 노드를 클릭합니다.
부팅 디스크 유형 드롭다운 목록에서 Persistent Disk 유형을 선택합니다.
만들기를 클릭합니다.
노드 부팅 디스크 보호
노드 부팅 디스크는 기본적으로 컨테이너 이미지, 일부 시스템 프로세스 로그, pod 로그, 쓰기 가능한 컨테이너 레이어를 저장합니다.
워크로드에 configMap
, emptyDir
또는 hostPath
볼륨이 사용되는 경우 pod가 부팅 디스크에 추가 데이터를 쓸 수 있습니다. 이를 중지하려면 tmpfs의 지원을 받도록 emptyDir
을 구성하면 됩니다. 방법을 알아보려면 Kubernetes 문서를 참조하세요.
secret
, downwardAPI
, projected
볼륨이 tmpfs의 지원을 받으므로 이를 사용하는 포드가 노드 부팅 디스크에 데이터를 쓰지 않습니다.
기본적으로 Google Cloud는 노드 부팅 디스크를 포함한 고객 저장 콘텐츠를 암호화하고 GKE는 사용자의 별도 조치 없이도 암호화를 자동으로 관리합니다.
하지만 노드 부팅 디스크에 데이터를 쓰는 볼륨을 사용하는 경우 GKE에서 워크로드 데이터가 보호되는 방식을 추가로 제어하는 것이 좋습니다. 그러려면 Pod가 노드 부팅 디스크에 데이터를 쓰지 못하게 방지하거나 노드 부팅 디스크에 고객 관리 암호화 키(CMEK)를 사용해야 합니다.
포드가 부팅 디스크에 데이터를 쓰지 못하게 방지
Pod가 노드 부팅 디스크에 데이터를 직접 쓰지 못하도록 하려면 다음 방법 중 하나를 사용하세요.
정책 컨트롤러
정책 컨트롤러는 Fleet의 GKE 클러스터에서 규모에 맞춰 커스텀 정책을 선언하고 시행할 수 있게 해주는 GKE Enterprise 기능입니다.
- 정책 컨트롤러 설치
k8sPspVolumeTypes
제약조건 템플릿을 사용하여 다음 볼륨 유형을 제한하는 제약조건을 정의합니다.configMap
emptyDir
(tmpfs가 지원하지 않는 경우)hostPath
자세한 내용은 정책 컨트롤러 문서의 제약조건 템플릿 라이브러리 사용을 참조하세요.
다음 예시 제약조건은 클러스터의 모든 포드에서 이러한 볼륨 유형을 제한합니다.
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sPSPVolumeTypes
metadata:
name: deny-boot-disk-writes
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
parameters:
volumes:
- configMap
- emptyDir
- hostPath
PodSecurity 허용 컨트롤러
기본 제공되는 Kubernetes PodSecurity 허용 컨트롤러를 사용하면 특정 네임스페이스 또는 클러스터에서 여러 수준의 포드 보안 표준을 적용할 수 있습니다. 제한 정책은 포드가 노드 부팅 디스크에 쓰지 못하게 합니다.
PodSecurity 허용 컨트롤러를 사용하려면 PodSecurity를 사용하여 사전 정의된 포드 수준 보안 정책 적용을 참고하세요.
고객 관리 암호화
암호화 키 순환을 직접 제어하고 관리하려면 고객 관리 암호화 키(CMEK)를 사용하면 됩니다. 이러한 키는 데이터 암호화용으로 사용되는 데이터 암호화 키를 암호화하는 데 사용됩니다. 노드 부팅 디스크에 CMEK를 사용하는 방법을 알아보려면 고객 관리 암호화 키 사용을 참조하세요.
노드 부팅 디스크의 CMEK 제한은 노드 풀 생성 후 변경할 수 없다는 것입니다. 이는 다음을 의미합니다.
- 노드 풀이 고객 관리 암호화로 생성된 경우 이후 부팅 디스크에서 암호화를 사용 중지할 수 없습니다.
- 노드 풀이 고객 관리 암호화 없이 생성된 경우 이후 부팅 디스크에서 암호화를 사용 설정할 수 없습니다. 하지만 고객 관리 암호화를 사용 설정하여 새 노드 풀을 만들고 이전 노드 풀을 삭제할 수 있습니다.
제한사항
커스텀 부팅 디스크를 구성하기 전에 다음 제한사항을 고려하세요.