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

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

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

このトピックは、 Auto Scaling クラスターに登録されている Linux ノードの Amazon EKS グループの起動に役立ちます。ノードがクラスターに参加したら、それらのノードに Kubernetes アプリケーションをデプロイ可能になります。Amazon Linux 2eksctlセルフマネージド型ノードは、 または で起動できますAWS マネジメントコンソール

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

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

注記

この手順には、eksctl バージョン 0.31.0-rc.0 以降が必要です。お使いのバージョンは、以下のコマンドを使用して確認できます。

eksctl version

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

重要

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

  1. 以下のコマンドは、my-clusterリージョンus-west-2に という名前の既存のクラスターがあることを前提としています。別の既存のクラスターの場合は、値を変更します。既存のクラスターがない場合は、最初にクラスターを作成する必要があります。Amazon EC2Arm インスタンスにデプロイする場合は、Arm インスタンスタイプt3.mediumに置き換えます。Arm Amazon EC2 インスタンスタイプを指定する場合は、デプロイする前に Amazon EKS最適化 ArmAmazon LinuxAMIs の考慮事項を確認してください。

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

    eksctl create nodegroup \ --cluster <my-cluster> \ --version auto \ --name <al-nodes> \ --node-type <t3.medium> \ --node-ami auto \ --nodes <3> \ --nodes-min <1> \ --nodes-max <4>

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

    出力:

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

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

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

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

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

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

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

  4. [Specify template (テンプレートの指定)] で [URL] を選択しAmazon S3、クラスターがあるリージョンに対応する URL をコピーして URL に貼り付け、[Amazon S3次へ] を 2 回選択します。

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

      https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-08-12/amazon-eks-nodegroup.yaml
    • 中国 (北京) と 中国 (寧夏)

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

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

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

      重要

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

    • ClusterControlPlaneSecurityGroup: 「」で生成した出力からSecurityGroupsAWS CloudFormation値を選択しますAmazon EKS クラスター VPC を作成する

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

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

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

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

    • NodeInstanceType: ノードのインスタンスタイプを選択します。Arm インスタンスタイプを選択する前に、「」の考慮事項を確認してくださいAmazon EKS最適化 ArmAmazon LinuxAMIs

      注記

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

      重要

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

    • NodeImageIdSSMParam: Kubernetes バージョン用に推奨される最新のAmazon EC2 Systems Manager最適化された Amazon EKS AMI ID のAmazon Linuxパラメータが事前に入力されています。Amazon EKS最適化された高速 AMI を使用する場合は、 に置き換えますamazon-linux-2amazon-linux-2-gpu Amazon EKS最適化された Arm AMI を使用する場合は、 に置き換えますamazon-linux-2amazon-linux-2-arm64 でサポートされている別の Kubernetes Amazon EKS マイナーバージョンを使用する場合は、別の1.xサポートされているバージョンに置き換えることができます。クラスターと同じ Kubernetes のバージョンを指定することをお勧めします。

      注記

      Amazon EKS ノード AMI は Amazon Linux 2 に基づいています。Amazon Linux 2 のセキュリティまたはプライバシーイベントは、Amazon Linux セキュリティセンターで追跡するか、関連付けられた RSS フィードにサブスクライブできます。セキュリティおよびプライバシーイベントには、問題の概要、影響を受けるパッケージ、および問題を修正するためにインスタンスを更新する方法などがあります。

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

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

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

      注記

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

    • BootstrapArguments: 追加の引数など、ノードブートストラップスクリプトに渡すオプションのkubelet引数を指定します。詳細については、 のブートストラップスクリプトの使用情報を参照してください。GitHub

      注記
      • アウトバウンドインターネットアクセスのないプライベート VPC でノードを起動する場合は、以下の引数を含める必要があります。

        --apiserver-endpoint <cluster-endpoint> --b64-cluster-ca <cluster-certificate-authority>
      • ノードの IP アドレスを含むブロックとは異なる CIDR ブロックのポッドに IP アドレスを割り当てる場合は、CIDR ブロックを VPC に追加し、その機能をサポートする引数を指定する必要があります。詳細については、を参照してください CNI カスタムネットワーク

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

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

    • サブネット: 「」で作成したサブネットを選択しますAmazon EKS クラスター VPC を作成する。「」で説明されているステップを使用して VPC Amazon EKS クラスター用の 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ノードを設定するときに必要になります。

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

注記

アウトバウンドインターネットアクセスのないプライベート VPC 内でノードを起動した場合は、ノードが VPC 内からクラスターに参加できるようにする必要があります。

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

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

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

        curl -o aws-auth-cm.yaml https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-08-12/aws-auth-cm.yaml
      • 中国 (北京) と 中国 (寧夏)

        curl -o aws-auth-cm.yaml https://amazon-eks.s3.cn-north-1.amazonaws.com.cn/cloudformation/2020-08-12/aws-auth-cm.yaml
    2. テキストエディタでファイルを開きます。<ARN of instance role (not instance profile)>スニペットを前の手順で書き留めた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
      注記

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

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

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

    kubectl get nodes --watch
  3. (GPU ノードのみ) GPU インスタンスタイプとAmazon EKS最適化された高速 AMI を選択した場合は、次のコマンドを使用して、クラスターで Kubernetes 用の NVIDIA デバイスプラグインを DaemonSetとして適用する必要があります。

    kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.6.0/nvidia-device-plugin.yml
  4. (オプション) サンプルアプリケーションをデプロイして、クラスターと Linux ノードをテストします。