

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

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

# Amazon EKS Auto Mode クラスターにサンプルの拡張ワークロードをデプロイする
<a name="automode-workload"></a>

このチュートリアルでは、サンプルワークロードを EKS Auto Mode クラスターにデプロイする方法と、必要なコンピューティングリソースがどのように自動的にプロビジョニングされるか説明します。`kubectl` コマンドを使用してクラスターの動作を監視し、Auto Mode により AWS での Kubernetes オペレーションがどのように簡素化されるかを直接確認します。このチュートリアルを終了すると、基盤となるコンピューティングリソースを自動的に管理することで、ノードグループを手動で設定する必要なく、EKS Auto Mode がワークロードのデプロイにどのように対応するかがわかります。

## 前提条件
<a name="_prerequisites"></a>
+ Amazon EKS Auto Mode クラスター。クラスターの名前と AWS リージョンをメモします。
+ ネットワーキング、コンピューティング、および EKS リソースを管理するのに十分なアクセス許可を持つ、ユーザーやロールなどの IAM プリンシパル。
  + 詳細については、「IAM ユーザーガイド」の「[Creating roles and attaching policies in the IAM User Guide](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions_create-policies.html)」を参照してください。
+  IAM ID で `aws` CLI がインストールおよび設定されている。
+  `kubectl` CLI がインストールされ、クラスターに接続されている。
  + 詳細については、「[Amazon EKS を使用するようにセットアップする](setting-up.md)」を参照してください。

## ステップ 1: 既存のコンピューティングリソースを確認する (任意)
<a name="_step_1_review_existing_compute_resources_optional"></a>

まず、`kubectl` を使用してクラスターのノードプールを一覧表示します。

```
kubectl get nodepools
```

サンプル出力:

```
general-purpose
```

このチュートリアルでは、`general-purpose` ノードプールを使用するように設定されたワークロードをデプロイします。このノードプールは EKS Auto Mode に組み込まれ、マイクロサービスやウェブアプリケーションなどの一般的なワークロードに適したデフォルトが含まれます。独自のノードプールを作成できます。詳細については、「[EKS 自動モードl 用のノードプールを作成する](create-node-pool.md)」を参照してください。

次に、`kubectl` を使用してクラスターに接続されているノードを一覧表示します。

```
kubectl get nodes
```

EKS Auto Mode クラスターを作成したばかりの場合は、ノードはありません。

このチュートリアルでは、サンプルワークロードをデプロイします。ノードがない場合、またはワークロードが既存のノードに収まらない場合、EKS Auto Mode は新しいノードをプロビジョニングします。

## ステップ 2: サンプルアプリケーションをクラスターにデプロイする
<a name="_step_2_deploy_a_sample_application_to_the_cluster"></a>

次の Kubernetes デプロイを確認し、`inflate.yaml` として保存します 

```
apiVersion: apps/v1
kind: Deployment
metadata:
  name: inflate
spec:
  replicas: 1
  selector:
    matchLabels:
      app: inflate
  template:
    metadata:
      labels:
        app: inflate
    spec:
      terminationGracePeriodSeconds: 0
      nodeSelector:
        eks.amazonaws.com/compute-type: auto
      securityContext:
        runAsUser: 1000
        runAsGroup: 3000
        fsGroup: 2000
      containers:
        - name: inflate
          image: public.ecr.aws/eks-distro/kubernetes/pause:3.7
          resources:
            requests:
              cpu: 1
          securityContext:
            allowPrivilegeEscalation: false
```

`eks.amazonaws.com/compute-type: auto` セレクターでは、ワークロードを Amazon EKS Auto Mode ノードにデプロイする必要があることに注意してください。

デプロイをクラスターに適用します。

```
kubectl apply -f inflate.yaml
```

## ステップ 3: Kubernetes イベントを監視する
<a name="_step_3_watch_kubernetes_events"></a>

次のコマンドを使用して、新しいノードの作成などの Kubernetes イベントを監視します。`ctrl+c` を使用してイベントの監視を停止します。

```
kubectl get events -w --sort-by '.lastTimestamp'
```

`kubectl` を使用して、クラスターに接続されているノードを再度一覧表示します。新しく作成されたノードをメモします。

```
kubectl get nodes
```

## ステップ 4: AWS コンソールでノードとインスタンスを表示する
<a name="step_4_view_nodes_and_instances_in_the_shared_aws_console"></a>

EKS Auto Mode ノードは EKS コンソールで表示でき、関連付けられた EC2 インスタンスは EC2 コンソールで表示できます。

EKS Auto Mode によってデプロイされた EC2 インスタンスは制限されています。EKS Auto Mode ノードで任意のコマンドを実行することはできません。

## ステップ 5: デプロイを削除する
<a name="_step_5_delete_the_deployment"></a>

`kubectl` を使用してサンプルデプロイを削除します

```
kubectl delete -f inflate.yaml
```

クラスターに他のワークロードがデプロイされていない場合、EKS Auto Mode によって作成されたノードは空になります。

デフォルト設定では、EKS Auto Mode は空のノードを 30 秒間検出し、そのノードを終了します。

`kubectl` または EC2 コンソールを使用して、関連付けられたインスタンスが削除されたことを確認します。