이 페이지에서는 Google Kubernetes Engine(GKE)에서의 노드 풀 작동 방법을 설명합니다.
노드 풀 관리 방법을 알아보려면 노드 풀 추가 및 관리를 참조하세요.
개요
노드 풀은 클러스터 내에서 구성이 모두 동일한 노드 그룹입니다. 노드 풀은 NodeConfig 사양을 사용합니다. 풀의 각 노드에는 노드 풀의 이름이 값으로 포함된 Kubernetes 노드 라벨 cloud.google.com/gke-nodepool
이 있습니다.
클러스터를 만들 때는 지정한 노드 수 및 노드 유형을 사용해서 클러스터의 첫 번째 노드 풀을 만듭니다. 그런 다음 다른 크기 및 유형의 추가 노드 풀을 클러스터에 추가할 수 있습니다. 특정 노드 풀의 모든 노드는 서로 동일합니다.
예를 들어 클러스터에서 로컬 SSD, 최소 CPU 플랫폼, 스팟 VM, 특정 노드 이미지, 다양한 머신 유형 또는 더 효율적인 가상 네트워크 인터페이스를 사용하여 노드 풀을 만들 수 있습니다.
커스텀 노드 풀은 추가 메모리 또는 추가 로컬 디스크 공간 등 다른 것보다 더 많은 리소스가 필요한 Pod를 예약해야 할 경우에 유용합니다. 포드 예약 위치를 더 세부적으로 제어해야 할 경우에는 노드 taint를 사용할 수 있습니다.
전체 클러스터에 영향을 주지 않고 노드 풀 만들기, 업그레이드, 삭제를 개별적으로 수행할 수 있습니다. 노드 풀에서 단일 노드를 구성할 수 없습니다. 즉, 구성 변경사항은 노드 풀에 있는 모든 노드에 영향을 줍니다.
노드를 추가 또는 삭제하여 클러스터에서 노드 풀 크기를 조절할 수 있습니다.
기본적으로 모든 새 노드 풀은 제어 영역과 동일한 버전의 Kubernetes를 실행합니다. 기존 노드 풀을 수동 또는 자동으로 업그레이드할 수 있습니다. 또한 클러스터의 각 노드 풀에서 여러 Kubernetes 노드 버전을 실행하고, 각 노드 풀을 독립적으로 업데이트하고, 특정 배포에 대해 다른 노드 풀을 대상으로 지정할 수 있습니다.
특정 노드 풀에 서비스 배포
서비스를 정의할 때 서비스가 배포되는 노드 풀을 간접적으로 제어할 수 있습니다. 노드 풀은 서비스의 구성이 아니라 포드의 구성에 의존합니다.
포드 매니페스트에서
nodeSelector
를 설정하여 포드를 특정 노드 풀에 명시적으로 배포할 수 있습니다. 이렇게 하면 포드가 이 노드 풀의 노드에서만 실행됩니다. 예시를 보려면 포드를 특정 노드 풀에 배포를 참조하세요.컨테이너에 대한 리소스 요청을 지정할 수 있습니다. 포드는 리소스 요청을 충족하는 노드에서만 실행됩니다. 예를 들어 CPU 4개가 필요한 컨테이너가 포드 정의에 포함된 경우 서비스는 CPU가 2개인 노드에서 실행되는 포드를 선택하지 않습니다.
멀티 영역 또는 리전 클러스터의 노드
멀티 영역 또는 리전 클러스터를 만든 경우 모든 노드 풀이 자동으로 영역에 복제됩니다. 모든 새 노드 풀은 이러한 영역에서 자동으로 생성됩니다. 마찬가지로, 모든 삭제 작업은 추가 영역에서도 해당 노드 풀을 삭제합니다.
이러한 배수적인 효과로 인해, 이 방식은 노드 풀을 만들 때 특정 리전의 프로젝트 할당량보다 많은 리소스를 소비할 수 있습니다.
노드 풀 삭제
노드 풀을 삭제하면 GKE가 노드 풀에서 모든 노드를 비워서 모든 포드를 삭제하고 다시 예약합니다. 비우기 프로세스 중에 GKE는 노드 풀의 각 노드에서 포드를 삭제합니다. 노드 풀의 각 노드는 MAX_POD
의 할당된 유예 종료 기간에 따라 포드를 삭제하여 비워집니다.
MAX_POD
는 최대 1시간까지 노드에 예약된 포드에 설정되는 최대 terminationGracePeriodSeconds
입니다.
PodDisruptionBudget
설정은 노드 풀 삭제 중에 적용되지 않습니다.
포드에 특정 노드 선택기가 있는 경우, 클러스터의 다른 노드가 기준을 충족하지 못하면 포드는 예약할 수 없는 상태로 남아 있을 수 있습니다.
클러스터가 삭제되면 GKE는 노드를 비워서 단계적으로 노드를 종료하는 프로세스를 따르지 않습니다. 클러스터에서 실행 중인 워크로드를 단계적으로 종료해야 하는 경우 kubectl
drain
를 사용하여 클러스터를 삭제하기 전에 워크로드를 삭제합니다.
노드 풀을 삭제하려면 노드 풀 삭제를 참조하세요.