セルフマネージド型 Windows ノードの起動 - Amazon EKS

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

セルフマネージド型 Windows ノードの起動

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

重要

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

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

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

eksctl

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

この手順では、 をインストールしeksctleksctlお使いの バージョンが 以上であることが必要です0.40.0。 のバージョンを確認するには、次のコマンドを使用します。

eksctl version

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

注記

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

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

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

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

    重要

    ノードグループを AWS Outposts、、AWS Wavelengthまたは AWS Local Zones サブネットにデプロイする場合は、クラスターの作成時に AWS Outposts AWS Wavelength、、または AWS Local Zones サブネットを渡してはいけません。設定ファイルを使用してノードグループを作成し、AWS Outposts、、AWS WavelengthまたはAWSローカルゾーンのサブネットを指定する必要があります。詳細については、 ドキュメントの「設定ファイルからノードグループを作成する」および「設定ファイルスキーマeksctl」を参照してください。

    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 インスタンスプロファイルの認証情報へのアクセスの制限」を参照してください。

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

Prerequisites

  • 既存の Amazon EKS クラスターと Linux ノードグループ。これらのリソースがない場合は、 の使用を開始するAmazon EKS ガイドのいずれかに従って作成することをお勧めします。これらのガイドは、Linux ノードで Amazon EKS クラスターを作成するための完全なエンドツーエンドのチュートリアルを提供します。

  • Amazon EKS クラスターの要件を満たす既存の VPC とセキュリティグループ。詳細については、「クラスター VPC に関する考慮事項」および「Amazon EKS セキュリティグループの考慮事項.」を参照してください。 の使用を開始するAmazon EKS ガイドでは、要件を満たす VPC を作成します。または、「Amazon EKS クラスター用の VPC の作成」に従って、手動で作成することもできます。

  • Amazon EKS クラスターの要件を満たす VPC とセキュリティグループを使用する既存の Amazon EKS クラスター。詳細については、「 」を参照してください。Amazon EKS クラスターの作成. AWS、、AWS OutpostsまたはAWS Wavelengthローカルゾーンが有効になっているAWSリージョンにサブネットがある場合、クラスターの作成時にそれらのサブネットを渡してはいけません。

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

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

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

  3. Create stack.] を選択します。

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

    https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-windows-nodegroup.yaml
  5. [クイック作成スタック] ページで、必要に応じて以下のパラメータを入力します。

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

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

      重要

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

    • ClusterControlPlaneSecurityGroup: VPC SecurityGroupsを作成したときに生成した出力からAWS CloudFormationAmazon 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: (オプション) (Amazon EKS最適化された AMI の代わりに) 独自のカスタム AMI を使用している場合は、リージョンのノード AMI ID を入力します。ここで値を指定すると、 NodeImageIdSSMParam フィールドの値が上書きされます。

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

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

      注記

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

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

    • DisableIMDSv1: 各ノードは、インスタンスメタデータサービスバージョン 1 (IMDSv1) と IMDSv2 をデフォルトでサポートしますが、 は無効にすることができますIMDSv1。 ノードグループ内のノードを使用しない場合は [true] を選択し、ノードグループ内のノードでスケジュールされているポッドに を使用するようにする場合は [true] を選択しますIMDSv1。 IMDS の詳細については、「インスタンスメタデータサービスhttps://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.htmlの設定」を参照してください。

    • VpcId: 作成した VPC の ID を選択します。

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

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

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

      • サブネットにインターネットアクセスがない場合は、「」の考慮事項と追加の手順を確認してください。プライベートクラスター.

      • ノードを 1.18 以前のクラスターにデプロイする場合は、選択したサブネットにクラスター名でタグ付けされていることを確認します。置換 my-cluster ( を含む <>) を選択し、次のコマンドを実行して、現在クラスター名でタグ付けされているサブネットのリストを表示します。

        aws ec2 describe-subnets --filters Name=tag:kubernetes.io/cluster/<my-cluster>,Values=shared | grep SubnetId

        選択するサブネットが前のコマンドの出力で返されない場合は、手動でサブネットにタグを追加する必要があります。詳細については、「 」を参照してください。サブネットのタグ付け.

      • 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
    2. 任意のテキストエディタでファイルを開きます。の置き換え <ARN of instance role (not instance profile) of **Linux** node> および <ARN of instance role (not instance profile) of **Windows** 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** 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 インスタンスプロファイルの認証情報へのアクセスの制限」を参照してください。