Amazon EKS
ユーザーガイド

AWS マネジメントコンソール の開始方法

この入門ガイドは、AWS マネジメントコンソール での Amazon EKS の開始に必要なすべてのリソースを作成するのに役立ちます。このガイドでは、Amazon EKS または AWS CloudFormation コンソールで各リソースを手動で作成します。ここで説明するワークフローを使用すると、どのように各リソースが作成されて相互に通信するかを視覚的に把握できます。

よりシンプルで自動化された開始方法については、「eksctl の開始方法」を参照してください。

Amazon EKS の前提条件

Amazon EKS クラスターを作成する前に、Kubernetes が AWS リソースを作成するための IAM ロールを作成する必要があります。たとえば、ロードバランサーが作成されると、Kubernetes は、アカウントで Elastic Load Balancing ロードバランサーを作成するための Kubernetes ロールを引き受けます。この操作は 1 回のみ行う必要があり、複数の EKS クラスターに使用できます。

また、使用するクラスター用の VPC とセキュリティグループを作成する必要があります。VPC グループとセキュリティグループは複数の EKS クラスターで使用できますが、各 EKS クラスターに別々の VPC を使用して、ネットワークを分離することをお勧めします。

このセクションでは、kubectl バイナリをインストールし、Amazon EKS を使用するために設定する方法についても説明します。

Amazon EKS サービスロールを作成する

IAM コンソールで Amazon EKS サービスロールを作成する

  1. https://console.aws.amazon.com/iam/ にある IAM コンソールを開きます。

  2. [Roles] を選択してから [Create role] を選びます。

  3. サービスのリストから [EKS] を選択し、ユースケースの [Allows Amazon EKS to manage your clusters on your behalf (Amazon EKS によるクラスターの管理を許可)] を選択したら、[Next: Permissions (次へ: アクセス許可)] を選択します。

  4. [Next: Tags (次の手順: タグ)] を選択します。

  5. (オプション) タグをキーと値のペアとしてアタッチして、メタデータをロールに追加します。IAM でのタグの使用の詳細については、『IAM ユーザーガイド』の IAM エンティティのタグ付けを参照してください。

  6. [Next: Review] を選択します。

  7. [Role name (ロール名)] に、ロールの一意の名前 (例: eksServiceRole) を入力し、[ロールの作成] を選択します。

Amazon EKS クラスター VPC を作成する

このセクションでは、3 つのパブリックサブネット、または 2 つのパブリックサブネットと 2 つのプライベートサブネットを持つ VPC の作成を案内します。この VPC では、NAT ゲートウェイを介したインターネットアクセスが可能です。ワーカーノード用のプライベートサブネットと Kubernetes 用のパブリックサブネットを使用して、パブリックのロードバランサーを作成するネットワークアーキテクチャをお勧めします。

目的の VPC 設定を表すタブを下で選択します。

Only public subnetsPublic and private subnets
Only public subnets

パブリックサブネットのみを持つクラスター VPC を作成するには

  1. https://console.aws.amazon.com/cloudformation で AWS CloudFormation コンソールを開きます。

  2. ナビゲーションバーで、Amazon EKS をサポートするリージョンを選択します。

  3. [スタックの作成] を選択します。

  4. [Choose a template (テンプレートの選択)] で、[Specify an Amazon S3 template URL (Amazon S3 テンプレート URL の指定)] を選択します。

  5. 以下の URL をテキストエリアに貼り付けて、[次へ] を選択します。

    https://amazon-eks.s3-us-west-2.amazonaws.com/cloudformation/2019-09-27/amazon-eks-vpc-sample.yaml
  6. [詳細の指定] ページで、必要に応じてパラメータを指定し、[次へ] を選択します。

    • Stack name: AWS CloudFormation スタックのスタック名を選択します。たとえば、[eks-vpc] に呼び出します。

    • VpcBlock: VPC の CIDR 範囲を選択します。デフォルト値をそのまま使用できます。

    • Subnet01Block: サブネット 1 の CIDR 範囲を指定します。ポッドで数多くの IP アドレスを使用できるよう、デフォルト値のままにしておくことをお勧めします。

    • Subnet02Block: サブネット 2 の CIDR 範囲を指定します。ポッドで数多くの IP アドレスを使用できるよう、デフォルト値のままにしておくことをお勧めします。

    • Subnet03Block: サブネット 3 の CIDR 範囲を指定します。ポッドで数多くの IP アドレスを使用できるよう、デフォルト値のままにしておくことをお勧めします。

  7. (オプション) [オプション] ページで、スタックリソースをタグ付けします。[次へ] を選択します。

  8. [Review] ページで、[Create ] を選択します。

  9. スタックが作成されたら、コンソールで選択し、[出力] を選択します。

  10. 作成されたセキュリティグループの [SecurityGroups] 値を記録します。これは、EKS クラスターを作成するときに必要です。このセキュリティグループは、Amazon EKS コントロールプレーンがワーカーノードと通信できるようにサブネット内に作成されたクロスアカウントの Elastic Network Interfaces に適用されます。

  11. 作成された VPC の [VpcId] を記録します。これは、ワーカーノードグループテンプレートを起動する際に必要になります。

  12. 作成されたサブネットの [SubnetIds] を記録します。これは、EKS クラスターを作成するときに必要です。これらは、ワーカーノードが起動するサブネットです。

