マネージド型ノードグループの作成 - Amazon EKS

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

マネージド型ノードグループの作成

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

Amazon EKS マネージド型ノードグループを初めて起動する場合は、代わりに の使用を開始するAmazon EKS ガイドに従うことをお勧めします。このガイドでは、 ノードを持つ Amazon EKS クラスターを作成するためのチュートリアルを提供します。

重要

Prerequisite

既存の クラスター。既存のクラスターがない場合は、ガイドの 1 つに従ってクラスターとノードグループ の使用を開始するAmazon EKSを作成することをお勧めします。

マネージド型ノードグループは、 eksctl または を使用して作成できますAWS マネジメントコンソール。

eksctl

を使用してマネージド型ノードグループを作成するには eksctl

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

eksctl version

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

ノードグループは、起動テンプレートの有無にかかわらず作成できます。起動テンプレートを使用すると、カスタム AMI のデプロイを含めるために、ノードグループをさらにカスタマイズできます。 ポッドのセキュリティグループ を使用する予定がある場合は、サポートされている Amazon EC2 インスタンスタイプを必ず指定してください。詳細については、「Amazon EC2 でサポートされるインスタンスとブランチネットワークインターフェイス」を参照してください。 Arm Amazon EC2 インスタンスタイプを指定する場合は、デプロイする前に Amazon EKS 最適化された Arm Amazon Linux AMIs の考慮事項を確認してください。

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

  2. カスタム起動テンプレートを使用して、または使用せずにマネージド型ノードグループを作成します。使用可能なすべてのオプションとデフォルトの詳細なリストを表示するには、次のコマンドを入力します。

    eksctl create nodegroup --help

    の置き換え <example values> ( <>) を独自の値に置き換えます。

    • 起動テンプレートを使用しない場合、アカウント内にデフォルトの–起動テンプレートeksctlAmazon EC2を作成し、指定したオプションに基づいて作成した起動テンプレートを使用してノードグループをデプロイします。でサポートされている値の完全なリストについては--node-type、GitHub の amazon-eks-nodegroup.yaml のリストを参照してください。<my-key> をAmazon EC2キーペアまたはパブリックキーの名前に置き換えます。このキーは、起動後にノードに SSH 接続するために使用されます。Amazon EC2 キーペアをまだ持っていない場合は、AWS マネジメントコンソール で作成できます。詳細については、『Amazon EC2』の「Linux インスタンス用 Amazon EC2 ユーザーガイド キーペア」を参照してください。

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

      eksctl create nodegroup \ --cluster <my-cluster> \ --region <us-west-2> \ --name <my-mng> \ --node-type <m5.large> \ --nodes <3> \ --nodes-min <2> \ --nodes-max <4> \ --ssh-access \ --ssh-public-key <my-key> \ --managed
    • 起動テンプレートを使用する – 起動テンプレートはすでに存在し、「」で指定されている要件を満たしている必要があります起動テンプレート設定の基本。 すべての Kubernetes サービスアカウントに IAM ロールを割り当てて、ポッドが必要最小限のアクセス許可のみを持つようにする計画の場合、クラスター内のいずれのポッドにも、Amazon EC2 インスタンスメタデータサービス (IMDS) へのアクセスを必要とする他の理由 (現在のリージョンを取得するなど) がなければ、IMDS へのポッドアクセスをブロックすることをお勧めします。詳細については、「IAMサービスアカウントの ロール」および「IMDS および Amazon EC2 インスタンスプロファイルの認証情報へのアクセスの制限」を参照してください。IMDS へのポッドアクセスをブロックする場合は、起動テンプレートで必要な設定を指定します。

      1. という名前のファイルを作成する eks-nodegroup.yaml 以下の内容の 。起動テンプレートを使用せずにデプロイするときに指定したいくつかの設定は、起動テンプレートに移動されます。を指定しない場合version、テンプレートのデフォルトバージョンが使用されます。

        apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: <my-cluster> region: <region-code> managedNodeGroups: - name: <node-group-lt> launchTemplate: id: lt-<id> version: "<1>"

        eksctl 設定ファイル設定の詳細なリストについては、 ドキュメントの「Config fileeksctl schema」を参照してください。

      2. 次のコマンドを使用して、ノードグループをデプロイします。

        eksctl create nodegroup --config-file eks-nodegroup.yaml
