

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

# クラスターの作成と管理
<a name="creating-and-managing-clusters"></a>

このトピックでは、Eksctl を使用して EKS クラスターを作成および削除する方法について説明します。クラスターを作成するには、CLI コマンドを使用するか、クラスター設定 YAML ファイルを作成します。

## シンプルなクラスターの作成
<a name="_creating_a_simple_cluster"></a>

次のコマンドを使用して、シンプルなクラスターを作成します。

```
eksctl create cluster
```

これにより、2 つの m5.large ノードを含む 1 つのマネージド型ノードグループを使用して、デフォルトのリージョン (AWS CLI 設定で指定) に EKS クラスターが作成されます。

eksctl は、設定ファイルが使用されていないときに、デフォルトでマネージド型ノードグループを作成するようになりました。セルフマネージド型ノードグループを作成するには、 `eksctl create cluster`または `--managed=false`に渡します`eksctl create nodegroup`。

### 考慮事項
<a name="_considerations"></a>
+ でクラスターを作成するときに`us-east-1`、 が発生することがあります`UnsupportedAvailabilityZoneException`。この場合、提案されたゾーンをコピーし、 `--zones`フラグを渡します。例: `eksctl create cluster --region=us-east-1 --zones=us-east-1a,us-east-1b,us-east-1d`。この問題は他のリージョンで発生する可能性がありますが、あまり一般的ではありません。ほとんどの場合、 `--zone`フラグを使用する必要はありません。

## 設定ファイルを使用してクラスターを作成する
<a name="_create_cluster_using_config_file"></a>

フラグの代わりに設定ファイルを使用してクラスターを作成できます。

まず、 `cluster.yaml` ファイルを作成します。

```
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: basic-cluster
  region: eu-north-1

nodeGroups:
  - name: ng-1
    instanceType: m5.large
    desiredCapacity: 10
    volumeSize: 80
    ssh:
      allow: true # will use ~/.ssh/id_rsa.pub as the default ssh key
  - name: ng-2
    instanceType: m5.xlarge
    desiredCapacity: 2
    volumeSize: 100
    ssh:
      publicKeyPath: ~/.ssh/ec2_id_rsa.pub
```

次に、次のコマンドを実行します。

```
eksctl create cluster -f cluster.yaml
```

これにより、説明に従ってクラスターが作成されます。

既存の VPC を使用する必要がある場合は、次のような設定ファイルを使用できます。

```
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: cluster-in-existing-vpc
  region: eu-north-1

vpc:
  subnets:
    private:
      eu-north-1a: { id: subnet-0ff156e0c4a6d300c }
      eu-north-1b: { id: subnet-0549cdab573695c03 }
      eu-north-1c: { id: subnet-0426fb4a607393184 }

nodeGroups:
  - name: ng-1-workers
    labels: { role: workers }
    instanceType: m5.xlarge
    desiredCapacity: 10
    privateNetworking: true
  - name: ng-2-builders
    labels: { role: builders }
    instanceType: m5.2xlarge
    desiredCapacity: 2
    privateNetworking: true
    iam:
      withAddonPolicies:
        imageBuilder: true
```

クラスター名またはノードグループ名には、英数字 (大文字と小文字を区別) とハイフンのみを含める必要があります。アルファベット文字で始まり、128 文字を超えることはできません。そうしないと、検証エラーが発生します。詳細については、AWS [ CloudFormation コンソールからスタックを作成する](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-using-console-create-stack-parameters.html)」を参照してください。 CLoudFormation 

## 新しいクラスターの kubeconfig を更新する
<a name="_update_kubeconfig_for_new_cluster"></a>

クラスターが作成されると、適切な kubernetes 設定が kubeconfig ファイルに追加されます。これは、環境変数または`KUBECONFIG``~/.kube/config`デフォルトで設定したファイルです。kubeconfig ファイルへのパスは、 `--kubeconfig`フラグを使用して上書きできます。

kubeconfig ファイルの書き込み方法を変更できるその他のフラグ:


| フラグ | 型 | ファイル | デフォルト値 | 
| --- | --- | --- | --- | 
| --kubeconfig | string | kubeconfig を書き込むパス (--auto-kubeconfig と互換性がありません) | $KUBECONFIG または \~/.kube/config | 
| --set-kubeconfig-context | ブール | true の場合、現在のコンテキストは kubeconfig で設定されます。コンテキストがすでに設定されている場合、上書きされます。 | true | 
| --auto-kubeconfig | ブール | kubeconfig ファイルをクラスター名で保存する | true | 
| --write-kubeconfig | ブール | kubeconfig の書き込みを切り替える | true | 

## クラスターの削除
<a name="_delete_cluster"></a>

このクラスターを削除するには、以下を実行します。

```
eksctl delete cluster -f cluster.yaml
```

**警告**  
削除エラーが適切に報告されるようにするには、削除オペレーションで `--wait`フラグを使用します。

`--wait` フラグがない場合、eksctl はクラスターの CloudFormation スタックにのみ削除オペレーションを発行し、削除を待機しません。場合によっては、クラスターまたはその VPC を使用する AWS リソースによって、クラスターの削除が失敗することがあります。削除が失敗した場合、または待機フラグを忘れた場合は、CloudFormation GUI に移動し、そこから eks スタックを削除する必要があります。

**警告**  
PDB ポリシーは、クラスターの削除中にノードの削除をブロックすることがあります。

ノードグループを使用してクラスターを削除すると、Pod Disruption Budget (PDB) ポリシーによってノードが正常に削除されない可能性があります。たとえば、 `aws-ebs-csi-driver`がインストールされているクラスターには通常、PDB ポリシーを持つ 2 つのポッドがあり、一度に 1 つのポッドしか使用できないため、削除中に他のポッドを削除できなくなります。これらのシナリオでクラスターを正常に削除するには、 `disable-nodegroup-eviction`フラグを使用して PDB ポリシーチェックをバイパスします。

```
eksctl delete cluster -f cluster.yaml --disable-nodegroup-eviction
```

その他のサンプル設定ファイルについては、eksctl GitHub リポジトリの [https://github.com/eksctl-io/eksctl/tree/master/examples](https://github.com/eksctl-io/eksctl/tree/master/examples) ディレクトリを参照してください。

## ドライラン
<a name="_dry_run"></a>

ドライラン機能を使用すると、クラスターの作成をスキップする ClusterConfig ファイルを生成し、提供された CLI オプションを表し、eksctl によって設定されたデフォルト値を含む ClusterConfig ファイルを出力できます。

詳細については、[「ドライラン](dry-run.md)」ページを参照してください。