Public and private subnets

パブリックサブネットとプライベートサブネットを持つクラスター VPC を作成するには

  1. https://console.aws.amazon.com/cloudformation で AWS CloudFormation コンソールを開きます。

  2. ナビゲーションバーで、Amazon EKS をサポートするリージョンを選択します。

  3. [スタックの作成] を選択します。

  4. [Choose a template (テンプレートの選択)] で、[Specify an Amazon S3 template URL (Amazon S3 テンプレート URL の指定)] を選択します。

  5. 以下の URL をテキストエリアに貼り付けて、[次へ] を選択します。

    https://amazon-eks.s3-us-west-2.amazonaws.com/cloudformation/2019-09-27/amazon-eks-vpc-private-subnets.yaml
  6. [詳細の指定] ページで、必要に応じてパラメータを指定し、[次へ] を選択します。

    • Stack name: AWS CloudFormation スタックのスタック名を選択します。たとえば、[eks-vpc] に呼び出します。

    • VpcBlock: VPC の CIDR 範囲を選択します。デフォルト値をそのまま使用できます。

    • PublicSubnet01Block: パブリックサブネット 1 の CIDR 範囲を指定します。ポッドで数多くの IP アドレスを使用できるよう、デフォルト値のままにしておくことをお勧めします。

    • PublicSubnet02Block: パブリックサブネット 2 の CIDR 範囲を指定します。ポッドで数多くの IP アドレスを使用できるよう、デフォルト値のままにしておくことをお勧めします。

    • PrivateSubnet01Block: プライベートサブネット 1 の CIDR 範囲を指定します。ポッドで数多くの IP アドレスを使用できるよう、デフォルト値のままにしておくことをお勧めします。

    • PrivateSubnet02Block: プライベートサブネット 2 の CIDR 範囲を指定します。ポッドで数多くの IP アドレスを使用できるよう、デフォルト値のままにしておくことをお勧めします。

  7. (オプション) [オプション] ページで、スタックリソースをタグ付けします。[次へ] を選択します。

  8. [Review] ページで、[Create ] を選択します。

  9. スタックが作成されたら、コンソールで選択し、[出力] を選択します。

  10. 作成されたセキュリティグループの [SecurityGroups] 値を記録します。これは、EKS クラスターを作成するときに必要です。このセキュリティグループは、Amazon EKS コントロールプレーンがワーカーノードと通信できるようにサブネット内に作成されたクロスアカウントの Elastic Network Interfaces に適用されます。

  11. 作成された VPC の [VpcId] を記録します。これは、ワーカーノードグループテンプレートを起動する際に必要になります。

  12. 作成されたサブネットの [SubnetIds] を記録します。これは、EKS クラスターを作成するときに必要です。これらは、ワーカーノードが起動するサブネットです。

  13. Kubernetes で内部ロードバランサーに使用できるよう、プライベートサブネットにタグ付ける必要があります。

    1. https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。

    2. 左側のナビゲーションで、[サブネット] を選択します。

    3. Amazon EKS クラスターの VPC のプライベートサブネットの 1 つを選択し (文字列 PrivateSubnet を使用して絞り込むことができます)、[タグ] タブを選択して、[Add/Edit Tags (タグの追加/編集)] を選択します。

    4. [タグの作成] を選択し、次のキーと値を追加して、[保存] を選択します。

      キー

      kubernetes.io/role/internal-elb

      1

    5. VPC 内のプライベートサブネットごとに、以下のサブステップを繰り返します。

