노드 풀은 Kubernetes 클러스터 내에서 구성이 모두 동일한 노드 그룹입니다. 노드 풀은 NodePool 사양을 사용합니다. 풀의 각 노드에는 노드 풀의 이름이 값으로 포함된 Kubernetes 노드 라벨이 있습니다.
기본적으로 모든 새 노드 풀은 컨트롤 플레인과 동일한 버전의 Kubernetes를 실행합니다.
Kubernetes 클러스터를 만들 때 지정하는 노드 수와 노드 유형이 클러스터의 첫 번째 노드 풀을 만듭니다. 다양한 크기와 유형의 노드 풀을 클러스터에 추가할 수 있습니다. 특정 노드 풀의 모든 노드는 서로 동일합니다.
커스텀 노드 풀은 추가 메모리 또는 로컬 디스크 공간 등 다른 것보다 더 많은 리소스가 필요한 포드를 예약할 때 유용합니다. 포드 예약을 더 세부적으로 제어해야 하는 경우 노드 taint를 사용할 수 있습니다.
전체 클러스터에 영향을 주지 않고 개별적으로 노드 풀을 생성하고 삭제할 수 있습니다. 노드 풀에서 단일 노드를 구성할 수 없습니다. 구성 변경사항은 노드 풀에 있는 모든 노드에 영향을 줍니다.
풀을 스케일 업 또는 스케일 다운하여 클러스터에서 노드 풀 크기를 조절할 수 있습니다. 노드 풀 축소는 풀 크기를 줄이면 GDC 시스템이 임의의 노드를 자동으로 드레인하고 제거하는 자동화된 프로세스입니다. 노드 풀을 축소할 때는 삭제할 특정 노드를 선택할 수 없습니다.
시작하기 전에
Kubernetes 클러스터에서 노드 풀을 보고 관리하려면 다음 역할이 있어야 합니다.
사용자 클러스터 관리자 (user-cluster-admin)
사용자 클러스터 노드 뷰어 (user-cluster-node-viewer)
이러한 역할은 네임스페이스에 바인딩되지 않습니다.
노드 풀 추가하기
GDC 콘솔에서 Kubernetes 클러스터를 만들 때 클러스터 생성 초기화 전에 기본 노드 풀을 맞춤설정하고 추가 노드 풀을 만들 수 있습니다. 기존 Kubernetes 클러스터에 노드 풀을 추가해야 하는 경우 다음 단계를 완료하세요.
콘솔
탐색 메뉴에서 Kubernetes Engine > 클러스터를 선택합니다.
클러스터 목록에서 클러스터를 클릭합니다. 클러스터 세부정보 페이지가 표시됩니다.
노드 풀 > 노드 풀 추가를 선택합니다.
노드 풀의 이름을 할당합니다. 노드 풀을 만든 후에는 이름을 수정할 수 없습니다.
노드 풀에서 만들 워커 노드 수를 지정합니다.
워크로드 요구사항에 가장 적합한 머신 클래스를 선택합니다. 머신 클래스는 다음 설정에 표시됩니다.
머신 유형
vCPU
메모리
저장을 클릭합니다.
API
대화형 편집기를 사용하여 kubectl CLI로 Cluster 커스텀 리소스 사양을 엽니다.
MACHINE_TYPE: 노드 풀의 작업자 노드에 사용할 머신 유형입니다. 구성할 수 있는 항목은 사용 가능한 머신 유형을 참고하세요.
NODE_POOL_NAME: 노드 풀의 이름
NUMBER_OF_WORKER_NODES: 노드 풀에서 프로비저닝할 워커 노드 수입니다.
TAINTS: 이 노드 풀의 노드에 적용할 테인트입니다. 이 필드는 선택 사항입니다.
LABELS: 이 노드 풀의 노드에 적용할 라벨입니다. 키-값 쌍 목록을 포함합니다. 이 필드는 선택사항입니다.
GPU_PARTITION_SCHEME: GPU 워크로드를 실행하는 경우 GPU 파티셔닝 스키마입니다. 예를 들면 mixed-2입니다. 이 필드가 설정되지 않은 경우 GPU가 파티셔닝되지 않습니다. 사용 가능한 다중 인스턴스 GPU (MIG) 프로필은 지원되는 MIG 프로필을 참고하세요.
파일을 저장하고 편집기를 종료합니다.
노드 풀 보기
Kubernetes 클러스터에서 기존 노드 풀을 보려면 다음 단계를 완료하세요.
콘솔
탐색 메뉴에서 Kubernetes Engine > 클러스터를 선택합니다.
클러스터 목록에서 클러스터를 클릭합니다. 클러스터 세부정보 페이지가 표시됩니다.
노드 풀을 선택합니다.
클러스터에서 실행 중인 노드 풀 목록이 표시됩니다. 이 페이지에서 클러스터의 노드 풀을 관리할 수 있습니다.
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["이해하기 어려움","hardToUnderstand","thumb-down"],["잘못된 정보 또는 샘플 코드","incorrectInformationOrSampleCode","thumb-down"],["필요한 정보/샘플이 없음","missingTheInformationSamplesINeed","thumb-down"],["번역 문제","translationIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-09-04(UTC)"],[[["\u003cp\u003eNode pools are groups of identically configured nodes within a Kubernetes cluster, all sharing the same \u003ccode\u003eNodePool\u003c/code\u003e specification and Kubernetes node label.\u003c/p\u003e\n"],["\u003cp\u003eYou can create multiple node pools within a cluster, each with different node sizes and types, which is useful for scheduling pods with specific resource requirements.\u003c/p\u003e\n"],["\u003cp\u003eNode pools can be added, deleted, or resized individually without affecting the entire cluster, and any configuration changes apply to all nodes within the pool.\u003c/p\u003e\n"],["\u003cp\u003eManaging node pools requires specific roles: User Cluster Admin (\u003ccode\u003euser-cluster-admin\u003c/code\u003e) and User Cluster Node Viewer (\u003ccode\u003euser-cluster-node-viewer\u003c/code\u003e).\u003c/p\u003e\n"],["\u003cp\u003eDeleting a worker node pool removes the nodes and routes to them, potentially leaving pods unschedulable if their node selectors are not met by other nodes.\u003c/p\u003e\n"]]],[],null,["# Manage node pools\n\nA *node pool* is a group of nodes within a Kubernetes cluster that all have the same\nconfiguration. Node pools use a `NodePool` specification. Each node in the pool\nhas a Kubernetes node label, which has the name of the node pool as its value.\nBy default, all new node pools run the same version of Kubernetes as the control\nplane.\n\nWhen you create a Kubernetes cluster, the number of nodes and type of nodes that you\nspecify create the first node pool of the cluster. You can add additional node\npools of different sizes and types to your cluster. All nodes in any given node\npool are identical to one another.\n\nCustom node pools are useful when scheduling pods that require more resources\nthan others, such as more memory or local disk space. You can use node taints if\nyou need more control over scheduling the pods.\n\nYou can create and delete node pools individually without affecting the whole\ncluster. You cannot configure a single node in a node pool. Any configuration\nchanges affect all nodes in the node pool.\n\nYou can [resize node pools](/distributed-cloud/hosted/docs/latest/gdch/platform-application/pa-ao-operations/cluster#resize-node-pools)\nin a cluster by upscaling or downscaling the pool. Downscaling a node pool is an\nautomated process where you decrease the pool size and the\nGDC system automatically drains and evicts an arbitrary\nnode. You cannot select a specific node to remove when downscaling a node pool.\n\nBefore you begin\n----------------\n\nTo view and manage node pools in a Kubernetes cluster, you must have the following\nroles:\n\n- User Cluster Admin (`user-cluster-admin`)\n- User Cluster Node Viewer (`user-cluster-node-viewer`)\n\nThese roles are not bound to a namespace.\n\nAdd a node pool\n---------------\n\nWhen creating a Kubernetes cluster from the GDC console, you\ncan customize the default node pool and create additional node pools before the\ncluster creation initializes. If you must add a node pool to an existing Kubernetes\ncluster, complete the following steps: \n\n### Console\n\n1. In the navigation menu, select **Kubernetes Engine \\\u003e Clusters**.\n2. Click the cluster from the cluster list. The **Cluster details** page is displayed.\n3. Select **Node pools \\\u003e Add node pool**.\n4. Assign a name for the node pool. You cannot modify the name after you create the node pool.\n5. Specify the number of worker nodes to create in the node pool.\n6. Select your machine class that best suits your workload requirements. The machine classes show in the following settings:\n - Machine type\n - vCPU\n - Memory\n7. Click **Save**.\n\n### API\n\n1. Open the `Cluster` custom resource spec with the `kubectl` CLI using the\n interactive editor:\n\n kubectl edit clusters.cluster.gdc.goog/\u003cvar translate=\"no\"\u003eKUBERNETES_CLUSTER_NAME\u003c/var\u003e -n platform \\\n --kubeconfig \u003cvar translate=\"no\"\u003eMANAGEMENT_API_SERVER\u003c/var\u003e\n\n Replace the following:\n - \u003cvar translate=\"no\"\u003eKUBERNETES_CLUSTER_NAME\u003c/var\u003e: The name of the cluster.\n - \u003cvar translate=\"no\"\u003eMANAGEMENT_API_SERVER\u003c/var\u003e: The zonal API server's kubeconfig path where the Kubernetes cluster is hosted. If you have not yet generated a kubeconfig file for the API server in your targeted zone, see [Sign in](/distributed-cloud/hosted/docs/latest/gdch/platform/pa-user/iam/sign-in#cli) for details.\n2. Add a new entry in the `nodePools` section:\n\n nodePools:\n ...\n - machineTypeName: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eMACHINE_TYPE\u003c/span\u003e\u003c/var\u003e\n name: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eNODE_POOL_NAME\u003c/span\u003e\u003c/var\u003e\n nodeCount: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eNUMBER_OF_WORKER_NODES\u003c/span\u003e\u003c/var\u003e\n taints: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eTAINTS\u003c/span\u003e\u003c/var\u003e\n labels: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eLABELS\u003c/span\u003e\u003c/var\u003e\n acceleratorOptions:\n gpuPartitionScheme: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eGPU_PARTITION_SCHEME\u003c/span\u003e\u003c/var\u003e\n\n Replace the following:\n - \u003cvar translate=\"no\"\u003eMACHINE_TYPE\u003c/var\u003e: The machine type for the worker nodes of the node pool. View the [available machine types](/distributed-cloud/hosted/docs/latest/gdch/platform/pa-user/cluster-node-machines#available-machine-types) for what is available to configure.\n - \u003cvar translate=\"no\"\u003eNODE_POOL_NAME\u003c/var\u003e: The name of the node pool.\n - \u003cvar translate=\"no\"\u003eNUMBER_OF_WORKER_NODES\u003c/var\u003e: The number of worker nodes to provision in the node pool.\n - \u003cvar translate=\"no\"\u003eTAINTS\u003c/var\u003e: The taints to apply to the nodes of this node pool. This is an optional field.\n - \u003cvar translate=\"no\"\u003eLABELS\u003c/var\u003e: The labels to apply to the nodes of this node pool. It contains a list of key-value pairs. This is an optional field.\n - \u003cvar translate=\"no\"\u003eGPU_PARTITION_SCHEME\u003c/var\u003e: The GPU partitioning scheme, if you're running GPU workloads. For example, `mixed-2`. The GPU is not partitioned if this field is not set. For available Multi-Instance GPU (MIG) profiles, see [Supported MIG profiles](/distributed-cloud/hosted/docs/latest/gdch/platform/pa-user/cluster-node-machines#mig-profiles).\n\n | **Note:** You cannot edit node configurations, such as GPU partitioning, after the node pool is created.\n3. Save the file and exit the editor.\n\nView node pools\n---------------\n\nTo view existing node pools in a Kubernetes cluster, complete the following steps: \n\n### Console\n\n1. In the navigation menu, select **Kubernetes Engine \\\u003e Clusters**.\n2. Click the cluster from the cluster list. The **Cluster details** page is displayed.\n3. Select **Node pools**.\n\nThe list of node pools running in the cluster is displayed. You can manage\nthe node pools of the cluster from this page.\n\n### API\n\n- View the node pools of a specific Kubernetes cluster:\n\n kubectl get clusters.cluster.gdc.goog/\u003cvar translate=\"no\"\u003eKUBERNETES_CLUSTER_NAME\u003c/var\u003e -n platform \\\n -o json --kubeconfig \u003cvar translate=\"no\"\u003eMANAGEMENT_API_SERVER\u003c/var\u003e | \\\n jq .status.workerNodePoolStatuses\n\n The output is similar to the following: \n\n [\n {\n \"conditions\": [\n {\n \"lastTransitionTime\": \"2023-08-31T22:16:17Z\",\n \"message\": \"\",\n \"observedGeneration\": 2,\n \"reason\": \"NodepoolReady\",\n \"status\": \"True\",\n \"type\": \"Ready\"\n },\n {\n \"lastTransitionTime\": \"2023-08-31T22:16:17Z\",\n \"message\": \"\",\n \"observedGeneration\": 2,\n \"reason\": \"ReconciliationCompleted\",\n \"status\": \"False\",\n \"type\": \"Reconciling\"\n }\n ],\n \"name\": \"worker-node-pool\",\n \"readyNodes\": 3,\n \"readyTimestamp\": \"2023-08-31T18:59:46Z\",\n \"reconcilingNodes\": 0,\n \"stalledNodes\": 0,\n \"unknownNodes\": 0\n }\n ]\n\nDelete a node pool\n------------------\n\nDeleting a node pool deletes the nodes and routes to them. These nodes evict and\nreschedule any pods running on them. If the pods have specific node selectors,\nthe pods might remain in a non-schedulable condition if no other node in the\ncluster satisfies the criteria.\n| **Important:** Control plane node pools and load balancer node pools are critical to a cluster's function and consequently can't be removed from a cluster. You can only delete worker node pools.\n\nEnsure you have at least three worker nodes before deleting a node pool to\nensure your cluster has enough compute space to run effectively.\n\nTo delete a node pool, complete the following steps: \n\n### Console\n\n1. In the navigation menu, select **Kubernetes Engine \\\u003e Clusters**.\n\n2. Click the cluster that is hosting the node pool you want to delete.\n\n3. Select **Node pools**.\n\n4. Click *delete* **Delete** next to the node\n pool to delete.\n\n### API\n\n1. Open the `Cluster` custom resource spec with the `kubectl` CLI using the\n interactive editor:\n\n kubectl edit clusters.cluster.gdc.goog/\u003cvar translate=\"no\"\u003eKUBERNETES_CLUSTER_NAME\u003c/var\u003e -n platform \\\n --kubeconfig \u003cvar translate=\"no\"\u003eMANAGEMENT_API_SERVER\u003c/var\u003e\n\n Replace the following:\n - \u003cvar translate=\"no\"\u003eKUBERNETES_CLUSTER_NAME\u003c/var\u003e: The name of the cluster.\n - \u003cvar translate=\"no\"\u003eMANAGEMENT_API_SERVER\u003c/var\u003e: The zonal API server's kubeconfig path where the Kubernetes cluster is hosted. If you have not yet generated a kubeconfig file for the API server in your targeted zone, see [Sign in](/distributed-cloud/hosted/docs/latest/gdch/platform/pa-user/iam/sign-in#cli) for details.\n2. Remove the node pool entry from the `nodePools` section. For example, in\n the following snippet, you must remove the `machineTypeName`, `name`, and\n `nodeCount` fields:\n\n nodePools:\n ...\n - machineTypeName: n2-standard-2-gdc\n name: nodepool-1\n nodeCount: 3\n\n Be sure to remove all fields for the node pool you are deleting.\n3. Save the file and exit the editor."]]