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.31 以上であることを前提としています。 お使いのバージョンは、以下のコマンドを使用して確認できます。

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. [Create stack] を選択します。

  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
  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 バージョン 1.12.7Kubernetes バージョン 1.11.9Kubernetes バージョン 1.10.13
      Kubernetes バージョン 1.12.7
      リージョン Amazon EKS 最適化 AMI (GPU 対応)
      米国西部 (オレゴン) (us-west-2) ami-0923e4b35a30a5f53 ami-0bebf2322fd52a42e
      米国東部 (バージニア北部) (us-east-1) ami-0abcb9f9190e867ab ami-0cb7959f92429410a
      米国東部 (オハイオ) (us-east-2) ami-04ea7cb66af82ae4a ami-0118b61dc2312dee2
      欧州 (フランクフルト) (eu-central-1) ami-0d741ed58ca5b342e ami-0c57db5b204001099
      欧州 (ストックホルム) (eu-north-1) ami-0c65a309fc58f6907 ami-09354b076296f5946
      欧州 (アイルランド) (eu-west-1) ami-08716b70cac884aaa ami-0fbc930681258db86
      欧州 (ロンドン) (eu-west-2) ami-0c7388116d474ee10 ami-0d832fced2cfe0f7b
      欧州 (パリ) (eu-west-3) ami-0560aea042fec8b12 ami-0f8fa088b406ebba2
      アジアパシフィック (東京) (ap-northeast-1) ami-0bfedee6a7845c26d ami-08e41cc84f4b3f27f
      アジアパシフィック (ソウル) (ap-northeast-2) ami-0a904348b703e620c ami-0c43b885e33fdc29e
      アジアパシフィック (ムンバイ) (ap-south-1) ami-09c3eb35bb3be46a4 ami-0d3ecaf4f3318c714
      アジアパシフィック (シンガポール) (ap-southeast-1) ami-07b922b9b94d9a6d2 ami-0655b4dbbe2d46703
      アジアパシフィック (シドニー) (ap-southeast-2) ami-0f0121e9e64ebd3dc ami-07079cd9ff1b312da
      Kubernetes バージョン 1.11.9
      リージョン Amazon EKS 最適化 AMI (GPU 対応)
      米国西部 (オレゴン) (us-west-2) ami-05ecac759c81e0b0c ami-08377056d89909b2a
      米国東部 (バージニア北部) (us-east-1) ami-02c1de421df89c58d ami-06ec2ea207616c078
      米国東部 (オハイオ) (us-east-2) ami-03b1b6cc34c010f9c ami-0e6993a35aae3407b
      欧州 (フランクフルト) (eu-central-1) ami-0c2709025eb548246 ami-0bf09c13f4204ce9d
      欧州 (ストックホルム) (eu-north-1) ami-084bd3569d08c6e67 ami-0a1714bb5be631b59
      欧州 (アイルランド) (eu-west-1) ami-0e82e73403dd69fa3 ami-0b4d0f56587640d5a
      欧州 (ロンドン) (eu-west-2) ami-0da9aa88dd2ec8297 ami-00e98f9e6fd2319e5
      欧州 (パリ) (eu-west-3) ami-099369bc73d1cc66f ami-0039e2556e6290828
      アジアパシフィック (東京) (ap-northeast-1) ami-0d555d5f56c843803 ami-07fc636e8f6d3e18b
      アジアパシフィック (ソウル) (ap-northeast-2) ami-0144ae839b1111571 ami-002057772097fcef9
      アジアパシフィック (ムンバイ) (ap-south-1) ami-02071c0110dc365ba ami-04fe7f4c75aac7196
      アジアパシフィック (シンガポール) (ap-southeast-1) ami-00c91afdb73cf7f93 ami-08d5da0b12751a31f
      アジアパシフィック (シドニー) (ap-southeast-2) ami-05f4510fcfe56961c ami-04024dd8e0b9e36ff
      Kubernetes バージョン 1.10.13
      リージョン Amazon EKS 最適化 AMI (GPU 対応)
      米国西部 (オレゴン) (us-west-2) ami-05a71d034119ffc12 ami-0901518d7557125c8
      米国東部 (バージニア北部) (us-east-1) ami-03a1e71fb42fc37dd ami-00f74c3728d4ca27d
      米国東部 (オハイオ) (us-east-2) ami-093d55c2ba99ab2c8 ami-0a788defb66cdfffb
      欧州 (フランクフルト) (eu-central-1) ami-03bdf8079f6c013c5 ami-0a8536a894bd4ea06
      欧州 (ストックホルム) (eu-north-1) ami-0be77fe86d741fc81 ami-05baf7a6c293fe2ed
      欧州 (アイルランド) (eu-west-1) ami-06368da7f495b68e9 ami-0f6f3929a9d7a418e
      欧州 (ロンドン) (eu-west-2) ami-0f1f2189b4741bc60 ami-0a12396b818bc2383
      欧州 (パリ) (eu-west-3) ami-03a9acb0f6e0d424d ami-086d5edcaacd0ccfd
      アジアパシフィック (東京) (ap-northeast-1) ami-0c9fb6a3fda95d373 ami-073f06a1edd22ae2e
      アジアパシフィック (ソウル) (ap-northeast-2) ami-00ea4ea959f28b4cf ami-0baff950f5217e54e
      アジアパシフィック (ムンバイ) (ap-south-1) ami-0f07478f5c5eb9e20 ami-033bd2c2a3431923e
      アジアパシフィック (シンガポール) (ap-southeast-1) ami-05dac5d0ada75e22f ami-09defa93988984fa1
      アジアパシフィック (シドニー) (ap-southeast-2) ami-00513f18e1900ce1e ami-00d9364d705e902c9

      注記

      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 を、次のコマンドを使ってクラスターに設定されたデーモンとして適用しなければなりません。

    注記

    クラスターが 1.12 以外の Kubernetes バージョンを実行している場合は、以下の URL 内のクラスターのバージョンを必ず置き換えてください。

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