Amazon EKS の kubectl をインストールして設定する

Kubernetes では、クラスター API サーバーとの通信に kubectl というコマンドラインユーティリティを使用します。

kubectl を Amazon EKS にインストールするには

  • オペレーティングシステムに kubectl をダウンロードしてインストールするには、複数のオプションがあります。

    • kubectl バイナリは、多数のオペレーティングシステムのパッケージで利用できます。このオプションは多くの場合、手動のダウンロードおよびインストールプロセスよりはるかに簡単です。Kubernetes のドキュメントにある個別のオペレーティングシステムやパッケージマネージャー用の手順に従えばインストールできます。

    • Amazon EKS では、同じバージョンのアップストリーム kubectl バイナリと同一の使用できる kubectl バイナリ が発行されています。Amazon EKS が発行したお使いのオペレーティングシステム用のバイナリをインストールするには、「kubectl のインストール」を参照してください。

最新の AWS CLI をインストールする

Amazon EKS クラスターで kubectl を使用するには、クラスター API サーバー通信に必要なクライアントセキュリティトークンを作成できるバイナリをインストールする必要があります。AWS CLI のバージョン 1.16.232 以上で使用可能な aws eks get-token コマンドは、クライアントセキュリティトークンの作成をサポートしています。AWS CLI をインストールまたはアップグレードするには、AWS Command Line Interface ユーザーガイド の「AWS コマンドラインインターフェイスのインストール」を参照してください。

重要

yumapt-get、または macOS の Homebrew は、AWS CLI より数バージョン遅れることがあります。最新バージョンを確実に入手するには、AWS Command Line Interface ユーザーガイド の 「AWS コマンドラインインターフェイスのインストール」を参照してください。

AWS CLI のバージョンは、以下のコマンドを使用して確認できます。

aws --version

注記

システムの Python のバージョンは 2.7.9 以上であることが必要です。そうでない場合は、AWS CLI で Amazon EKS を呼び出すと hostname doesn't match エラーが発生します。詳細については、Python Requests FAQ の「What are "hostname doesn't match" errors?」 を参照してください。

システムにバージョン 1.16.232 以上の AWS CLI をインストールできない場合は、AWS IAM Authenticator for Kubernetes がシステムにインストールされていることを確認する必要があります。詳細については、「aws-iam-authenticator のインストール」を参照してください。

ステップ 1: Amazon EKS クラスターを作成する

Amazon EKS クラスターを作成できるようになりました。

重要

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

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

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

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

  2. [クラスターの作成] を選択します。

    注記

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

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

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

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

    • Role ARN (ロールの ARN): 「Amazon EKS サービスロールを作成する」で作成した IAM ロールを選択します。

    • VPC: 「Amazon EKS クラスター VPC を作成する」で作成した VPC。ドロップダウンリストで VPC の名前を検索できます。

    • Subnets (サブネット): 「Amazon EKS クラスター VPC を作成する」で生成した AWS CloudFormation 出力の「SubnetId」の値 (カンマ区切り)。クラスターのリソースをホストするすべてのサブネットを指定します (ワーカーノード用のプライベートサブネットやロードバランサー用のパブリックサブネットなど)。デフォルトでは、前のフィールドで指定した VPC 内の利用可能なサブネットがあらかじめ選択されています。

    • Security Groups (セキュリティグループ): 「Amazon EKS クラスター VPC を作成する」で生成した AWS CloudFormation 出力の [SecurityGroups] 値。このセキュリティグループのドロップダウン名は [ControlPlaneSecurityGroup] です。

      重要

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

    • Endpoint private access (エンドポイントへのプライベートアクセス): クラスターの Kubernetes API サーバーエンドポイントに対するプライベートアクセスを有効にするか無効にするかを選択します。プライベートアクセスを有効にした場合、クラスターの VPC 内から送信される Kubernetes API リクエストは、プライベート VPC エンドポイントを使用します。詳細については、「Amazon EKS クラスターエンドポイントのアクセスコントロール」を参照してください。

    • Endpoint public access (エンドポイントへのパブリックアクセス): クラスターの Kubernetes API サーバーエンドポイントに対するパブリックアクセスを有効にするか無効にするかを選択します。パブリックアクセスを無効にすると、クラスターの Kubernetes API サーバーはクラスター VPC 内からのみリクエストを受信できます。詳細については、「Amazon EKS クラスターエンドポイントのアクセスコントロール」を参照してください。

    • ログ記録 – ログタイプごとに、そのログタイプを [有効] にするか [無効] にするかを選択します。各ログタイプは、デフォルトで [無効] になっています。詳細については、「Amazon EKS コントロールプレーンのログ記録」を参照してください。

    • [タグ] –(オプション)クラスターにタグを追加します。詳細については、「Amazon EKS リソースにタグを付ける」を参照してください。

    注記

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

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

  5. クラスターのプロビジョニングプロセスが完了するまで、[状況] フィールドには [作成中] と表示されます。クラスターのプロビジョニングには通常、10 ~ 15 分かかります。

