Amazon EKS
ユーザーガイド

Amazon EKS の使用開始

この入門ガイドは、Amazon EKS を使用開始するために必要なすべてのリソースを作成するのに役立ちます。

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 (&EKS; によるクラスターの管理を許可)] を選択したら、[Next: Permissions (次へ: アクセス許可)] を選択します。

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

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

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

クラスター VPC を作成するには

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

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

    注記

    Amazon EKS は現在、以下のリージョンで使用できます。

    • 米国西部 (オレゴン) (us-west-2)

    • 米国東部 (バージニア北部) (us-east-1)

    • 欧州 (アイルランド) (eu-west-1)

  3. [Create stack] を選択します。

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

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

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

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

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

    • Subnet01Block: サブネット 1 の CIDR 範囲を選択します。デフォルト値のままにできます。

    • Subnet02Block: サブネット 2 の CIDR 範囲を選択します。デフォルト値のままにできます。

    • Subnet03Block: サブネット 3 の CIDR 範囲を選択します。デフォルト値のままにできます。

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

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

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

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

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

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

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

Kubernetes は、クラスター API サーバーと通信するために、kubectl と呼ばれるコマンドラインユーティリティを使用します。Amazon EKS クラスターも IAM 認証を Kubernetes クラスターに許可するために、AWS IAM Authenticator for Kubernetes の許可が必要です。Kubernetes バージョン 1.10 以降では、Amazon EKS を使用するようにストックの kubectl クライアントを設定できます。そのためには、AWS IAM Authenticator for Kubernetes をインストールし、これを認証に使用するように kubectl 設定ファイルを変更します。

Amazon EKS では、使用できる aws-iam-authenticator バイナリ が発行されます。これは、同じバージョンのアップストリーム aws-iam-authenticator バイナリと同一です。または、go get を使用して、GitHub の AWS IAM Authenticator for Kubernetes プロジェクトからバイナリを取得できます。

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

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

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

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

aws-iam-authenticator を Amazon EKS にインストールするには

  • aws-iam-authenticator バイナリをダウンロードしてインストールします。

    Amazon EKS は、使用できる aws-iam-authenticator バイナリを発行します。または、go get を使用して、GitHub の AWS IAM Authenticator for Kubernetes プロジェクトから他のオペーティングシステム向けのバイナリを取得できます。

    • Amazon EKS で発行された aws-iam-authenticator バイナリをダウンロードしてインストールするには

      1. Amazon EKS で発行された aws-iam-authenticator バイナリを Amazon S3 からダウンロードします。

        使用しているプラットフォームの正しい URL に置き換えて、以下のコマンドを使用してバイナリをダウンロードします。macOS クライアントの例を以下に示します。

        curl -o aws-iam-authenticator https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-07-26/bin/darwin/amd64/aws-iam-authenticator
      2. (オプション) 同じバケットプレフィックスの SHA-256 サムを使用してダウンロードしたバイナリを検証し、プラットフォームの正しい URL に置き換えます。

        1. システムの SHA-256 サムをダウンロードします。次の例では、macOS クライアントの SHA-256 サムをダウンロードします。

          curl -o aws-iam-authenticator.sha256 https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-07-26/bin/darwin/amd64/aws-iam-authenticator.sha256
        2. ダウンロードしたバイナリの SHA-256 サムを確認します。次の openssl コマンド例は、macOS および Ubuntu クライアントでテスト済みです。使用しているオペレーティングシステムによっては、SHA-256 サムの確認に異なるコマンドや構文を使用する場合があります。必要に応じて、使用しているオペレーティングシステムのドキュメントを参照してください。

          openssl sha -sha256 aws-iam-authenticator
        3. コマンド出力で生成された SHA-256 サムとダウンロードした aws-iam-authenticator.sha256 ファイルを比較してください。両者は一致する必要があります。

      3. バイナリへの実行アクセス権限を適用します。

        chmod +x ./aws-iam-authenticator
      4. バイナリを $PATH のフォルダにコピーします。$HOME/bin/aws-iam-authenticator を作成し、$HOME/bin$PATH の先頭になっていることをお勧めします。

        cp ./aws-iam-authenticator $HOME/bin/aws-iam-authenticator && export PATH=$HOME/bin:$PATH
      5. $HOME/binPATH 環境変数 に追加します。

        • macOS の場合、Bash シェル。

          echo 'export PATH=$HOME/bin:$PATH' >> ~/.bash_profile
        • Linux の場合、Bash シェル。

          echo 'export PATH=$HOME/bin:$PATH' >> ~/.bashrc
      6. aws-iam-authenticator バイナリの動作をテストします。

        aws-iam-authenticator help
    • または、go get を使用して、GitHub から aws-iam-authenticator バイナリをインストールします。

      1. go がインストールされていない場合は、お使いのオペレーティングシステムに Go プログラミング言語をインストールします。詳細については、Go ドキュメントの「Go ツールのインストール」を参照してください。

      2. aws-iam-authenticator バイナリをインストールするには、go get を使用します。

        go get -u -v github.com/kubernetes-sigs/aws-iam-authenticator/cmd/aws-iam-authenticator

        注記

        次のエラーが発生した場合は、Go 言語を 1.7 以上にアップグレードする必要があります。詳細については、Go ドキュメントの「Go ツールのインストール」を参照してください。

        package context: unrecognized import path "context" (import path does not begin with hostname)
      3. $HOME/go/binPATH 環境変数 に追加します。

        • macOS の場合、Bash シェル。

          export PATH=$HOME/go/bin:$PATH && echo 'export PATH=$HOME/go/bin:$PATH' >> ~/.bash_profile
        • Linux の場合、Bash シェル。

          export PATH=$HOME/go/bin:$PATH && echo 'export PATH=$HOME/go/bin:$PATH' >> ~/.bashrc
      4. aws-iam-authenticator バイナリの動作をテストします。

        aws-iam-authenticator help

