自己管理型 Windows ノードの起動 - Amazon EKS

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

自己管理型 Windows ノードの起動

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

重要

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

重要

AWS Outposts、AWS Wavelength、または AWS ローカルゾーンが有効になっている AWS リージョンに、クラスターまたはノードを作成するときは、eksctl を使用しないでください。代わりに、Amazon EC2 API または AWS CloudFormation を使用して、クラスターとセルフマネージドノードを作成します。詳細については、「を使用してセルフマネージド型 Linux ノードを起動するにはAWS マネジメントコンソール」および「を使用してセルフマネージド Windows ノードを起動するにはAWS マネジメントコンソール」を参照してください。

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

自己管理型 Windows ノードは、eksctl または AWS マネジメントコンソール を使用して起動できます。

を使用してセルフマネージド Windows ノードを起動するにはeksctl

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

eksctl version

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

注記

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

  1. (オプション) AmazonEKS_CNI_Policy 管理の IAM ポリシーが Amazon EKS ノードの IAM ロール にアタッチされている場合は、代わりに Kubernetes aws-node サービスアカウントに関連付ける IAM ロールにそのポリシーを割り当てることをお勧めします。詳細については、「サービスアカウントの IAM ロールを使用するように VPC CNI プラグインを設定する」を参照してください。

  2. この手順では、my-cluster リージョンに us-west-2 という名前の既存のクラスターがあることを前提としています。別の既存のクラスターの場合は、値を変更します。Windows ノードグループを追加する先の Amazon EKS クラスターと Amazon Linux 2 ノードグループがまだない場合は、代わりに eksctl の開始方法 ガイドに従うことをお勧めします。このガイドは、Amazon EKS および Windows ノードで Amazon Linux クラスターを作成するための完全なエンドツーエンドのチュートリアルを提供します。

    次のコマンドを使用してノードグループを作成します。を独自の値に置き換えます。<example values>

    eksctl create nodegroup \ --region <us-west-2> \ --cluster <my-cluster> \ --name <ng-windows> \ --node-type <t2.large> \ --nodes <3> \ --nodes-min <1> \ --nodes-max <4> \ --node-ami-family <WindowsServer2019FullContainer>
    注記
    • ノードがクラスターに参加できない場合は、トラブルシューティングガイドの「ノードがクラスターに参加できない」を参照してください。

    • コマンドで使用できるオプションの詳細については、次のコマンドを入力します。eksctl

      eksctl <command> -help

    出力:

    ノードが作成されると、数行の出力が表示されます。出力の最後の行の 1 つは、次のサンプル行です。

    [✔] created 1 nodegroup(s) in cluster "<my-cluster>"
  3. (オプション) サンプルアプリケーションをデプロイして、クラスターと Windows ノードをテストします。

  4. (オプション) すべての Kubernetes サービスアカウントに IAM ロールを割り当てて、ポッドが必要最小限のアクセス許可のみを持つようにする計画の場合、クラスター内のいずれのポッドにも、Amazon EC2 インスタンスメタデータサービス (IMDS) へのアクセスを必要とする他の理由 (現在のリージョンを取得するなど) がなければ、IMDS へのポッドアクセスをブロックすることをお勧めします。詳細については、「サービスアカウントの IAM ロール」および「IMDS および Amazon EC2 インスタンスプロファイルの認証情報へのアクセスの制限」を参照してください。

を使用してセルフマネージド Windows ノードを起動するには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://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-windows-nodegroup.yaml
    • 中国 (北京) および 中国 (寧夏)

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

    • スタック名: スタックのスタック名を選択します。AWS CloudFormationたとえば、<cluster-name>-ノードと呼び出すことができます。

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

      重要

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

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

    • 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 EC2 Systems Manager 最適化 Windows Core AMI ID の Amazon EKS パラメータが事前に入力されています。Windows の完全バージョンを使用する場合は、<Core> を Full に置き換えます。

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

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

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

      注記

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

    • :BootstrapArguments を使用して追加の kubelet 引数など、ノードブートストラップスクリプトに渡すオプションの引数を指定します。-KubeletExtraArgs

    • DisableIMDSv1: 各ノードはインスタンスメタデータサービスバージョン 1 (IMDSv1) と IMDSv2 をデフォルトでサポートしますが、IMDSv1 は無効にすることができます。 ノードグループにノードを含めない場合、またはノードグループ内のノードにスケジュールされているポッドで を使用する場合は、[trueIMDSv1] を選択します。 IMDS の詳細については、「インスタンスメタデータサービスの設定」を参照してください。

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

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

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

      重要

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

      重要

      選択したサブネットにクラスター名のタグが付いていることを確認します。詳細については、「サブネットのタグ付け要件」を参照してください。AWS Outposts、AWS Wavelength、または AWS ローカルゾーンにサブネットがある場合は、現在タグ付けされていない可能性があります。

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

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

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

ノードがクラスターに参加できるようにするには

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

    1. クラスターがデプロイされているリージョンに対応するコマンドを使用して、設定マップをダウンロードします。

      • と 中国 (北京) 以外のすべてのリージョン中国 (寧夏)

        curl -o aws-auth-cm-windows.yaml https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm-windows.yaml
      • 中国 (北京) および 中国 (寧夏)

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

      重要

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

      apiVersion: v1 kind: ConfigMap metadata: name: aws-auth namespace: kube-system data: mapRoles: | - rolearn: <ARN of instance role (not instance profile) of **Linux** node> username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes - rolearn: <ARN of instance role (not instance profile) of **Windows** 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 ノードをテストします。

  4. (オプション) AmazonEKS_CNI_Policy 管理の IAM ポリシーが Amazon EKS ノードの IAM ロール にアタッチされている場合は、代わりに Kubernetes aws-node サービスアカウントに関連付ける IAM ロールにそのポリシーを割り当てることをお勧めします。詳細については、「サービスアカウントの IAM ロールを使用するように VPC CNI プラグインを設定する」を参照してください。

  5. (オプション) すべての Kubernetes サービスアカウントに IAM ロールを割り当てて、ポッドが必要最小限のアクセス許可のみを持つようにする計画の場合、クラスター内のいずれのポッドにも、Amazon EC2 インスタンスメタデータサービス (IMDS) へのアクセスを必要とする他の理由 (現在のリージョンを取得するなど) がなければ、IMDS へのポッドアクセスをブロックすることをお勧めします。詳細については、「サービスアカウントの IAM ロール」および「IMDS および Amazon EC2 インスタンスプロファイルの認証情報へのアクセスの制限」を参照してください。