ステップ 2: kubeconfig ファイルを作成する

このセクションでは、クラスターの kubeconfig ファイルを AWS CLI update-kubeconfig コマンドを使って作成します。AWS CLI をインストールしない場合、または kubeconfig を手作業で作成または更新する場合は、「kubeconfig を Amazon EKS 用に作成します。」を参照してください。

kubeconfig ファイルを AWS CLI で作成するには

  1. 1.16.232 以上の AWS CLI がインストールされていることを確認します。AWS CLI をインストールまたはアップグレードするには、AWS Command Line Interface ユーザーガイド の「AWS コマンドラインインターフェイスのインストール」を参照してください。

    注記

    システムの Python のバージョンは 2.7.9 以上であることが必要です。そうでない場合は、AWS CLI で Amazon EKS を呼び出すと hostname doesn't match エラーが発生します。詳細については、Python Requests FAQ の「What are "hostname doesn't match" errors?」 を参照してください。

    AWS CLI のバージョンは、以下のコマンドを使用して確認できます。

    aws --version

    重要

    yumapt-get、または macOS の Homebrew は、AWS CLI より数バージョン遅れることがあります。最新バージョンを確実に入手するには、AWS Command Line Interface ユーザーガイド の 「AWS コマンドラインインターフェイスのインストール」を参照してください。

  2. クラスターの kubeconfig を作成または更新するには、AWS CLI update-kubeconfig コマンドを使用します。

    • デフォルトでは、最終的な設定ファイルは、ホームディレクトリのデフォルト kubeconfig パス (.kube/config) に作成されるか、その場所で既存 kubeconfig とマージされます。別のパスは --kubeconfig オプションを使用して指定できます。

    • kubectl コマンドを実行するときに、認証に使用する --role-arn オプションを指定して IAM ロール ARN を指定できます。それ以外の場合は、デフォルトの AWS CLI または SDK の認証情報チェーン の中の IAM エンティティが使用されます。デフォルトの AWS CLI または SDK の ID を表示するには、 aws sts get-caller-identity コマンドを実行します。

    • 詳細については、aws eks update-kubeconfig help コマンドを使用するか、AWS CLI Command Reference の「update-kubeconfig」を参照してください。

    aws eks --region region update-kubeconfig --name cluster_name
  3. 設定をテストします。

    kubectl get svc

    注記

    "aws-iam-authenticator": executable file not found in $PATH エラーが発生した場合、kubectl は、Amazon EKS に設定されていません。詳細については、「aws-iam-authenticator のインストール」を参照してください。

    その他の認可またはリソースタイプのエラーが発生した場合は、トラブルシューティングセクションの 許可されていないか、アクセスが拒否されました (kubectl) を参照してください。

    出力:

    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m

ステップ 3: Amazon EKS ワーカーノードを起動して設定する

これで、VPC および Kubernetes コントロールプレーンが作成され、ワーカーノードを起動し、設定できるようになりました。

重要

Amazon EKS ワーカーノードは標準の Amazon EC2 インスタンスであり、通常の Amazon EC2 インスタンス価格に基づいて請求されます。詳細については、「Amazon EC2 料金表」を参照してください。

