Amazon EKS
ユーザーガイド

Amazon EKS クラスターの作成

このトピックでは、Amazon EKS クラスターを作成する手順を説明します。

初めて Amazon EKS を作成する場合は、Amazon EKS の使用開始 ガイドを参照することをお勧めします。このガイドには、Amazon EKS クラスターの作成からサンプル Kubernetes アプリケーションのデプロイまで、完全なウォークスルーが含まれます。

このトピックには、次のような前提条件があります。

重要

Amazon EKS クラスターが作成されたら、クラスターを作成する IAM エンティティ (ユーザーまたはロール) は、管理者 (system:master アクセス許可が付与されている) として Kubernetes RBAC 認証テーブルに追加されます。最初は、その IAM ユーザーだけが kubectl を使用して Kubernetes API サーバーを呼び出すことができます。詳細については、「クラスターのユーザーまたは IAM ロールの管理」を参照してください。また、AWS IAM Authenticator for Kubernetes では、AWS SDK for Go を使用して、Amazon EKS クラスターに対して認証を行います。コンソールを使用してクラスターを作成する場合は、クラスター上で kubectl コマンドを実行する際、同じ IAM ユーザー認証情報が AWS SDK 認証情報チェーンにあることを確認する必要があります。

AWS CLI をインストールして設定する場合は、ユーザーの IAM 認証情報を設定できます。この設定は、AWS IAM Authenticator for Kubernetes で行うこともできます。AWS CLI がユーザーに対して適切に設定されている場合は、AWS IAM Authenticator for Kubernetes を使用してこれらの認証情報も検索できます。詳細については、 の「 の設定」を参照してください。

コンソールを使用してクラスターを作成するには

  1. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.

  2. [Create cluster] を選択します。

    注記

    IAM ユーザーに管理者権限がない場合は、Amazon EKS API オペレーションを呼び出すために、そのユーザーのアクセス権限を明示的に追加する必要があります。詳細については、「Amazon EKS IAM ポリシーの作成」を参照してください。

  3. [クラスターを作成] ページで、以下のフィールドに入力し、[作成] を選択します。

    • Cluster name: クラスターの一意の名前。

    • Kubernetes version: クラスターで使用する Kubernetes のバージョン。デフォルトでは、入手可能な最新バージョンが選択されます。

    • ロール ARN: Amazon EKS サービスロールの Amazon リソースネーム (ARN)。詳細については、「Amazon EKS サービス IAM ロール」を参照してください。

    • [VPC]: クラスターに使用する VPC。

    • [Subnets (サブネット)]: クラスターに使用する上記の VPC 内のサブネット。デフォルトでは、上記の VPC の利用可能なサブネットがあらかじめ選択されています。サブネットは Amazon EKS クラスターの要件を満たしている必要があります。詳細については、「クラスター VPC に関する考慮事項」を参照してください。

    • [Security Groups (セキュリティグループ)]: クラスターのクロスアカウントの Elastic Network Interface に適用される上記の VPC 内のセキュリティグループを 1 つ以上指定します (上限は 5 つ)。クラスターおよびワーカーノードのセキュリティグループは Amazon EKS クラスターの要件を満たす必要があります。詳細については、「クラスターセキュリティグループの考慮事項」を参照してください。

      重要

      ワーカーノード AWS CloudFormation テンプレートは、ここで指定するセキュリティグループを変更するため、クラスターコントロールプレーンに専用のセキュリティグループを使用することをお勧めします。他のリソースと共有する場合、これらのリソースへの接続をブロックまたは妨害する可能性があります。

    注記

    リクエスト内のアベイラビリティーゾーンのいずれかに、Amazon EKS クラスターを作成するのに十分なキャパシティーがないというエラーが表示される場合があります。この場合、エラー出力には、新しいクラスターをサポートできるアベイラビリティーゾーンが含まれます。アカウント向けにサポートされているアベイラビリティーゾーンにある 2 つ以上のサブネットを使用して、クラスターを作成します。

  4. [クラスター] ページで、新しく作成したクラスターの名前を選択してクラスター情報を表示します。

  5. クラスターのプロビジョニングプロセスが完了するまで、[状況] フィールドには [作成中] と表示されます。クラスターのプロビジョニングが完了したら (通常 10 分未満)、[API サーバーエンドポイント] および [認証機関] 値を書き留めます。これらは、kubectl 設定で使用されます。

  6. クラスターを作成したら、aws-iam-authenticator のインストール および kubeconfig を Amazon EKS 用に作成します。 の手順に従って、新しいクラスターとの通信を有効にします。