AWS マネジメントコンソール

を使用してマネージド型ノードグループを作成するには AWS マネジメントコンソール

  1. クラスターステータスが ACTIVE と表示されるまで待ちます。まだ ACTIVE ではないクラスターにはマネージド型ノードグループを作成できません。

  2. https://console.aws.amazon.com/eks/home#/clusters にある Amazon EKS コンソールを開きます。

  3. マネージド型ノードグループを作成するクラスターの名前を選択します。

  4. [設定] タブを選択します。

  5. [設定] タブで、[コンピューティング] タブを選択し、[ノードグループの追加] を選択します。

  6. [Configure node group (ノードグループの設定)] ページで、必要に応じてパラメータを指定し、[次へ] を選択します。

    • [名前] – マネージド型ノードグループの一意の名前を入力します。

    • [ノード IAM ロール名] – ノードグループで使用するノードインスタンスロールを選択します。詳細については、「 」を参照してくださいAmazon EKS ノードIAMロール

      重要

      セルフマネージドノードグループによって現在使用されていないロールを使用するか、新しいセルフマネージドノードグループで使用する予定のロールを使用することをお勧めします。詳細については、「 」を参照してくださいマネージド型ノードグループの削除

    • [起動テンプレートの使用 – (オプション)] 既存の起動テンプレートを使用する場合は [ ] を選択し、[起動テンプレートのバージョン (オプション)] を選択します。バージョンを選択しない場合、 はテンプレートのデフォルトバージョンAmazon EKSを使用します。起動テンプレートを使用すると、カスタム AMI のデプロイなど、ノードグループをさらにカスタマイズできます。起動テンプレートは、「」の要件を満たしている必要があります起動テンプレートのサポート。独自の起動テンプレートを使用しない場合Amazon EKS、API はアカウントにデフォルトのAmazon EC2起動テンプレートを作成し、デフォルトの起動テンプレートを使用してノードグループをデプロイします。サービスアカウントの IAM ロールを実装しAWS、サービスへのアクセスを必要とするすべてのポッドに、必要なアクセス許可を直接割り当てます。また、クラスター内のポッドに、現在のリージョンの取得などの他の理由で IMDS へのアクセスが必要ない場合は、起動テンプレートでホストネットワーキングを使用しないポッドに対して IMDS へのアクセスを無効にすることもできます。詳細については、「 」を参照してくださいIMDS および Amazon EC2 インスタンスプロファイルの認証情報へのアクセスの制限

    • [Kubernetes ラベル] – (オプション) マネージド型ノードグループ内のノードに Kubernetes ラベルを適用するように選択できます。

    • [タグ] – (オプション) Amazon EKS マネージド型ノードグループにタグを付けることを選択できます。これらのタグは、Auto Scaling グループやインスタンスなど、ノードグループ内の他のリソースには伝達されません。詳細については、「 」を参照してくださいAmazon EKS リソースのタグ付け

  7. [Set compute and scaling configuration (コンピューティングとスケーリングの設定)] ページで、必要に応じてパラメータを入力し、[次へ] を選択します。

    ノードグループのコンピューティング設定

    • [AMI type] GPU 以外のインスタンスの場合は – [Amazon Linux 2 (AL2_x86_64)]、[Amazon Linux 2 GPU Enabled (AL2_x86_64_GPU) (Amazon Linux 2 GPU 有効 (AL2_x86_64_GPU))]、または Arm の場合は Amazon Linux 2 (AL2_ARM_64) を選択します。

      Arm インスタンスをデプロイする場合は、デプロイAmazon EKS 最適化された Arm Amazon Linux AMIsする前に「」の考慮事項を確認してください。

      前のページで起動テンプレートを指定し、起動テンプレートで AMI を指定した場合、値を選択することはできません。テンプレートの値が表示されます。テンプレートで指定された AMI は、 の要件を満たしている必要がありますカスタム AMI の使用

    • Capacity type (キャパシティータイプ–) キャパシティータイプを選択します。キャパシティータイプの選択の詳細については、「」マネージド型ノードグループのキャパシティータイプを参照してください。同じノードグループ内で異なるキャパシティータイプを混在させることはできません。両方の容量タイプを使用する場合は、それぞれに容量とインスタンスタイプがある別々のノードグループを作成します。

    • インスタンスタイプ – 1 つ以上のインスタンスタイプがデフォルトで指定されています。デフォルトのインスタンスタイプを削除するには、インスタンスタイプの右側Xで [] を選択します。マネージド型ノードグループで使用するインスタンスタイプを選択します。コンソールには、一般的に使用されるインスタンスタイプのセットが表示されます。サポートされているインスタンスタイプの完全なセットについてはGitHub の amazon-eks-nodegroup.yaml のリストを参照してください。表示されていないインスタンスタイプでマネージド型ノードグループを作成する必要がある場合はeksctl、、、AWS CLI、または SDK AWS CloudFormationを使用してノードグループを作成します。前のページで起動テンプレートを指定した場合、起動テンプレートで指定する必要があるため、値を選択することはできません。起動テンプレートの値が表示されます。[容量タイプ] で [スポット] を選択した場合は、可用性を高めるために複数のインスタンスタイプを指定することをお勧めします。インスタンスタイプの選択の詳細については、「 の考慮事項」を参照してくださいマネージド型ノードグループのキャパシティータイプ

      各 Amazon EC2 インスタンスタイプは最大数の Elastic Network Interface (ENI) をサポートし、各 ENI は最大数の IP アドレスをサポートします。各ワーカーノードとポッドには独自の IP アドレスが割り当てられているため、重要なのは、各ワーカーノードで実行する最大数のポッドをサポートするインスタンスタイプを選択することです。インスタンスタイプがサポートする ENI と IP アドレスの数のリストについては、「各インスタンスタイプのネットワークインターフェイスあたりの IP アドレス数」を参照してください。たとえば、m5.large インスタンスタイプは、ワーカーノードとポッドに対して最大 30 個の IP アドレスをサポートします。リージョンによっては利用できないインスタンスタイプがあります。

      ポッドのセキュリティグループ を使用する予定がある場合は、サポートされている Amazon EC2 インスタンスタイプを必ず指定してください。詳細については、「Amazon EC2 でサポートされるインスタンスとブランチネットワークインターフェイス」を参照してください。 Arm Amazon EC2 インスタンスタイプを指定する場合は、デプロイする前に Amazon EKS 最適化された Arm Amazon Linux AMIs の考慮事項を確認してください。

    • [ディスクサイズ] ノードのルートボリュームに使用するディスクサイズ (GiB 単位) – を入力します。

      前のページで起動テンプレートを指定した場合、起動テンプレートで指定する必要があるため、値を選択することはできません。

    ノードグループのスケーリング設定

    注記

    Amazon EKS は、ノードグループを自動的にスケールインまたはスケールアウトしません。ただし、これを行うように Kubernetes Cluster Autoscaler を設定することはできます。

    • [最小サイズ] マネージド型ノードグループがスケールインできるノードの最小数–を指定します。

    • [最大サイズ] マネージド型ノードグループがスケールアウトできるノードの最大数–を指定します。

    • [必要なサイズ] マネージド型ノードグループが起動時に維持する現在のノード数–を指定します。

  8. [Specify networking] ページで、必要に応じてパラメータを指定し、[Next] を選択します。

    • [サブネット] – マネージド型ノードを起動するサブネットを選択します。

      重要

      Amazon EBS ボリュームによってバックアップされ、Kubernetes Cluster Autoscaler を使用する複数のアベイラビリティーゾーンにわたってステートフルアプリケーションを実行している場合、それぞれが単一のアベイラビリティーゾーンにスコープされる複数のノードグループを設定する必要があります。また、--balance-similar-node-groups 機能を有効にする必要があります。

      重要
      • パブリックサブネットを選択し、クラスターでパブリック API サーバーのエンドポイントのみが有効になっている場合、インスタンスがクラスターに正常に参加するには、サブネットで MapPublicIPOnLaunchtrue に設定する必要があります。サブネットが 以降で eksctl または Amazon EKS 提供AWS CloudFormationテンプレートを使用して作成された場合March 26, 2020、この設定はすでに に設定されていますtrue。サブネットが eksctl より前に AWS CloudFormation または March 26, 2020 テンプレートを使用して作成されている場合は、設定を手動で変更する必要があります。詳細については、「サブネットの IPv4 アドレス指定属性の変更」を参照してください。

      • 起動テンプレートを使用して複数のネットワークインターフェイスを指定すると、 Amazon EC2 が に設定されていても、パブリック IPv4 アドレスMapPublicIpOnLaunchは自動割り当てされませんtrue。ノードがこのシナリオでクラスターに参加するには、クラスターのプライベート API サーバーエンドポイントを有効にするか、NAT ゲートウェイなどの別の方法で提供されるアウトバウンドインターネットアクセスを使用してプライベートサブネットのノードを起動する必要があります。詳細については、の「Amazon Amazon EC2 インスタンスの IP アドレス指定」を参照してくださいLinux インスタンス用 Amazon EC2 ユーザーガイド。

    • ノードへのリモートアクセスを許可する (オプション、ただしデフォルト)。SSH を有効にすることにより、インスタンスに接続し、問題がある場合に診断情報を収集できます。リモートアクセスを有効にするには、以下の手順に従います。ノードグループを作成するときは、リモートアクセスを有効にすることを強くお勧めします。ノードグループの作成後にリモートアクセスを有効にすることはできません。

      起動テンプレートの使用を選択した場合、このオプションは表示されません。ノードへのリモートアクセスを有効にするには、起動テンプレートでキーペアを指定し、起動テンプレートで指定したセキュリティグループのノードに対して適切なポートが開いていることを確認します。詳細については、「 」を参照してくださいカスタムセキュリティグループの使用

    • [SSH キーペア (オプション)] で、使用する Amazon EC2 SSH キーを選択します。詳細については、の「Amazon Amazon EC2 キーペア」を参照してくださいLinux インスタンス用 Amazon EC2 ユーザーガイド。起動テンプレートの使用を選択した場合、選択することはできません。

    • [Allow remote access from ( からのリモートアクセスを許可)] で、特定のインスタンスへのアクセスを制限する場合は、それらのインスタンスに関連付けられているセキュリティグループを選択します。特定のセキュリティグループを選択しない場合、SSH アクセスはインターネットの任意の場所 (0.0.0.0/0) から許可されます。

  9. [確認と作成] ページで、マネージド型ノードグループの設定を確認し、[作成] を選択します。

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

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

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

    kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.8.0/nvidia-device-plugin.yml
  12. (オプション) Linux ワーカーノードをクラスターに追加したら、「」の手順に従って Windows サポートをWindows サポートクラスターに追加し、Windows ワーカーノードを追加します。クラスターで Windows ワークロードのみを実行する場合でも、すべての Amazon EKS クラスターには 1 つ以上の Linux ワーカーノードが含まれている必要があります。

ノードを使用するAmazon EKSクラスターが機能するようになったので、Kubernetes アドオンのインストールとクラスターへのアプリケーションのデプロイを開始する準備が整いました。以下のトピックは、クラスターの機能を拡張するのに役立ちます。

  • クラスターを作成した IAM エンティティ (ユーザーまたはロール) は、管理者 (system:masters アクセス許可を持つ) として Kubernetes RBAC 認証テーブルに追加されます。最初は、その IAM ユーザーのみが kubectl を使用して Kubernetes API サーバーを呼び出すことができます。他のユーザーにクラスターへのアクセスを許可する場合は、そのユーザーを aws-auth ConfigMap に追加する必要があります。詳細については、「クラスターのユーザーまたは IAM ロールの管理」を参照してください。

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

  • Cluster Autoscaler – ノードグループ内のノード数を自動的に調整するように Kubernetes Cluster Autoscaler を設定します。

  • Linux ワークロードのサンプルをデプロイする – サンプルの Linux アプリケーションをデプロイして、クラスターと Linux ノードをテストします。

  • クラスターの管理 – クラスターを管理するための重要なツールの使用方法について説明します。