

 **このページの改善にご協力ください** 

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「**GitHub でこのページを編集する**」リンクを選択してください。

# kubectl を使用して Karpenter から EKS 自動モードl に移行する
<a name="auto-migrate-karpenter"></a>

このトピックではkubectl を使用してワークロードを Karpenter から Amazon EKS 自動モードl に移行するプロセスについて説明します。移行は段階的に実行できるため、移行を通じてクラスターの安定性とアプリケーションの可用性を維持しながら、ワークロードを自分のペースで移動できます。

以下に説明するステップバイステップのアプローチにより、移行期間中に Karpenter と EKS 自動モードl をサイドバイサイドで実行できます。このデュアルオペレーション戦略により、Karpenter を完全に廃止する前に EKS 自動モードl でワークロードの動作を検証できるため、スムーズな移行が可能になります。アプリケーションは個別またはグループで移行できるため、特定の運用要件とリスク許容度に柔軟に対応できます。

## 前提条件
<a name="_prerequisites"></a>

移行を開始する前に、以下のことを確認してください：
+ Karpenter v1.1 以降がクラスターにインストールされている。詳細についてはKarpenter ドキュメントの「[Upgrading to 1.1.0\+](https://karpenter.sh/docs/upgrading/upgrade-guide/#upgrading-to-110)」を参照してください。
+  `kubectl` がインストールされ、クラスターに接続されている。詳細については「[Amazon EKS を使用するようにセットアップする](setting-up.md)」を参照してください。

このトピックではKarpenter と ノードプールs に精通していることを前提としています。詳細については[Karpenter ドキュメント](https://karpenter.sh/)を参照してください。

## ステップ 1: クラスターで EKS 自動モードl を有効にする
<a name="_step_1_enable_eks_auto_mode_on_the_cluster"></a>

AWS CLI またはマネジメントコンソールを使用して、既存のクラスターで EKS 自動モードl を有効にします。詳細については「[既存のクラスターで EKS Auto Mode を有効にする](auto-enable-existing.md)」を参照してください。

**注記**  
EKS 自動モードl を有効にする際には移行中のこの段階で `general purpose` ノードプールを有効にしないでください。このノードプールは選択的ではありません。  
詳細については「[組み込み NodePool を有効または無効にする](set-builtin-node-pools.md)」を参照してください。

## ステップ 2: テイントが適用された EKS 自動モードl ノードプール を作成する
<a name="_step_2_create_a_tainted_eks_auto_mode_nodepool"></a>

テイントを使用して、EKS 自動モードl 用の新しい ノードプール を作成します。これを行うことで、既存のポッドが新しい EKS 自動モードl ノードで自動的にスケジュールされることはありません。このノードプールはEKS 自動モードl に組み込まれた `default` `NodeClass` を使用します。詳細については「[Amazon EKS のノードクラスを作成する](create-node-class.md)」を参照してください。

テイントが適用されたノードプールの例:

```
apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
  name: eks-auto-mode
spec:
  template:
    spec:
      requirements:
        - key: "eks.amazonaws.com/instance-category"
          operator: In
          values: ["c", "m", "r"]
      nodeClassRef:
        group: eks.amazonaws.com
        kind: NodeClass
        name: default
      taints:
        - key: "eks-auto-mode"
          effect: "NoSchedule"
```

移行元の Karpenter 構成と一致するように、ノード プールの要件を更新します。少なくとも 1 つの要件が必要です。

## ステップ 3: 移行するワークロードを更新する
<a name="_step_3_update_workloads_for_migration"></a>

EKS 自動モードl に移行するワークロードを特定して更新します。これらのワークロードに許容範囲とノードセレクターの両方を追加します：

```
apiVersion: apps/v1
kind: Deployment
spec:
  template:
    spec:
      tolerations:
      - key: "eks-auto-mode"
        effect: "NoSchedule"
      nodeSelector:
        eks.amazonaws.com/compute-type: auto
```

この変更により、新しい EKS 自動モードl ノードでワークロードをスケジュールできます。

EKS 自動モードl は Karpenter とは異なるラベルを使用します。EC2 マネージドインスタンスに関連するラベルは`eks.amazonaws.com` で始まります。詳細については「[EKS 自動モードl 用のノードプールを作成する](create-node-pool.md)」を参照してください。

## ステップ 4: ワークロードを段階的に移行する
<a name="_step_4_gradually_migrate_workloads"></a>

移行するワークロードごとにステップ 3 を繰り返します。この結果、要件とリスク許容度に基づいて、ワークロードを個別またはグループで移動できます。

## ステップ 5: 元の Karpenter ノードプール を削除する
<a name="_step_5_remove_the_original_karpenter_nodepool"></a>

すべてのワークロードを移行したら、元の Karpenter ノードプール を削除できます：

```
kubectl delete nodepool <original-nodepool-name>
```

## ステップ 6: EKS 自動モードl ノードプール からテイントを削除する (任意)
<a name="_step_6_remove_taint_from_eks_auto_mode_nodepool_optional"></a>

EKS 自動モードl を新しいワークロードのデフォルトにする場合はEKS 自動モードl ノードプール からテイントを削除できます：

```
apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
  name: eks-auto-mode
spec:
  template:
    spec:
      nodeClassRef:
        group: eks.amazonaws.com
        kind: NodeClass
        name: default
      # Remove the taints section
```

## ステップ 7: ワークロードからノードセレクターを削除する (任意)
<a name="_step_7_remove_node_selectors_from_workloads_optional"></a>

EKS 自動モードl ノードプール からテイントを削除した場合はEKS 自動モードl がデフォルトになったため、必要に応じてワークロードからノードセレクターを削除できます：

```
apiVersion: apps/v1
kind: Deployment
spec:
  template:
    spec:
      # Remove the nodeSelector section
      tolerations:
      - key: "eks-auto-mode"
        effect: "NoSchedule"
```

## ステップ 8: クラスターから Karpenter をアンインストールする
<a name="_step_8_uninstall_karpenter_from_your_cluster"></a>

Karpenter を削除するステップはインストール方法によって異なります。詳細については「[Karpenter install instructions](https://karpenter.sh/docs/getting-started/getting-started-with-karpenter/#create-a-cluster-and-add-karpenter)」を参照してください。