ワーカーノードを起動するには

  1. クラスターステータスが ACTIVE と表示されるまで待ちます。クラスターがアクティブである前にワーカーノードを起動した場合、ワーカーノードはクラスターへの登録に失敗し、再起動する必要があります。

  2. クラスターの Kubernetes バージョンに対応する以下のタブを選択し、リージョンと AMI タイプに対応する Launch workers リンクを選択します。これにより、AWS CloudFormation コンソールが開き、いくつかのフィールドに事前入力されます。

    Kubernetes version 1.14.6Kubernetes version 1.13.10Kubernetes version 1.12.10Kubernetes version 1.11.10
    Kubernetes version 1.14.6
    リージョン Amazon EKS 最適化 AMI (GPU 対応)
    米国東部 (オハイオ) (us-east-2) ワーカーを起動 ワーカーを起動
    米国東部 (バージニア北部) (us-east-1) ワーカーを起動 ワーカーを起動
    米国西部 (オレゴン) (us-west-2) ワーカーを起動 ワーカーを起動
    アジアパシフィック (香港) (ap-east-1) ワーカーを起動 ワーカーを起動
    アジアパシフィック (ムンバイ) (ap-south-1) ワーカーを起動 ワーカーを起動
    アジアパシフィック (東京) (ap-northeast-1) ワーカーを起動 ワーカーを起動
    アジアパシフィック (ソウル) (ap-northeast-2) ワーカーを起動 ワーカーを起動
    アジアパシフィック (シンガポール) (ap-southeast-1) ワーカーを起動 ワーカーを起動
    アジアパシフィック (シドニー) (ap-southeast-2) ワーカーを起動 ワーカーを起動
    欧州 (フランクフルト) (eu-central-1) ワーカーを起動 ワーカーを起動
    欧州 (アイルランド) (eu-west-1) ワーカーを起動 ワーカーを起動
    欧州 (ロンドン) (eu-west-2) ワーカーを起動 ワーカーを起動
    欧州 (パリ) (eu-west-3) ワーカーを起動 ワーカーを起動
    欧州 (ストックホルム) (eu-north-1) ワーカーを起動 ワーカーを起動
    中東 (バーレーン) (me-south-1) ワーカーを起動 ワーカーを起動
    Kubernetes version 1.13.10
    リージョン Amazon EKS 最適化 AMI (GPU 対応)
    米国東部 (オハイオ) (us-east-2) ワーカーを起動 ワーカーを起動
    米国東部 (バージニア北部) (us-east-1) ワーカーを起動 ワーカーを起動
    米国西部 (オレゴン) (us-west-2) ワーカーを起動 ワーカーを起動
    アジアパシフィック (香港) (ap-east-1) ワーカーを起動 ワーカーを起動
    アジアパシフィック (ムンバイ) (ap-south-1) ワーカーを起動 ワーカーを起動
    アジアパシフィック (東京) (ap-northeast-1) ワーカーを起動 ワーカーを起動
    アジアパシフィック (ソウル) (ap-northeast-2) ワーカーを起動 ワーカーを起動
    アジアパシフィック (シンガポール) (ap-southeast-1) ワーカーを起動 ワーカーを起動
    アジアパシフィック (シドニー) (ap-southeast-2) ワーカーを起動 ワーカーを起動
    欧州 (フランクフルト) (eu-central-1) ワーカーを起動 ワーカーを起動
    欧州 (アイルランド) (eu-west-1) ワーカーを起動 ワーカーを起動
    欧州 (ロンドン) (eu-west-2) ワーカーを起動 ワーカーを起動
    欧州 (パリ) (eu-west-3) ワーカーを起動 ワーカーを起動
    欧州 (ストックホルム) (eu-north-1) ワーカーを起動 ワーカーを起動
    中東 (バーレーン) (me-south-1) ワーカーを起動 ワーカーを起動
    Kubernetes version 1.12.10
    リージョン Amazon EKS 最適化 AMI (GPU 対応)
    米国東部 (オハイオ) (us-east-2) ワーカーを起動 ワーカーを起動
    米国東部 (バージニア北部) (us-east-1) ワーカーを起動 ワーカーを起動
    米国西部 (オレゴン) (us-west-2) ワーカーを起動 ワーカーを起動
    アジアパシフィック (香港) (ap-east-1) ワーカーを起動 ワーカーを起動
    アジアパシフィック (ムンバイ) (ap-south-1) ワーカーを起動 ワーカーを起動
    アジアパシフィック (東京) (ap-northeast-1) ワーカーを起動 ワーカーを起動
    アジアパシフィック (ソウル) (ap-northeast-2) ワーカーを起動 ワーカーを起動
    アジアパシフィック (シンガポール) (ap-southeast-1) ワーカーを起動 ワーカーを起動
    アジアパシフィック (シドニー) (ap-southeast-2) ワーカーを起動 ワーカーを起動
    欧州 (フランクフルト) (eu-central-1) ワーカーを起動 ワーカーを起動
    欧州 (アイルランド) (eu-west-1) ワーカーを起動 ワーカーを起動
    欧州 (ロンドン) (eu-west-2) ワーカーを起動 ワーカーを起動
    欧州 (パリ) (eu-west-3) ワーカーを起動 ワーカーを起動
    欧州 (ストックホルム) (eu-north-1) ワーカーを起動 ワーカーを起動
    中東 (バーレーン) (me-south-1) ワーカーを起動 ワーカーを起動
    Kubernetes version 1.11.10
    リージョン Amazon EKS 最適化 AMI (GPU 対応)
    米国東部 (オハイオ) (us-east-2) ワーカーを起動 ワーカーを起動
    米国東部 (バージニア北部) (us-east-1) ワーカーを起動 ワーカーを起動
    米国西部 (オレゴン) (us-west-2) ワーカーを起動 ワーカーを起動
    アジアパシフィック (香港) (ap-east-1) ワーカーを起動 ワーカーを起動
    アジアパシフィック (ムンバイ) (ap-south-1) ワーカーを起動 ワーカーを起動
    アジアパシフィック (東京) (ap-northeast-1) ワーカーを起動 ワーカーを起動
    アジアパシフィック (ソウル) (ap-northeast-2) ワーカーを起動 ワーカーを起動
    アジアパシフィック (シンガポール) (ap-southeast-1) ワーカーを起動 ワーカーを起動
    アジアパシフィック (シドニー) (ap-southeast-2) ワーカーを起動 ワーカーを起動
    欧州 (フランクフルト) (eu-central-1) ワーカーを起動 ワーカーを起動
    欧州 (アイルランド) (eu-west-1) ワーカーを起動 ワーカーを起動
    欧州 (ロンドン) (eu-west-2) ワーカーを起動 ワーカーを起動
    欧州 (パリ) (eu-west-3) ワーカーを起動 ワーカーを起動
    欧州 (ストックホルム) (eu-north-1) ワーカーを起動 ワーカーを起動
    中東 (バーレーン) (me-south-1) ワーカーを起動 ワーカーを起動

    注記

    ワーカーノードのみをプライベートサブネットにデプロイする予定の場合、AWS CloudFormation デザイナーでこのテンプレートを編集し、NodeLaunchConfigAssociatePublicIpAddress パラメータを false に変更します。

    AssociatePublicIpAddress: 'false'
  3. Quick create stack ページで、必要に応じて以下のパラメータを入力します。

    • Stack name: AWS CloudFormation スタックのスタック名を選択します。たとえば、<cluster-name>- ワーカーノードと呼ぶことができます。

    • ClusterName: Amazon EKS クラスター用に作成した際に使用した名前を入力します。

      重要

      この名前は、「ステップ 1: Amazon EKS クラスターを作成する」で使用した名前と完全一致する必要があります。それ以外の場合、ワーカーノードにクラスターを結合できません。

    • ClusterControlPlaneSecurityGroup: 「Amazon EKS クラスター VPC を作成する」で生成した AWS CloudFormation 出力の [SecurityGroups] 値を選択します。

    • NodeGroupName: ノードグループの名前を入力します。この名前は、ワーカーノードに対して作成される Auto Scaling ノードグループを識別するために後で使用できます。

    • NodeAutoScalingGroupMinSize: ワーカーノードの Auto Scaling グループがスケールインする最小ノード数を入力します。

    • NodeAutoScalingGroupDesiredCapacity: スタック作成時にスケーリングする必要のあるノード数を入力します。

    • NodeAutoScalingGroupMaxSize: ワーカーノードの Auto Scaling グループがスケールアウトする最大ノード数を入力します。

    • NodeInstanceType: ワーカーノードのインスタンスタイプを選択します。

      重要

      リージョンによっては使用できないインスタンスタイプがあります。

    • NodeImageIdSSMParam: ステップ 2 でワーカーノードを起動したバージョンに基づいて事前入力されています。この値は、ワーカーノード AMI ID に使用する Amazon EC2 Systems Manager パラメータストアパラメータです。たとえば、/aws/service/eks/optimized-ami/1.14/amazon-linux-2/recommended/image_id パラメータは、推奨される最新の Kubernetes バージョン 1.14 Amazon EKS 最適化 AMI 用です。

      注記

      Amazon EKS ワーカーノード AMI は、Amazon Linux 2 に基づいています。Amazon Linux 2 のセキュリティまたはプライバシーイベントは、Amazon Linux セキュリティセンターで追跡するか、関連付けられた RSS フィードでサブスクライブできます。セキュリティおよびプライバシーイベントには、問題の概要、影響を受けるパッケージ、および問題を修正するためにインスタンスを更新する方法などがあります。

    • NodeImageId: (オプション)(Amazon EKS 最適化 AMI の代わりに)独自のカスタム AMI を使用している場合は、リージョンのワーカーノード AMI ID を入力します。ここで値を指定すると、 NodeImageIdSSMParam フィールドの値はすべて上書きされます。

    • NodeVolumeSize: ワーカーノードのルートボリュームサイズを GiB 単位で指定します。

    • KeyName: 起動後に、SSH を使用してワーカーノードに接続するときに使用できる Amazon EC2 SSH キーペアの名前を入力します。Amazon EC2 キーペアをまだ持っていない場合は、AWS マネジメントコンソール で作成できます。詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドの「Amazon EC2 のキーペア」を参照してください。

      注記

      ここでキーペアを与えないと、AWS CloudFormation スタックの作成は失敗します。

    • BootstrapArguments: kubelet の追加引数など、ワーカーノードブートストラップスクリプトに渡すオプションの引数を指定します。詳細については、https://github.com/awslabs/amazon-eks-ami/blob/master/files/bootstrap.sh でブートストラップスクリプトの使用情報をご覧ください。

    • VpcId: 「Amazon EKS クラスター VPC を作成する」で作成した VPC の ID を入力します。

    • Subnets (サブネット): 「Amazon EKS クラスター VPC を作成する」で作成したサブネットを選択します。Amazon EKS クラスター用の VPC の作成 で説明されているステップを使用して VPC を作成した場合は、ワーカーノードの VPC 内で、起動するプライベートサブネットのみを指定します。

  4. スタックが IAM リソースを作成する可能性があることを確認し、[スタックの作成] を選択します。

  5. スタックの作成が完了したら、コンソールで選択し、[出力] タブを選択します。

  6. 作成されたノードグループの [NodeInstanceRole] を記録します。これは、Amazon EKS ワーカーノードを設定する際、必要になります。

