AWS マネジメントコンソール の使用開始 - Amazon EKS

AWS マネジメントコンソール の使用開始

この入門ガイドは、AWS マネジメントコンソール を使用して Amazon EKS を開始するために必要な、すべてのリソースの作成に役立ちます。このガイドでは、Amazon EKS または AWS CloudFormation コンソールで各リソースを手動で作成します。このチュートリアルの終わりには、マネージド型ノードグループが関連付けられた Amazon EKS クラスターが実行中になり、kubectl コマンドラインユーティリティは新しいクラスターを使用するように設定されます。このガイドの手順に従うと、各リソースがどのように作成され、リソース間でどのようにやり取りするかを全面的に把握できます。

ほとんどのリソースを自動的に作成する場合は、 eksctl CLI を使用してクラスターノードとワーカーノードを作成します。詳細については、「eksctl の開始方法」を参照してください。

前提条件

このセクションは、Amazon EKS クラスターの作成と管理に必要なツールとリソースのインストールと設定に役立ちます。

AWS CLI をインストールする

AWS CLI の最新バージョンをインストールするには、AWS CLI をインストールするオペレーティングシステムの名前が示されたタブを選択してください。

macOS

現在 AWS CLI がインストールされている場合は、インストールされているバージョンを確認します。

aws --version

バージョン 1.18.86 以降がない場合や、バージョン AWS CLI 以降がインストールされている場合は、2.0.25 バージョン 2 をインストールします。その他のインストールオプションや、現在インストールされているバージョン 2 をアップグレードする方法については、「macOS での AWS CLI バージョン 2 のインストール」の「アップグレード」を参照してください。

curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg" sudo installer -pkg AWSCLIV2.pkg -target /

AWS CLI バージョン 2 を使用できない場合は、次のコマンドを使用して、AWS CLI バージョン 1 の最新バージョンがインストールされていることを確認します。

pip3 install awscli --upgrade --user
Linux

現在 AWS CLI がインストールされている場合は、インストールされているバージョンを確認します。

aws --version

バージョン 1.18.86 以降がない場合や、バージョン AWS CLI 以降がインストールされている場合は、2.0.25 バージョン 2 をインストールします。その他のインストールオプションや、現在インストールされているバージョン 2 をアップグレードする方法については、「Linux での AWS CLI バージョン 2 のインストール」の「アップグレード」を参照してください。

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install

AWS CLI バージョン 2 を使用できない場合は、次のコマンドを使用して、AWS CLI バージョン 1 の最新バージョンがインストールされていることを確認します。

pip3 install --upgrade --user awscli
Windows

現在 AWS CLI がインストールされている場合は、インストールされているバージョンを確認します。

aws --version

AWS CLI バージョン 2 をインストールするには

バージョン 1.18.86 以降がない場合や、バージョン AWS CLI 以降がインストールされている場合は、以下のステップを使用して 2.0.25 バージョン 2 をインストールします。その他のインストールオプションや、現在インストールされているバージョン 2 をアップグレードする方法については、「Windows での AWS CLI バージョン 2 のインストール」の「Windows でのアップグレード」を参照してください。

  1. Windows 用 AWS CLI MSI インストーラ (64 ビット) を https://awscli.amazonaws.com/AWSCLIV2.msi からダウンロードします。

  2. ダウンロードした MSI インストーラを実行し、画面の指示に従います。デフォルトでは、AWS CLI は C:\Program Files\Amazon\AWSCLIV2 にインストールされます。

AWS CLI バージョン 2 を使用できない場合は、次のコマンドを使用して、AWS CLI バージョン 1 の最新バージョンがインストールされていることを確認します。

pip3 install --user --upgrade awscli

AWS CLI 認証情報を設定する

AWS CLI を使用するには、その環境に AWS の認証情報が設定されている必要があります。一般的な使用の場合、aws configure コマンドが、AWS CLI をインストールして設定するための最も簡単な方法です。

$ aws configure AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Default region name [None]: region-code Default output format [None]: json

このコマンドを入力すると、AWS CLI によって、access keysecret access keyAWS Regionoutput format の 4 つの情報の入力が求められます。これらの情報は、default という名前のプロファイル (設定の集合) に保存されます。コマンドを実行する際には、別のプロファイルを指定しない限り、このプロファイルが使用されます。

詳細については、AWS Command Line Interface ユーザーガイドの「AWS CLI の設定」を参照してください。

Amazon EKS クラスターの IAM ロールの作成

AWS マネジメントコンソール または AWS CloudFormation を使用してロールを作成できます。ロールの作成に使用するツールの名前が付いているタブを選択します。

