

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# NodePool 생성
<a name="sagemaker-hyperpod-eks-autoscaling-nodepool"></a>

`NodePool`은 Karpenter에서 생성할 수 있는 노드와 해당 노드에서 실행할 수 있는 포드에 대한 제약 조건을 설정합니다. 다음과 같은 작업을 수행하도록 `NodePool`을 구성할 수 있습니다.
+ 노드 생성을 특정 영역, 인스턴스 유형 및 컴퓨터 아키텍처로 제한합니다.
+ 레이블 또는 테인트를 정의하여 Karpenter가 생성하는 노드에서 실행할 수 있는 포드를 제한합니다.

**참고**  
HyperPod 제공업체는 아래에 설명된 잘 알려진 Kubernetes 및 Karpenter 요구 사항의 제한된 세트를 지원합니다.

다음 단계에서는 `NodePool`을 생성하는 방법을 다룹니다.

1. 원하는 `NodePool` 구성으로 nodepool.yaml이라는 YAML 파일을 생성합니다.

1. 아래 샘플 구성을 사용할 수 있습니다.

   모든 종속 리소스가 제대로 작동하고 있는지 보려면 `Conditions` 아래에서 `Ready`를 확인합니다.

   ```
   apiVersion: karpenter.sh/v1
   kind: NodePool
   metadata:
    name: sample-np
   spec:
    template:
      spec:
        nodeClassRef:
         group: karpenter.sagemaker.amazonaws.com
         kind: HyperpodNodeClass
         name: multiazc5
        expireAfter: Never
        requirements:
           - key: node.kubernetes.io/instance-type
             operator: Exists
   ```

1. 클러스터에 `NodePool`을 적용합니다.

   ```
   kubectl apply -f nodepool.yaml
   ```

1. `NodePool` 상태를 모니터링하여 상태의 `Ready` 조건이 `True`로 설정되어 있는지 확인합니다.

   ```
   kubectl get nodepool sample-np -oyaml
   ```

   ```
   apiVersion: karpenter.sh/v1
   kind: NodePool
   metadata:
     name: <nodepool-name>
     uid: <resource-uid>
     ...
   spec:
     disruption:
       budgets:
       - nodes: 90%
       consolidateAfter: 0s
       consolidationPolicy: WhenEmptyOrUnderutilized
     template:
       spec:
         expireAfter: 720h
         nodeClassRef:
           group: karpenter.sagemaker.amazonaws.com
           kind: HyperpodNodeClass
           name: <nodeclass-name>
         requirements:
         - key: node.kubernetes.io/instance-type
           operator: Exists
   status:
     conditions:
     - lastTransitionTime: "<timestamp>"
       message: ""
       observedGeneration: 2
       reason: ValidationSucceeded
       status: "True"
       type: ValidationSucceeded
     - lastTransitionTime: "<timestamp>"
       message: ""
       observedGeneration: 2
       reason: NodeClassReady
       status: "True"
       type: NodeClassReady
     - lastTransitionTime: "<timestamp>"
       message: ""
       observedGeneration: 2
       reason: Ready
       status: "True"
       type: Ready
   ```

**Karpenter HyperPod 제공업체에 지원되는 레이블**

다음은 `NodePool` 구성에서 지정할 수 있는 선택적 제약 조건 및 요구 사항입니다.


|  요구 사항 유형  |  용도  |  사용 사례/지원되는 값  |  권장 사항  | 
| --- | --- | --- | --- | 
|  인스턴스 유형(`node.kubernetes.io/instance-type`)  |  Karpenter가 선택할 수 있는 SageMaker 인스턴스 유형 제어  |  ml.c5.xlarge로만 제한하는 대신 Karpenter가 인스턴스 그룹의 사용 가능한 모든 유형 중에서 선택하도록 합니다.  |  이 항목을 정의하지 않은 상태로 두거나 Exists 운영자를 사용하여 Karpenter가 비용 효과적인 인스턴스 유형을 선택할 수 있는 유연성을 극대화합니다.  | 
|  가용 영역(`topology.kubernetes.io/zone`)  |  에서 생성할 수 있는 AWS 가용 영역 노드 제어  |  us-east-1c와 같은 특정 영역 이름입니다. 지연 시간 또는 규정 준수 이유로 특정 영역에서 실행하는 데 포드가 필요한 경우 사용합니다.  | 해당 사항 없음 | 
|  아키텍처(`kubernetes.io/arch`)  |  CPU 아키텍처 지정  |  amd64만 해당(현재 ARM 지원되지 않음)합니다.  |  해당 사항 없음  | 