ワーカーノードをクラスターと結合するには

  1. AWS オーセンティケーター設定マップをダウンロード、編集、適用します。

    1. 次のコマンドを使用して設定マップをダウンロードします。

      curl -o aws-auth-cm.yaml https://amazon-eks.s3-us-west-2.amazonaws.com/cloudformation/2019-09-27/aws-auth-cm.yaml
    2. 任意のテキストエディタでファイルを開きます。インスタンスロールの <インスタンスのロールの ARN (インスタンスプロファイルではない)> スニペットを、前の手順で記録した [NodeInstanceRole] の値に置き換え、ファイルを保存します。

      重要

      このファイルの他の行は変更しないでください。

      apiVersion: v1 kind: ConfigMap metadata: name: aws-auth namespace: kube-system data: mapRoles: | - rolearn: <ARN of instance role (not instance profile)> username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes
    3. 設定を適用します。このコマンドが完了するまで数分かかることがあります。

      kubectl apply -f aws-auth-cm.yaml

      注記

      "aws-iam-authenticator": executable file not found in $PATH エラーが発生した場合、kubectl は、Amazon EKS に設定されていません。詳細については、「aws-iam-authenticator のインストール」を参照してください。

      その他の認可またはリソースタイプのエラーが発生した場合は、トラブルシューティングセクションの 許可されていないか、アクセスが拒否されました (kubectl) を参照してください。

  2. ノードのステータスを監視し、Ready ステータスになるまで待機します。

    kubectl get nodes --watch
  3. (GPU ワーカーのみ) GPU インスタンスタイプと Amazon EKS 最適化 AMI GPU 対応を選択した場合は、NVIDIA device plugin for Kubernetes を、次のコマンドを使ってクラスターに設定されたデーモンセットとして適用しなければなりません。

    kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/1.0.0-beta/nvidia-device-plugin.yml

次のステップ

ワーカーノードが関連付けられた Amazon EKS クラスターが実行中になったところで、Kubernetes アドオンのインストールとクラスターへのアプリケーションのデプロイを開始できます。以下のトピックは、クラスターの機能を拡張するのに役立ちます。