Amazon EKS
ユーザーガイド

Amazon EKS ワーカーノードを起動する

このトピックは、Amazon EKS クラスターに登録されているワーカーノードの Auto Scaling グループの起動に役立ちます。ノードがクラスターに参加したら、それらのノードに Kubernetes アプリケーションをデプロイ可能になります。

Amazon EKS ワーカーノードを初めて起動する場合は、代わりに Amazon EKS の開始方法 ガイドに従うことをお勧めします。これらのガイドは、Amazon EKS クラスターとワーカーノードを作成するための完全なエンドツーエンドのチュートリアルを提供します。

重要

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

以下から必要なワーカーノード作成方法に対応するタブを選択します。

eksctlAWS マネジメントコンソール
eksctl

eksctl を使用してワーカーノードを起動するには

この手順では、eksctl をインストール済みで、お使いの eksctl バージョンが 0.1.37 以上であることを前提としています。 お使いのバージョンは、以下のコマンドを使用して確認できます。

eksctl version

eksctl のインストールまたはアップグレードの詳細については、eksctl のインストールまたはアップグレード を参照してください。

注記

この手順は、eksctl で作成されたクラスターに対してのみ機能します。

  • 以下のコマンドを使用して、ワーカーノードグループを作成します。赤いテキストは独自の値に置き換えてください。

    eksctl create nodegroup \ --cluster default \ --version auto \ --name standard-workers \ --node-type t3.medium \ --node-ami auto \ --nodes 3 \ --nodes-min 1 \ --nodes-max 4

    注記

    eksctl create nodegroup の使用可能なオプションの詳細については、GitHub の README プロジェクトを参照するか、以下のコマンドでヘルプページを参照してください。

    eksctl create nodegroup --help

    出力:

    [ℹ] using region us-west-2 [ℹ] will use version 1.12 for new nodegroup(s) based on control plane version [ℹ] nodegroup "standard-workers" will use "ami-0923e4b35a30a5f53" [AmazonLinux2/1.12] [ℹ] 1 nodegroup (standard-workers) was included [ℹ] will create a CloudFormation stack for each of 1 nodegroups in cluster "default" [ℹ] 1 task: { create nodegroup "standard-workers" } [ℹ] building nodegroup stack "eksctl-default-nodegroup-standard-workers" [ℹ] deploying stack "eksctl-default-nodegroup-standard-workers" [ℹ] adding role "arn:aws:iam::111122223333:role/eksctl-default-nodegroup-standard-NodeInstanceRole-12C2JO814XSEE" to auth ConfigMap [ℹ] nodegroup "standard-workers" has 0 node(s) [ℹ] waiting for at least 1 node(s) to become ready in "standard-workers" [ℹ] nodegroup "standard-workers" has 3 node(s) [ℹ] node "ip-192-168-52-42.us-west-2.compute.internal" is ready [ℹ] node "ip-192-168-7-27.us-west-2.compute.internal" is not ready [ℹ] node "ip-192-168-76-138.us-west-2.compute.internal" is not ready [✔] created 1 nodegroup(s) in cluster "default" [ℹ] checking security group configuration for all nodegroups [ℹ] all nodegroups have up-to-date configuration
AWS マネジメントコンソール

AWS マネジメントコンソール を使用してワーカーノードを起動するには

