이 문서에서는 Google Kubernetes Engine (GKE) 노드에서 Compute Engine 영구 디스크 및 Hyperdisk의 영구 볼륨 연결 한도가 작동하는 방식을 설명합니다. 워크로드 예약 및 노드 풀 크기 조정을 적절하게 수행하려면 GKE 노드에 연결할 수 있는 최대 영구 디스크 수를 이해하는 것이 중요합니다. 워크로드 예약에 대한 제어 수준을 높이려면 특히 단일 인스턴스에서 연결 한도가 다른 여러 디스크 유형을 사용하는 경우 노드 라벨을 사용하여 기본 연결 한도를 재정의하면 됩니다.
이 문서는 스토리지를 생성하고 할당하는 스토리지 전문가와 워크로드 예약 및 노드 풀 크기를 관리하는 GKE 관리자를 대상으로 합니다. Google Cloud 콘텐츠에서 참조하는 일반적인 역할 및 예시 태스크에 대해 자세히 알아보려면 일반 GKE Enterprise 사용자 역할 및 태스크를 참고하세요.
개요
GKE에서 Compute Engine 영구 디스크 CSI 드라이버 (pd.csi.storage.gke.io
)를 사용하여 PersistentVolume (PV)을 요청하면 Google Cloud 영구 디스크 서비스에서 블록 스토리지 볼륨이 프로비저닝됩니다.
GKE 클러스터에서 Compute Engine Persistent Disk CSI 드라이버 (PDCSI)를 사용 설정하면 PDCSI 드라이버가 노드별 영구 볼륨 연결 한도를 계산하여 kubelet에 보고합니다. 이 정보를 기반으로 Kubernetes 스케줄러는 연결 용량에 도달한 노드에 영구 볼륨이 필요한 포드를 너무 많이 예약하지 않도록 예약 결정을 내립니다. PDCSI 드라이버가 부정확한 연결 제한, 특히 실제 제한보다 높은 숫자를 보고하면 포드가 예약되지 않고 Pending
상태로 멈춥니다. 하이퍼디스크와 영구 디스크의 연결 한도가 다른 3세대 머신 유형(예: C3)에서 이 문제가 발생할 수 있습니다.
영구 볼륨 연결 제한 이해하기
4세대 이전의 머신의 경우 Compute Engine PDCSI 드라이버는 모든 머신 유형에 걸쳐 디스크 128개 (데이터 디스크 127개와 부팅 디스크 1개)의 집계 영구 볼륨 연결 제한을 설정합니다. 연결 제한은 영구 디스크와 하이퍼디스크 볼륨의 합계에 적용됩니다. Hyperdisk의 경우 연결 한도는 기본 Compute Engine 머신 유형, 머신에 있는 vCPU 수, 특정 Hyperdisk 유형에 따라 결정됩니다.
예를 들면 다음과 같습니다.
- C4와 같은 4세대 머신 유형의 경우 PDCSI 드라이버는 노드의 vCPU 수를 기반으로 계산된 기본 연결 제한을 Kubernetes에 정확하게 보고합니다. 보고된 연결 제한은 일반적으로 8~128개의 영구 볼륨 범위에 속합니다.
- 반면 C3와 같은 3세대 머신 유형의 경우 PDCSI 드라이버는 Kubernetes에 기본 연결 한도를 디스크 128개의 고정 한도로 보고하므로 실제 한도가 vCPU 수에 따라 128개 미만일 수 있어 포드 예약 실패가 발생할 수 있습니다.
노드 라벨을 사용하여 기본 연결 제한을 재정의할 수 있습니다.
Compute Engine 문서의 다음 유용한 리소스를 참고하세요.
- 사용 가능한 Compute Engine 머신 세대는 Compute Engine 용어 섹션의 표를 참고하세요.
- 머신 유형과 호환되는 영구 디스크 유형 목록은 머신 시리즈 지원을 참고하세요.
- 다양한 하이퍼디스크 유형의 CPU 수에 따라 지원되는 최대 하이퍼디스크 연결 한도를 알아보려면 VM당 최대 하이퍼디스크 볼륨 수를 참고하세요.
- 노드에 하이퍼디스크 연결 한도가 적용되는 방식을 알아보려면 VM당 하이퍼디스크 한도 요약을 참고하세요.
기본 영구 볼륨 연결 한도 재정의
노드에 특정 수의 영구 볼륨을 연결하려는 특정 요구사항이나 노드 구성이 있는 경우 node-restriction.kubernetes.io/gke-volume-attach-limit-override: VALUE
노드 라벨을 사용하여 노드 풀의 기본 영구 볼륨 연결 제한을 재정의할 수 있습니다.
다음 GKE 버전에서 이 노드 라벨을 사용할 수 있습니다.
1.32.4-gke.1698000
이상1.33.1-gke.1386000
이상
새 노드 풀
특정 영구 볼륨 연결 제한이 있는 새 노드 풀을 만들려면 다음 명령어를 실행합니다.
gcloud container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--node-labels=node-restriction.kubernetes.io/gke-volume-attach-limit-override=VALUE
기존 노드 풀
기존 노드 풀의 현재 영구 볼륨 연결 제한을 수정하려면 다음 단계를 따르세요.
노드 풀의 연결 제한을 업데이트합니다.
gcloud container node-pools update NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --node-labels=node-restriction.kubernetes.io/gke-volume-attach-limit-override=VALUE
pdcsi-node
DaemonSet를 다시 시작합니다.kubectl rollout restart ds pdcsi-node -n kube-system
새로운 연결 제한은
pdcsi-node
포드가Running
상태가 된 후에 적용됩니다.
다음을 바꿉니다.
NODE_POOL_NAME
: 만들거나 업데이트할 노드 풀의 이름입니다.CLUSTER_NAME
: 만들거나 업데이트하려는 노드 풀의 클러스터 이름입니다.VALUE
: 연결할 수 있는 새 영구 볼륨 수를 지정하는0
~127
사이의 정수입니다. 127보다 높은 값을 지정하면 노드 라벨이 무시되고 PDCSI 드라이버가 기본 영구 볼륨 연결 제한을 대신 사용합니다. 기본 한도는 3세대 머신의 경우 128이고 4세대 머신의 경우 vCPU 수 기반 값입니다.
재정의 확인
재정의가 올바르게 적용되었는지 확인하려면 노드 라벨과 노드 용량을 확인하세요.
다음 명령어에서 NODE_NAME
을 노드 라벨 재정의를 적용한 특정 노드 풀에 속한 노드의 이름으로 바꿉니다.
노드 라벨을 확인합니다.
kubectl get node NODE_NAME --show-labels
출력에는
node-restriction.kubernetes.io/gke-volume-attach-limit-override
라벨이 포함되어야 합니다.노드 용량을 확인합니다.
kubectl describe node NODE_NAME
출력에는
attachable-volumes-gce-pd
용량이 포함되어야 하며, 이는 노드 풀에 설정한 재정의 값과 일치해야 합니다. 자세한 내용은 노드에서 할당 가능한 리소스 확인을 참고하세요.