AWS CLI を使用してクラスターを作成するには

  1. 次のコマンドを使用して、クラスターを作成します。「Amazon EKS サービスロールを作成する」で作成したクラスター名、Amazon EKS サービスロールの Amazon リソースネーム (ARN)、および 「Amazon EKS クラスター VPC を作成する」で作成した VPC のサブネットおよびセキュリティグループ ID を置き換えます。

    aws eks create-cluster --name devel --role-arn arn:aws:iam::111122223333:role/eks-service-role-AWSServiceRoleForAmazonEKS-EXAMPLEBKZRQR --resources-vpc-config subnetIds=subnet-a9189fe2,subnet-50432629,securityGroupIds=sg-f5c54184

    重要

    次のような構文エラーが表示された場合は、プレビューバージョンの Amazon EKS 用 AWS CLI を使用している可能性があります。Amazon EKS コマンドの多くの構文は、パブリックサービスの公開後に変更されています。AWS CLI バージョンを利用可能な最新のものに更新し、必ず ~/.aws/models/eks のカスタムサービスモデルディレクトリを削除してください。

    aws: error: argument --cluster-name is required

    注記

    IAM ユーザーに管理者権限がない場合は、Amazon EKS API オペレーションを呼び出すために、そのユーザーのアクセス権限を明示的に追加する必要があります。詳細については、「Amazon EKS IAM ポリシーの作成」を参照してください。

    出力:

    { "cluster": { "name": "devel", "arn": "arn:aws:eks:us-west-2:111122223333:cluster/devel", "createdAt": 1527785885.159, "version": "1.10", "roleArn": "arn:aws:iam::111122223333:role/eks-service-role-AWSServiceRoleForAmazonEKS-AFNL4H8HB71F", "resourcesVpcConfig": { "subnetIds": [ "subnet-a9189fe2", "subnet-50432629" ], "securityGroupIds": [ "sg-f5c54184" ], "vpcId": "vpc-a54041dc" }, "status": "CREATING", "certificateAuthority": {} } }

    注記

    リクエスト内のアベイラビリティーゾーンのいずれかに、Amazon EKS クラスターを作成するのに十分なキャパシティーがないというエラーが表示される場合があります。この場合、エラー出力には、新しいクラスターをサポートできるアベイラビリティーゾーンが含まれます。アカウント向けにサポートされているアベイラビリティーゾーンにある 2 つ以上のサブネットを使用して、クラスターを作成します。

  2. クラスターのプロビジョニングは、通常 10 分未満で行われます。クラスターのステータスのクエリを実行するには、次のコマンドを使用します。クラスターステータスが ACTIVE の場合は、続行できます。

    aws eks describe-cluster --name devel --query cluster.status
  3. クラスターのプロビジョニングが完了したら、次のコマンドを使用して endpoint および certificateAuthority.data を取得します。これらの情報は、kubectl 設定に追加する必要があります。これにより、クラスターと通信できるようになります。

    1. endpoint の取得

      aws eks describe-cluster --name devel --query cluster.endpoint --output text
    2. certificateAuthority.data の取得

      aws eks describe-cluster --name devel --query cluster.certificateAuthority.data --output text
  4. クラスターを作成したら、aws-iam-authenticator のインストール および kubeconfig を Amazon EKS 用に作成します。 の手順に従って、新しいクラスターとの通信を有効にします。