これらの手順には、以下の前提条件があります。

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

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

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

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

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

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

    https://amazon-eks.s3-us-west-2.amazonaws.com/cloudformation/2019-02-11/amazon-eks-nodegroup.yaml

    注記

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

    AssociatePublicIpAddress: 'false'
  7. [詳細の指定] ページで、必要に応じて以下のパラメータを指定し、[次へ] を選択します。

    • Stack name - AWS CloudFormation スタックのスタック名を選択します。たとえば、<cluster-name>-worker-nodes という名前にします。

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

      重要

      この名前は Amazon EKS クラスター名と完全に一致する必要があります。一致しない場合、ワーカーノードはクラスターに参加できません。

    • ClusterControlPlaneSecurityGroup - Amazon EKS クラスターの作成時に使用したセキュリティグループ (複数可) を入力します。この AWS CloudFormation テンプレートによって、指定したクラスターコントロールプレーンセキュリティグループ間で送受信されるトラフィックを許可するワーカーノードセキュリティグループが作成されます。

      重要

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

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

    • NodeAutoScalingGroupMinSize - ワーカーノードの Auto Scaling グループによるスケールインの限度となる最小ノード数を入力します。

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

    • NodeAutoScalingGroupMaxSize - ワーカーノードの Auto Scaling グループがスケールアウトする最大ノード数を入力します。更新時にノード数を減らさずにワーカーノードのローリング更新を実行できるように、この値は、必要なキャパシティーよりも 1 ノード少なくする必要があります。

    • NodeInstanceType - ワーカーノードのインスタンスタイプを選択します。選択したインスタンスタイプとサイズに応じて、ポッド内のコンテナのワーカーノードあたりの使用可能な IP アドレスの数が決まります。詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドの「 各インスタンスタイプのネットワークインターフェイスごとの IP アドレス」を参照してください。

      注記

      最新バージョンの Amazon VPC CNI Plugin for Kubernetes でサポートされているインスタンスタイプをこちらに示します。サポートされている最新のインスタンスタイプを利用するには、CNI のバージョンを更新する必要があります。詳細については、「Amazon VPC CNI Plugin for Kubernetes のアップグレード」を参照してください。

      重要

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

    • NodeImageId - リージョンの最新の Amazon EKS ワーカーノードの AMI ID を入力します。最新の Amazon EKS 最適化 AMI (GPU 対応あり/なし) の AMI ID を次の表に示します。適切な AMI ID が、必要な Kubernetes バージョンと AWS リージョンで選択されていることを確認します。

      注記

      Amazon EKS 最適化 AMI (GPU 対応) では、P2 および P3 のインスタンスタイプのみサポートしています。これらのインスタンスタイプは必ず、ワーカーノードの AWS CloudFormation テンプレートで指定してください。GPU 対応の Amazon EKS 最適化 AMI を使用することで、NVIDIA のエンドユーザーライセンス契約 (EULA) に同意したものとみなされます。

      Kubernetes version 1.13.7Kubernetes version 1.12.7Kubernetes version 1.11.9
      Kubernetes version 1.13.7
      リージョン Amazon EKS 最適化 AMI (GPU 対応)
      米国東部 (オハイオ) (us-east-2) ami-0485258c2d1c3608f ami-0ccac9d9b57864000
      米国東部 (バージニア北部) (us-east-1) ami-0f2e8e5663e16b436 ami-0017d945a10387606
      米国西部 (オレゴン) (us-west-2) ami-03a55127c613349a7 ami-08335952e837d087b
      アジアパシフィック (香港) (ap-east-1) ami-032850771ac6f8ae2 N/A*
      アジアパシフィック (ムンバイ) (ap-south-1) ami-0a9b1c1807b1a40ab ami-005b754faac73f0cc
      アジアパシフィック (東京) (ap-northeast-1) ami-0fde798d17145fae1 ami-04cf69bbd6c0fae0b
      アジアパシフィック (ソウル) (ap-northeast-2) ami-07fd7609df6c8e39b ami-0730e699ed0118737
      アジアパシフィック (シンガポール) (ap-southeast-1) ami-0361e14efd56a71c7 ami-07be5e97a529cd146
      アジアパシフィック (シドニー) (ap-southeast-2) ami-0237d87bc27daba65 ami-0a2f4c3aeb596aa7e
      欧州 (フランクフルト) (eu-central-1) ami-0b7127e7a2a38802a ami-0fbbd205f797ecccd
      欧州 (アイルランド) (eu-west-1) ami-00ac2e6b3cb38a9b9 ami-0f9571a3e65dc4e20
      欧州 (ロンドン) (eu-west-2) ami-0147919d2ff9a6ad5 ami-032348bd69c5dd665
      欧州 (パリ) (eu-west-3) ami-0537ee9329c1628a2 ami-053962359d6859fec
      欧州 (ストックホルム) (eu-north-1) ami-0fd05922165907b85 ami-0641def7f02a4cac5
      Kubernetes version 1.12.7
      リージョン Amazon EKS 最適化 AMI (GPU 対応)
      米国東部 (オハイオ) (us-east-2) ami-0fe61ae4c397e710d ami-067d88fb64d3d7990
      米国東部 (バージニア北部) (us-east-1) ami-0e380e0a62d368837 ami-06e46a15650294dfa
      米国西部 (オレゴン) (us-west-2) ami-0355c210cb3f58aa2 ami-084e8e620163aa50e
      アジアパシフィック (香港) (ap-east-1) ami-03885e0a7493b073f N/A*
      アジアパシフィック (ムンバイ) (ap-south-1) ami-01b6a163133c31994 ami-09ad3a49fb13389a0
      アジアパシフィック (東京) (ap-northeast-1) ami-0a9b3f8b4b65b402b ami-0cd09d7293f31df8a
      アジアパシフィック (ソウル) (ap-northeast-2) ami-069f6a654a8795f72 ami-006549812c03748cb
      アジアパシフィック (シンガポール) (ap-southeast-1) ami-03737a1ac334a5767 ami-01be8fddd9b16320c
      アジアパシフィック (シドニー) (ap-southeast-2) ami-07580768e8538626f ami-0a1bf783357dd8492
      欧州 (フランクフルト) (eu-central-1) ami-0ee5ca4231511cafc ami-0ae5976723472b6d4
      欧州 (アイルランド) (eu-west-1) ami-0404d23c7e8188740 ami-042f9abf2f96a0097
      欧州 (ロンドン) (eu-west-2) ami-07346d8553f83f9d6 ami-0b87e9246afd42760
      欧州 (パリ) (eu-west-3) ami-038cb36289174bac4 ami-0d9405868a6e9ee11
      欧州 (ストックホルム) (eu-north-1) ami-03e60b5a990893129 ami-0122b7e2a6736e3c5
      Kubernetes version 1.11.9
      リージョン Amazon EKS 最適化 AMI (GPU 対応)
      米国東部 (オハイオ) (us-east-2) ami-03c6648b74285020f ami-0b87186dda80931ee
      米国東部 (バージニア北部) (us-east-1) ami-0a5f5d5b0f6f58199 ami-07207754196c1a8fc
      米国西部 (オレゴン) (us-west-2) ami-057d1c0dcb254a878 ami-052da6a4e0ae156ad
      アジアパシフィック (香港) (ap-east-1) ami-006e7a52666ab7494 N/A*
      アジアパシフィック (ムンバイ) (ap-south-1) ami-00f1adebe5ab9a431 ami-04645af6384529c5d
      アジアパシフィック (東京) (ap-northeast-1) ami-0a0b6606652f9b3b9 ami-0a8f4e1f9bf09a81f
      アジアパシフィック (ソウル) (ap-northeast-2) ami-0c84b3f055cda1afb ami-01db6bb089f6adfcf
      アジアパシフィック (シンガポール) (ap-southeast-1) ami-05e92412054db3f87 ami-0e001196bd450aa0c
      アジアパシフィック (シドニー) (ap-southeast-2) ami-07eb76498b1ba6cd6 ami-0c7132a332aa55aa6
      欧州 (フランクフルト) (eu-central-1) ami-0234bc9c2b341aa02 ami-05cb4f6e8be8b83f1
      欧州 (アイルランド) (eu-west-1) ami-06902949103360023 ami-02f337476a5c33f1b
      欧州 (ロンドン) (eu-west-2) ami-0db100ad46c7966d2 ami-0aa2208dbb9bb7cc5
      欧州 (パリ) (eu-west-3) ami-052046d313576d0ba ami-0f6ea479cb4e7a4d2
      欧州 (ストックホルム) (eu-north-1) ami-02ebf24da505128f9 ami-078c260b9a737fc35

      * GPU インスタンスタイプは、アジアパシフィック (香港) (ap-east-1) リージョンでは利用できないため、そのリージョンで Amazon EKS は Amazon EKS 最適化 AMI (GPU 対応) を公開しません。

      注記

      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 - ワーカーノードで起動する VPC の ID を入力します。

    • Subnets - ワーカーノードで起動する前述の VPC 内のサブネットを選択します。ワーカーノードをプライベートサブネットのみで起動する場合は、ここにパブリックサブネットを含めないでください。

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

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

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

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

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

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

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

      curl -o aws-auth-cm.yaml https://amazon-eks.s3-us-west-2.amazonaws.com/cloudformation/2019-02-11/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 ワーカーのみ) P2 または P3 インスタンスタイプと 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