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

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

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

重要

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

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

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

eksctl

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

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

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

eksctl version

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

注記

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

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

    eksctl create nodegroup \ --region region-code \ --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

    出力:

    ワーカーノードが作成されると、複数の行の出力が表示されます。出力の最後の行は、次のサンプル行のようになります。

    [ℹ] all nodegroups have up-to-date configuration
  2. (オプション) Windows サンプルアプリケーションをデプロイする — サンプルアプリケーションをデプロイして、クラスターと Windows ワーカーノードをテストします。

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

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

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

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

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

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

  4. [Specify template (テンプレートの指定)] で、 [Amazon S3 URL] を選択し、次の URL をコピーして、[Amazon S3 URL] に貼り付けて、[Next (次へ) ] を 2 回選択します。

    https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-06-10/amazon-eks-windows-nodegroup.yaml
  5. Quick create stack ページで、必要に応じて以下のパラメータを入力します。

    • Stack name: AWS CloudFormation スタックのスタック名を選択します。たとえば、cluster-name-worker-nodes と呼ぶことができます。

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

      重要

      この名前は、「ステップ 1: Amazon EKS クラスターを作成する」で使用した名前と完全一致する必要があります。それ以外の場合、ワーカーノードにクラスターを結合できません。

    • ClusterControlPlaneSecurityGroup: 「Amazon EKS クラスター VPC を作成する」で生成した AWS CloudFormation 出力の [SecurityGroups] 値を選択します。

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

    • NodeAutoScalingGroupMinSize: ワーカーノードの Auto Scaling グループがスケールインする最小ノード数を入力します。

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

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

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

      注記

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

      重要

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

    • NodeImageIdSSMParam: 現在推奨されている、 Amazon EKS が最適化された Windows Core AMI ID の Amazon EC2 Systems Manager パラメータが事前に入力されています。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: -KubeletExtraArgs を使用して、kubelet の追加引数など、ワーカーノードブートストラップスクリプトに渡すオプションの引数を指定します。

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

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

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

      重要

      いずれかのサブネットがパブリックサブネットである場合は、パブリック IP アドレスの自動割り当て設定を有効にする必要があります。この設定がパブリックサブネットに対して有効になっていない場合、そのパブリックサブネットにデプロイするワーカーノードにはパブリック IP アドレスが割り当てられず、クラスターやその他の AWS のサービスと通信できなくなります。Amazon EKS AWS CloudFormationVPC テンプレートのいずれかを使用して 03/26/2020 以前に、または eksctl を使用してサブネットがデプロイされた場合、パブリックサブネットではパブリック IP アドレスの自動割り当てが無効になります。サブネットのパブリック IP アドレス割り当てを有効にする方法については、「サブネットのパブリック IPv4 アドレス属性の変更」を参照してください。ワーカーノードがプライベートサブネットにデプロイされている場合、NAT ゲートウェイを介してクラスターや他の AWS のサービスと通信できます。

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

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

  8. 作成されたノードグループの [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/2020-06-10/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
      注記

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

      注記

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

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

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