Amazon EKS
ユーザーガイド

Amazon EKS Windows ワーカーノードの起動

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

重要

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

クラスターに対して Windows サポートを有効にする必要があります。Windows ワーカーノードグループを起動する前に、重要な考慮事項を確認することをお勧めします。詳細については、「Windows サポートの有効化」を参照してください。

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

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

Windows ワーカーノードグループを追加する先の Amazon EKS クラスターと Linux ワーカーノードグループがまだない場合は、代わりに eksctl の開始方法 ガイドに従うことをお勧めします。これらのガイドは、Linux および Windows ワーカーノードで Amazon EKS クラスターを作成するための完全なエンドツーエンドのチュートリアルを提供します。Windows ワーカーノードグループを追加する先の Amazon EKS クラスターと Linux ワーカーノードグループがすでにある場合は、以下の手順を実行して Windows ワーカーノードグループを追加します。

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

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

eksctl version

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

注記

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

  1. 以下のコマンドを使用して、ワーカーノードグループを作成します。example の値は独自の値に置き換えます。

    eksctl create nodegroup \ --region us-west-2 \ --cluster windows \ --name windows-ng \ --node-type t2.large \ --nodes 3 \ --nodes-min 1 \ --nodes-max 4 \ --node-ami-family WindowsServer2019FullContainer

    注記

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

    eksctl create nodegroup --help

    出力:

    [ℹ] using region us-west-2 [ℹ] 1 nodegroup(s) that already exist (ng-9d1cc1f2) will be excluded [ℹ] nodegroup "windows-ng" will use "ami-0c7f1b5f1bebccac2" [WindowsServer2019FullContainer/1.14] [ℹ] 1 nodegroup (windows-ng) was included (based on the include/exclude rules) [ℹ] combined exclude rules: ng-9d1cc1f2 [ℹ] no nodegroups present in the current set were excluded by the filter [ℹ] will create a CloudFormation stack for each of 1 nodegroups in cluster "windows" [ℹ] 1 task: { create nodegroup "windows-ng" } [ℹ] building nodegroup stack "eksctl-windows-nodegroup-windows-ng" [ℹ] deploying stack "eksctl-windows-nodegroup-windows-ng" [ℹ] adding role "arn:aws:iam::123456789012:role/eksctl-windows-nodegroup-windows-NodeInstanceRole-1E4JMZRAT9AEZ" to auth ConfigMap [ℹ] nodegroup "windows-ng" has 0 node(s) [ℹ] waiting for at least 1 node(s) to become ready in "windows-ng" [ℹ] nodegroup "windows-ng" has 1 node(s) [ℹ] node "ip-192-168-88-105.us-west-2.compute.internal" is ready [✔] created 1 nodegroup(s) in cluster "windows" [ℹ] checking security group configuration for all nodegroups [ℹ] all nodegroups have up-to-date configuration
  2. (オプション) Windows サンプルアプリケーションをデプロイする — サンプルアプリケーションをデプロイして、クラスターと Windows ワーカーノードをテストします。

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

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

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

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

  2. リージョンと AMI タイプに対応する [Launch workers (ワーカーの起動)] リンクを選択します。これにより、AWS CloudFormation コンソールが開き、いくつかのフィールドに事前入力されます。

    Kubernetes version 1.14.6
    Kubernetes version 1.14.6
    リージョン Amazon EKS 用に最適化された Windows Server 2019 Full Amazon EKS 用に最適化された Windows Server 2019 Core
    米国東部 (オハイオ) (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) ワーカーを起動 ワーカーを起動
    カナダ(中部) (ca-central-1) ワーカーを起動 ワーカーを起動
    欧州 (フランクフルト) (eu-central-1) ワーカーを起動 ワーカーを起動
    欧州 (アイルランド) (eu-west-1) ワーカーを起動 ワーカーを起動
    欧州 (ロンドン) (eu-west-2) ワーカーを起動 ワーカーを起動
    欧州 (パリ) (eu-west-3) ワーカーを起動 ワーカーを起動
    欧州 (ストックホルム) (eu-north-1) ワーカーを起動 ワーカーを起動
    中東 (バーレーン) (me-south-1) ワーカーを起動 ワーカーを起動
    南米 (サンパウロ) (sa-east-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/ami-windows-latest/Windows_Server-2019-English-Core-EKS-1.14_Optimized/image_id パラメータは、Kubernetes の最新の推奨バージョン 1.14 の Amazon EKS 最適化 AMI に対して使用します。Windows の通常版を使用する場合、CoreFull に置き換えます。

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

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

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

      注記

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

    • BootstrapArguments: ワーカーノードブートストラップスクリプトに渡すオプションの引数を指定します。

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

    • NodeSecurityGroups: 「Amazon EKS クラスター VPC を作成する」で Linux ワーカーノードグループ用に作成したセキュリティグループを選択します。Linux ワーカーノードに複数のセキュリティグループがアタッチされている場合 (Linux ワーカーノードグループが eksctl で作成された場合など)、それらのグループのすべてをここで指定します。

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

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

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

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

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

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

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

      curl -o aws-auth-cm-windows.yaml https://amazon-eks.s3-us-west-2.amazonaws.com/cloudformation/2019-11-15/aws-auth-cm-windows.yaml
    2. 任意のテキストエディタでファイルを開きます。<ARN of instance role (not instance profile) of **Linux** worker node> および <ARN of instance role (not instance profile) of **Windows** worker node> のスニペットを、Linux および Windows ワーカーノード用に記録した NodeInstanceRole の値に置き換え、ファイルを保存します。

      重要

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

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

      kubectl apply -f aws-auth-cm-windows.yaml

      注記

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

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

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

    kubectl get nodes --watch
  3. (オプション) Windows サンプルアプリケーションをデプロイする — サンプルアプリケーションをデプロイして、クラスターと Windows ワーカーノードをテストします。