AWS マネジメントコンソール

IAM コンソールで Amazon EKS クラスターロールを作成するには

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

  2. [ロール] を選択してから [ロールの作成] を選びます。

  3. サービスのリストから [EKS] を選択し、ユースケースに合った [EKS - Cluster (EKS - クラスター)] を選択して、[Next: Permissions (次へ: アクセス許可)] を選択します。

  4. [次へ: タグ] を選択します。

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

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

  7. [ロール名] に、ロールの一意の名前 (eksClusterRole など) を入力し、[ロールの作成] を選択します。

AWS CloudFormation

AWS CloudFormation で Amazon EKS クラスターロールを作成するには

  1. 以下の AWS CloudFormation テンプレートをローカルシステムのテキストファイルに保存します。

    --- AWSTemplateFormatVersion: '2010-09-09' Description: 'Amazon EKS Cluster Role' Resources: eksClusterRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: - eks.amazonaws.com Action: - sts:AssumeRole ManagedPolicyArns: - arn:aws:iam::aws:policy/AmazonEKSClusterPolicy Outputs: RoleArn: Description: The role that Amazon EKS will use to create AWS resources for Kubernetes clusters Value: !GetAtt eksClusterRole.Arn Export: Name: !Sub "${AWS::StackName}-RoleArn"
    注記

    2020 年 4 月 16 日までは、ManagedPolicyArnsarn:aws:iam::aws:policy/AmazonEKSServicePolicy のエントリがありました。AWSServiceRoleForAmazonEKS サービスにリンクされたロールでは、このポリシーは必須でなくなりました。

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

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

  4. [テンプレートの指定] で、[テンプレートファイルのアップロード] を選択し、[ファイルの選択] を選択します。

  5. 作成したファイルを選択し、[Next (次へ)] を選択します。

  6. [スタックの名前] に eksClusterRole などのロール名を入力し、[次へ] を選択します。

  7. [スタックオプションの設定] ページで、[Next (次へ)] を選択します。

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

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

このセクションでは、2 つのパブリックサブネットと 2 つのプライベートサブネットを持つ VPC、または 3 つのパブリックサブネットを持つ VPC を作成する手順について説明します。

Amazon EKS のクラスターの作成時には、使用するクラスターの VPC サブネットを指定します。Amazon EKS には、2 つ以上の アベイラビリティーゾーン にサブネットが必要です。パブリックサブネットとプライベートサブネットを持つ VPC をお勧めします。これにより、Kubernetes がパブリックサブネットにパブリックロードバランサーを作成し、プライベートサブネットにあるワーカーノードで実行されているポッドへのトラフィックを負荷分散します。

両方の VPC タイプの詳細については、「Amazon EKS クラスター用の VPC の作成」を参照してください。

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