(オプション) 最新の AWS CLI をダウンロードし、インストールする

Amazon EKS を使用するには、AWS CLI を明示的に使用する必要はありませんが、update-kubeconfig コマンド は、kubeconfig 作成プロセスを大幅に単純化します。Amazon EKS で AWS CLI を使用するには、1.16.18 以降のバージョンの AWS CLI が必要です。AWS CLI をインストールまたはアップグレードするには、AWS Command Line Interface ユーザーガイド の 「AWS コマンドラインインターフェイスのインストール」を参照してください。

重要

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

AWS CLI のバージョンは、次のコマンドで確認できます。

aws --version

注記

システムの Python のバージョンは Python 3、または Python 2.7.9 以降である必要があります。それ以外の場合は、AWS CLI で Amazon EKS を呼び出すと hostname doesn't match エラーが表示されます。詳細については、「『ホスト名の不一致』エラーとは」 (Python リクエストのよくある質問) を参照してください。

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

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

重要

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 を使用してこれらの認証情報も検索できます。詳細については、『AWS Command Line Interface ユーザーガイド』の「AWS CLI の設定」を参照してください。

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

  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 のバージョン。デフォルトでは、入手可能な最新バージョンが選択されます。

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

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

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

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

    aws eks describe-cluster --name devel --query cluster.status

ステップ 2: Amazon EKS の kubectl を設定する

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

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

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

    注記

    システムの Python のバージョンは Python 3、または Python 2.7.9 以降である必要があります。それ以外の場合は、AWS CLI で Amazon EKS を呼び出すと hostname doesn't match エラーが表示されます。詳細については、「『ホスト名の不一致』エラーとは」 (Python リクエストのよくある質問) を参照してください。

    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 update-kubeconfig --name cluster_name
  3. 設定をテストします。

    kubectl get svc

    注記

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

    出力:

    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. https://console.aws.amazon.com/cloudformation で AWS CloudFormation コンソールを開きます。

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

    注記

    Amazon EKS は現在、以下のリージョンで使用できます。

    • 米国西部 (オレゴン) (us-west-2)

    • 米国東部 (バージニア北部) (us-east-1)

    • 欧州 (アイルランド) (eu-west-1)

  4. [Create stack] を選択します。

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

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

    https://amazon-eks.s3-us-west-2.amazonaws.com/cloudformation/2018-08-30/amazon-eks-nodegroup.yaml
  7. [詳細の指定] ページで、必要に応じて以下のパラメータを指定し、[次へ] を選択します。

    • 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 グループがスケールインする最小ノード数を入力します。

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

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

    • NodeImageId: リージョンの最新の Amazon EKS ワーカーノードの AMI ID を入力します。最新の Amazon EKS 最適化 AMI ( GPU 対応 あり/なし) の AMI ID を次の表に示します。

      注記

      Amazon EKS 最適化 AMI (GPU 対応) では、P2 および P3 のインスタンスタイプのみサポートしています。これらのインスタンスタイプは必ず、ワーカーノードの AWS CloudFormation テンプレートで指定してください。この AMI には、エンドユーザーライセンス契約 (EULA) が必要なサードパーティーソフトウェアが含まれているため、AWS Marketplace の AMI にサブスクライブし、EULA に同意してからワーカーノードグループで AMI を使用する必要があります。AMI にサブスクライブするには、「AWS Marketplace」を参照してください。

      リージョン Amazon EKS 最適化 AMI (GPU 対応)
      米国西部 (オレゴン) (us-west-2) ami-0a54c984b9f908c81 ami-0731694d53ef9604b
      米国東部 (バージニア北部) (us-east-1) ami-0440e4f6b9713faf6 ami-058bfb8c236caae89
      欧州 (アイルランド) (eu-west-1) ami-0c7a4976cb6fafd3a ami-0706dc8a5eed2eed9

      注記

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

    • 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 を作成する」で作成したサブネットを選択します。

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

  9. [Review (レビュー)] ページで、情報を確認して、スタックで IAM リソースが作成されることを認識し、[Create (作成)] を選択します。

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

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

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

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

    1. 設定マップをダウンロードします。

      curl -O https://amazon-eks.s3-us-west-2.amazonaws.com/cloudformation/2018-08-30/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 に設定されていません。詳細については、「kubectl を Amazon EKS 用に設定します。」を参照してください。

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

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

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

