

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ノードプール を作成する
<a name="sagemaker-hyperpod-eks-autoscaling-nodepool"></a>

`NodePool` は、Karpenter が作成できるノードと、それらのノードで実行できるポッドに制約を設定します。`NodePool` は、以下のとおりに設定できます。
+ ノードの作成を特定のゾーン、インスタンスタイプ、コンピュータアーキテクチャに制限します。
+ Karpenter が作成するノードで実行できるポッドを制限するラベルまたはテイントを定義します。

**注記**  
HyperPod プロバイダーは、以下で説明する既知の Kubernetes および Karpenter 要件の限定されたセットをサポートしています。

以下の手順は、`NodePool` を作成する方法を説明しています。

1. 必要な `NodePool` 設定で、nodepool.yaml という名前の YAML ファイルを作成します。

1. 以下のサンプル設定を使用できます。

   すべての依存リソースが適切に機能していることを示す `Ready` を `Conditions` で探します。

   ```
   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 サポートなし）  |  該当なし  | 