Public and private subnets

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

  1. AWS CloudFormation コンソール (https://console.aws.amazon.com/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/2020-06-10/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] 値を記録します。ワーカーノードをクラスターに追加するときは、セキュリティグループの ID を指定する必要があります。セキュリティグループは、Amazon EKS コントロールプレーンがワーカーノードと通信できるようにサブネット内に作成されたクロスアカウントの Elastic Network Interfaces に適用されます。

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

  12. 作成されたサブネットの SubnetIds と、それらをパブリックサブネットとプライベートサブネットのどちらとして作成したかを記録します。ワーカーノードをクラスターに追加するときは、ワーカーノードを起動するサブネットの ID を指定する必要があります。

Only public subnets

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

  1. AWS CloudFormation コンソール (https://console.aws.amazon.com/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/2020-06-10/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] 値を記録します。ワーカーノードをクラスターに追加するときは、セキュリティグループの ID を指定する必要があります。セキュリティグループは、Amazon EKS コントロールプレーンがワーカーノードと通信できるようにサブネット内に作成されたクロスアカウントの Elastic Network Interfaces に適用されます。

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

  12. 作成されたサブネットの [SubnetIds] を記録します。ワーカーノードをクラスターに追加するときは、ワーカーノードを起動するサブネットの ID を指定する必要があります。

Only private subnets

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

  1. AWS CloudFormation コンソール (https://console.aws.amazon.com/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/2020-06-10/amazon-eks-fully-private-vpc.yaml
  6. [詳細の指定] ページで、必要に応じてパラメータを指定し、[次へ] を選択します。

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

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

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

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

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

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

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

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

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

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

  12. 作成されたサブネットの [SubnetIds] を記録します。ワーカーノードをクラスターに追加するときは、ワーカーノードを起動するサブネットの ID を指定する必要があります。

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

このセクションは、Amazon EKS クラスターの作成に役立ちます。最新の Kubernetes と Amazon EKS の機能を利用できるように、Amazon EKS で使用可能な最新バージョンの Kubernetes がインストールされます。一部の機能は、Kubernetes の古いバージョンでは利用できません。

重要

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

AWS CLI をインストールして設定する場合は、ユーザーの IAM 認証情報を設定できます。AWS CLI バージョン 1.16.156 以降がユーザーに対して適切に設定されている場合は、eksctl はそれらの認証情報を検索できます。詳細については、AWS Command Line Interface ユーザーガイドの「AWS CLI の設定」を参照してください。AWS CLI バージョン 1.16.156 以降をインストールできない場合は、aws-iam-authenticator をインストールする必要があります。

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

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

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

    注記

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

  3. [Configure cluster (クラスターの設定)] ページで、次のフィールドに入力します。

    • 名前 – クラスターの一意の名前。

    • Kubernetes version (Kubernetes バージョン) – クラスターで使用する Kubernetes のバージョン。

      重要

      このガイドでは、利用可能な最新バージョンを選択する必要があります。

    • Cluster service role (クラスターサービスのロール) – 「Amazon EKS クラスターの IAM ロールの作成」で作成した IAM ロールを選択します 。

    • シークレットの暗号化 – (オプション) AWS Key Management Service (AWS KMS) を使用して Kubernetes シークレットのエンベロープ暗号化を有効にするよう選択します。エンベロープ暗号化を有効にすると、選択したカスタマーマスターキー (CMK) を使用して Kubernetes シークレットが暗号化されます。CMK は対称で、クラスターと同じリージョンで作成する必要があります。CMK が別のアカウントで作成されている場合は、ユーザーが CMK にアクセスできる必要があります。詳細については、『AWS Key Management Service 開発者ガイド』の「他のアカウントのユーザーに CMK の使用を許可する」を参照してください。

      AWS KMS CMK を使用した Kubernetes シークレット暗号化には、Kubernetes バージョン 1.13 以降が必要です。キーが一覧表示されていない場合は、最初にキーを作成する必要があります。詳細については、「キーの作成」を参照してください。

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

  4. [Next (次へ)] を選択します。

  5. [Specify networking (ネットワーキングの指定)] ページで、次のフィールドの値を選択します。

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

    • サブネット – デフォルトでは、前のフィールドで指定した VPC 内の利用可能なサブネットがあらかじめ選択されています。ワーカーノードやロードバランサーなど、クラスターリソースをホストしないサブネットを選択します。

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

      重要

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

    • [Cluster endpoint access (クラスターエンドポイントのアクセス)] の場合 – 次のいずれかのオプションを選択します。

      • パブリック – クラスターの Kubernetes API サーバーエンドポイントへのパブリックアクセスのみを有効にします。クラスターの VPC の外部から送信される Kubernetes API リクエストは、パブリックエンドポイントを使用します。デフォルトでは、任意の送信元 IP アドレスからのアクセスが許可されます。たとえば、必要に応じて、[詳細設定] を選択し、次に [Add source (ソースの追加)] を選択して、192.168.0.0/16 などの 1 つ以上の CIDR 範囲へのアクセスを制限できます。

      • プライベート – クラスターの Kubernetes API サーバーエンドポイントへのプライベートアクセスのみを有効にします。クラスターの VPC 内から送信される Kubernetes API リクエストは、プライベート VPC エンドポイントを使用します。

        重要

        If you created a VPC without outbound internet access, then you must enable private access.

      • Public and private (パブリックおよびプライベート) – パブリックおよびプライベートアクセスを有効にします。

      前のオプションの詳細については、「クラスターエンドポイントのアクセスの変更」を参照してください。

  6. [Next (次へ)] を選択します。

  7. [ログ記録の構成] ページで、有効にするログタイプをオプションで選択できます。各ログタイプは、デフォルトで [無効] になっています。詳細については、「Amazon EKS コントロールプレーンのログ記録」を参照してください。

  8. [Next (次へ)] を選択します。

  9. [確認と作成] ページで、前のページで入力または選択した情報を確認します。選択内容を変更する必要がある場合は、[編集] を選択します。設定が適切であることを確認したら、[作成] を選択します。クラスターのプロビジョニングプロセスが完了するまで、[状況] フィールドには [作成中] と表示されます。

    注記

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

    クラスターのプロビジョニングが完了したら (通常 10 ~ 15 分)、[API サーバーエンドポイント] および [認証機関] 値を書き留めます。これらは、kubectl 設定で使用されます。

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

このセクションでは、クラスターの kubeconfig ファイルを AWS CLI update-kubeconfig コマンドを使って作成します。

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

  1. クラスターの 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」を参照してください。

    注記

    以下のコマンドを実行するには、指定したクラスターで eks:DescribeCluster API アクションを使用するアクセス許可が必要です。詳細については、「Amazon EKS アイデンティティベースのポリシーの例」を参照してください。

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

    kubectl get svc
    注記

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

    出力:

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

ステップ 3: マネージド型ノードグループの起動

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

重要

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

Amazon EKS ワーカーノード kubelet デーモンは、ユーザーに代わって AWS API への呼び出しを実行します。ワーカーノードは、IAM インスタンスプロファイルおよび関連ポリシーを通じて、これらの API コールのアクセス許可を受け取ります。

ワーカーノードを起動してクラスターに登録する前に、起動するときに使用するワーカーノード用の IAM ロールを作成する必要があります。詳細については、「Amazon EKS ワーカーノード IAM ロール」を参照してください。AWS マネジメントコンソール または AWS CloudFormation を使用してロールを作成できます。ロールの作成に使用するツールの名前が付いているタブを選択します。

注記

クラスターごとに新しいワーカーノード IAM ロールを作成することをお勧めします。そうしない場合、あるクラスターのノードが、属していない別のクラスターで認証される可能性があります。

AWS マネジメントコンソール

IAM コンソールで Amazon EKS ワーカーノードロールを作成するには

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

  2. [ロール] を選択してから [ロールの作成] を選びます。

  3. [Choose a use case (ユースケースの選択)] の [Common use cases (一般的ユースケース)] リストから [EC2] を選択し、[Next: Permissions (次へ: アクセス許可)] を選択します。

  4. [Filter policies (フィルタポリシー)] ボックスに「AmazonEKSWorkerNodePolicy」と入力します。[AmazonEKSWorkerNodePolicy] の左側にあるチェックボックスをオンにします。

  5. [Filter policies (フィルタポリシー)] ボックスに「AmazonEKS_CNI_Policy」と入力します。[AmazonEKS_CNI_Policy] の左側にあるチェックボックスをオンにします。

  6. [Filter policies (フィルタポリシー)] ボックスに「AmazonEC2ContainerRegistryReadOnly」と入力します。[AmazonEC2ContainerRegistryReadOnly] の左側にあるチェックボックスをオンにします。

  7. [次へ: タグ] を選択します。

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

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

  10. [ロール名] にロールの一意の名前 (NodeInstanceRole など) を入力します。[ロールの説明] で、現在のテキストを「Amazon EKS - Node Group Role」などの説明テキストに置き換え、[ロールの作成] を選択します。

AWS CloudFormation

AWS CloudFormation を使用して Amazon EKS ワーカーノードロールを作成するには

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

  2. [スタックの作成] を選択し、[With new resources (standard) 新しいリソースを使用 (標準)] を選択します。

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

  4. 以下の URL を [Amazon S3 URL] テキストエリアに貼り付け、[Next (次へ)] を選択します。

    https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-06-10/amazon-eks-nodegroup-role.yaml
  5. [Specify stack details (スタックの詳細の指定)] ページで、[スタックの名前] に「eks-node-group-instance-role」などの名前を入力し、[Next (次へ)] を選択します。

  6. (オプション) [Configure stack options (スタックオプションの設定)] ページで、スタックリソースをタグ付けできます。[次へ] を選択します。

  7. [確認] ページで、[機能] セクションのチェックボックスをオンにして、[スタックの作成] を選択します。

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

  9. 作成された IAM ロールの [NodeInstanceRole] 値を記録します。これは、ノードグループを作成するときに必要です。

マネージド型ノードグループを起動するには

  1. クラスターステータスが ACTIVE と表示されるまで待ちます。まだ ACTIVE ではないクラスターにはマネージド型ノードグループを作成できません。

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

  3. マネージド型ノードグループを作成するクラスターの名前を選択します。

  4. クラスターページで、[計算] タブを選択し、[ノードグループの追加] を選択します。

  5. [Configure node group (ノードグループの設定)] ページで、必要に応じてパラメータを指定し、[次へ] を選択します。

    • [名前] – マネージド型ノードグループの一意の名前を入力します。

    • [ノード IAM ロール名] – ノードグループで使用するノードインスタンスロールを選択します。詳細については、「Amazon EKS ワーカーノード IAM ロール」を参照してください。

      重要

      セルフマネージドノードグループによって現在使用されていないロールを使用するか、新しいセルフマネージドノードグループで使用する予定のロールを使用することをお勧めします。詳細については、「マネージド型ノードグループの削除」を参照してください。

    • [サブネット] – マネージド型ノードを起動するサブネットを選択します。

      重要

      Amazon EBS ボリュームによってバックアップされ、Kubernetes Cluster Autoscaler を使用する複数のアベイラビリティーゾーンにわたってステートフルアプリケーションを実行している場合、それぞれが単一のアベイラビリティーゾーンにスコープされる複数のノードグループを設定する必要があります。また、--balance-similar-node-groups 機能を有効にする必要があります。

      重要

      パブリックサブネットを選択した場合、インスタンスがクラスターに正常に参加するには、そのサブネットの MapPublicIpOnLaunch を true に設定する必要があります。サブネットが 03/26/2020 以降に eksctl または Amazon EKS から発行された AWS CloudFormation テンプレートを使用して作成されている場合、この設定はすでに true に設定されています。サブネットが 03/26/2020 より前に eksctl または AWS CloudFormation テンプレートを使用して作成されている場合は、設定を手動で変更する必要があります。詳細については、「サブネットの IPv4 アドレス指定属性の変更」を参照してください。

    • [リモートアクセス] – (オプション) マネージド型ノードグループ内のノードへの SSH アクセスを有効にすることができます。SSH を有効にすることにより、インスタンスに接続し、問題がある場合に診断情報を収集できます。リモートアクセスを有効にするには、以下の手順に従います。

      注記

      ノードグループを作成するときは、リモートアクセスを有効にすることを強くお勧めします。ノードグループの作成後にリモートアクセスを有効にすることはできません。

      1. [Allow remote access to nodes (ノードへのリモートアクセスを許可する)] チェックボックスをオンにします。

      2. [SSH キーペア] の場合は、使用する Amazon EC2 SSH キーを選択します。詳細については、『Linux インスタンス用 Amazon EC2 ユーザーガイド』の「Amazon EC2 のキーペア」を参照してください。

      3. [Allow remote access from (許可するリモートアクセス元)] で、[すべて] を選択してインターネット上の任意の場所 (0.0.0.0/0) から SSH アクセスを許可するか、セキュリティグループを選択して、そのセキュリティグループに属するインスタンスからの SSH アクセスを許可します。

    • [タグ] – (オプション) Amazon EKS マネージド型ノードグループにタグを付けることを選択できます。これらのタグは、Auto Scaling グループやインスタンスなど、ノードグループ内の他のリソースには伝達されません。詳細については、「Amazon EKS リソースのタグ付け」を参照してください。

    • [Kubernetes ラベル] – (オプション) マネージド型ノードグループ内のノードに Kubernetes ラベルを適用するように選択できます。

  6. [Set compute configuration (コンピューティング構成の設定)] ページで、必要に応じてパラメータを指定し、[次へ] を選択します。

    • [AMI タイプ] – GPU 以外のインスタンスの場合は [Amazon Linux 2 (AL2_x86_64)] を選択し、GPU インスタンスの場合は [Amazon Linux 2 GPU が有効 (AL2_x86_64_GPU)] を選択します。

    • [インスタンスタイプ] – マネージド型ノードグループで使用するインスタンスタイプを選択します。大きいインスタンスタイプほど、多くのポッドに対応できます。

    • [ディスクサイズ] – ワーカーノードのルートボリュームに使用するディスクサイズ (GiB 単位) を入力します。

  7. [Setup scaling policies (スケーリングポリシーの設定)] ページで、必要に応じてパラメータを入力し、[次へ] を選択します。

    注記

    Amazon EKS は、ノードグループを自動的にスケールインまたはスケールアウトしません。ただし、これを行うように Kubernetes Cluster Autoscaler を設定することはできます。

    • [最小サイズ] – マネージド型ノードグループがスケールインできるワーカーノードの最小数を指定します。

    • [最大サイズ] – マネージド型ノードグループがスケールアウトできるワーカーノードの最大数を指定します。

    • [必要なサイズ] – マネージド型ノードグループが起動時に保持する必要があるワーカーノードの現在の数を指定します。

  8. [確認と作成] ページで、マネージド型ノードグループの設定を確認し、[作成] を選択します。

    注記

    ワーカーノードがクラスターに参加できない場合は、トラブルシューティングガイドの「ワーカーノードをクラスターに結合できません」を参照してください。

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

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

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

(オプション) Windows ワーカーノードを起動するには

クラスターに Windows サポートを追加し、Windows ワーカーノードを起動します。詳細については、「Windows サポート」を参照してください。クラスターで Windows ワークロードのみを実行する場合でも、すべての Amazon EKS クラスターには 1 つ以上の Linux ワーカーノードが含まれている必要があります。

次のステップ

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