ステップ 4: ゲストブックアプリケーションを起動する

このセクションでは、サンプルのゲストブックアプリケーションを作成して新しいクラスターをテストします。

注記

ゲストブックの例の設定の詳細については、『Kubernetes ドキュメント』の「https://github.com/kubernetes/examples/blob/master/guestbook-go/README.md」を参照してください。

ゲストブックアプリケーションを作成するには

  1. Redis マスターレプリケーションコントローラーを作成します。

    kubectl apply -f https://raw.githubusercontent.com/kubernetes/kubernetes/v1.10.3/examples/guestbook-go/redis-master-controller.json

    注記

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

    出力:

    replicationcontroller "redis-master" created
  2. Redis マスターサービスを作成します。

    kubectl apply -f https://raw.githubusercontent.com/kubernetes/kubernetes/v1.10.3/examples/guestbook-go/redis-master-service.json

    出力:

    service "redis-master" created
  3. Redis スレーブレプリケーションコントローラーを作成します。

    kubectl apply -f https://raw.githubusercontent.com/kubernetes/kubernetes/v1.10.3/examples/guestbook-go/redis-slave-controller.json

    出力:

    replicationcontroller "redis-slave" created
  4. Redis スレーブサービスを作成します。

    kubectl apply -f https://raw.githubusercontent.com/kubernetes/kubernetes/v1.10.3/examples/guestbook-go/redis-slave-service.json

    出力:

    service "redis-slave" created
  5. ゲストブックレプリケーションコントローラーを作成します。

    kubectl apply -f https://raw.githubusercontent.com/kubernetes/kubernetes/v1.10.3/examples/guestbook-go/guestbook-controller.json

    出力:

    replicationcontroller "guestbook" created
  6. ゲストブックサービスを作成します。

    kubectl apply -f https://raw.githubusercontent.com/kubernetes/kubernetes/v1.10.3/examples/guestbook-go/guestbook-service.json

    出力:

    service "guestbook" created
  7. クラスターのサービスをクエリし、guestbook サービスの [External IP] 列が自動入力されるまで待機します。

    注記

    IP アドレスが有効になるまで数分かかる場合があります。

    kubectl get services -o wide
  8. 外部 IP アドレスが有効になったら、ウェブブラウザでポート 3000 のそのアドレスにアクセスして、ゲストブックを表示します。たとえば、http://a7a95c2b9e69711e7b1a3022fdcfdf2e-1985673473.us-west-2.elb.amazonaws.com:3000

    注記

    DNS が伝播され、ゲストブックが表示されるまで数分かかることがあります。

    
                        ゲストブック

    重要

    ブラウザで外部 IP アドレスに接続できない場合は、会社のファイアウォールによって標準以外のポート (例: 3000) がブロックされていないことを確認してください。検証するには、ゲストネットワークに切り替えます。

ステップ 5: ゲストブックオブジェクトをクリーンアップする

ゲストブックアプリケーションを使用したら、作成したリソースをクリーンアップする必要があります。次のコマンドは、ゲストブックアプリケーションのすべてのサービスとレプリケーションコントローラーを削除します。

kubectl delete rc/redis-master rc/redis-slave rc/guestbook svc/redis-master svc/redis-slave svc/guestbook

注記

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

Amazon EKS クラスターの使用が終わったら、追加課金を発生させないように、クラスターとそのリソースを削除してください。詳細については、「クラスターの削除」を参照してください。