AWS Fargate プロファイル - Amazon EKS

AWS Fargate プロファイル

クラスターの Fargate でポッドをスケジューリングする前に、起動時に Fargate を使用するポッドを指定する Fargate プロファイルを少なくとも 1 つ定義する必要があります。

Fargate プロファイルにより、管理者は Fargate でどのポッドが実行されるかを宣言できます。この宣言は、プロファイルのセレクターを介して行われます。各プロファイルには、名前空間とオプションのラベルを含むセレクターを 5 つまで設定できます。すべてのセレクターに名前空間を定義する必要があります。ラベルフィールドは、複数のオプションのキーと値のペアで構成されます。(セレクターの名前空間とセレクターで指定されたすべてのラベルを照合することによって) セレクターと一致するポッドは、Fargate でスケジューリングされます。名前空間セレクターがラベルなしで定義されている場合、Amazon EKS は、プロファイルを使用して、その名前空間で実行されるすべてのポッドを Fargate にスケジューリングしようとします。スケジューリングされるポッドが Fargate プロファイル内のいずれかのセレクターと一致する場合、そのポッドは Fargate でスケジューリングされます。

ポッドが複数の Fargate プロファイルに一致する場合、Amazon EKS は一致するものの 1 つをランダムに選択します。この場合、ポッドの仕様に以下の Kubernetes ラベルを追加することで、ポッドが使用するプロファイルを指定できます eks.amazonaws.com/fargate-profile: <profile_name>。ただし、ポッドを Fargate にスケジューリングするには、そのプロファイル内のセレクターと一致させる必要があります。

Fargate プロファイルを作成するときは、プロファイルを使用して Fargate インフラストラクチャで実行する Amazon EKS コンポーネントの、ポッド実行ロールを指定する必要があります。このロールは、承認のためにクラスターの Kubernetes ロールベースアクセス制御 (RBAC) に追加され、Fargate インフラストラクチャで実行されている kubelet が Amazon EKS クラスターに登録され、ノードとしてクラスターに表示されるようにします。ポッド実行ロールは、Amazon ECR イメージリポジトリへの読み取りアクセスを許可するために、Fargate インフラストラクチャへの IAM アクセス許可も提供します。詳細については、「ポッド実行ロール」を参照してください。

Fargate プロファイルはイミュータブルです。ただし、新しい更新されたプロファイルを作成して既存のプロファイルを置き換え、更新されたプロファイルの作成が完了した後に元のプロファイルを削除することはできます。

注記

Fargate プロファイルを使用して実行中のポッドは、プロファイルが削除されると停止され、保留状態になります。

クラスターのいずれかの Fargate プロファイルが DELETING ステータスである場合は、その Fargate プロファイルの削除が完了するのを待ってから、そのクラスターに他のプロファイルを作成する必要があります。

Fargate プロファイルのコンポーネント

Fargate プロファイルには、次のコンポーネントが含まれています。

  • ポッド実行ロール — クラスターが AWS Fargate でポッドを作成するとき、Fargate インフラストラクチャ上で実行されている kubelet は、Amazon ECR コンテナイメージをプルするなど、ユーザーに代わって AWS API を呼び出す必要があります。Amazon EKS のポッド実行ロールにより、これらを行うための IAM アクセス許可が付与されます。

    Fargate プロファイルを作成する際は、ポッドで使用するポッド実行ロールを指定する必要があります。このロールは、承認のためにクラスターの Kubernetes ロールベースアクセス制御 (RBAC) に追加され、Fargate インフラストラクチャで実行されている kubelet が Amazon EKS クラスターに登録され、ノードとしてクラスターに表示されるようにします。詳細については、「ポッド実行ロール」を参照してください。

  • サブネット – このプロファイルを使用するポッドを起動するサブネットの ID。現時点では、Fargate で実行されているポッドにはパブリック IP アドレスが割り当てられないため、このパラメータにはプライベートサブネット (インターネットゲートウェイへの直接ルートなし) のみが受け入れられます。

  • セレクター – この Fargate プロファイルを使用するためにポッドに一致するセレクター。各セレクターには名前空間が関連付けられている必要があります。必要に応じて、名前空間のラベルを指定することもできます。1 つの Fargate プロファイルに最大 5 つのセレクターを指定できます。Fargate プロファイルを使用して実行するには、ポッドはセレクターのどれかと一致する必要があるだけです。

  • 名前空間 – セレクターの名前空間を指定する必要があります。セレクターは、この名前空間で作成されたポッドのみに一致しますが、複数のセレクターを作成して複数の名前空間をターゲットにすることができます。

  • ラベル – オプションで、セレクターに一致する Kubernetes ラベルを指定できます。セレクターは、セレクターで指定されているすべてのラベルを持つポッドのみに一致します。

Fargate プロファイルの作成

このトピックでは、Fargate プロファイルの作成について説明します。AWSAmazon EKS を使用した AWS Fargate は、中国 (北京)、中国 (寧夏)、AWS GovCloud (米国東部)、AWS GovCloud (米国西部) を除くすべての Amazon EKS リージョンで使用できます。また、Fargate プロファイルに使用するポッド実行ロールを作成しておく必要があります。詳細については、「ポッド実行ロール」を参照してください。Fargate で実行されているポッドは、プライベートサブネットでのみサポートされています (AWS のサービスへの NAT ゲートウェイアクセスができますが、インターネットゲートウェイへの直接ルーティングはできません)。そのため、クラスターの VPC ではプライベートサブネットを使用できるようにする必要があります。プロファイルを作成するには eksctl または AWS Management Console を使用します。Fargate プロファイルを作成するツールの名前が付いているタブを選択します。

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

eksctl version

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

eksctl

eksctl で、Fargate プロファイルを作成するには

以下の eksctl コマンドで Fargate プロファイルを作成し、<variable text> (<> を含めて) を自分の値に置き換えます。名前空間を指定する必要がありますが、--labels オプションは必須ではありません。

eksctl create fargateprofile \ --cluster <cluster_name> \ --name <fargate_profile_name> \ --namespace <kubernetes_namespace> \ --labels <key=value>
AWS Management Console

AWS Management Console でクラスターの Fargate プロファイルを作成するには

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

  2. Fargate プロファイルを作成するクラスターを選択します。

  3. [設定] タブをクリックし、[コンピューティング] タブをクリックします。

  4. [Fargate プロファイル] で、[Fargate プロファイルを追加] を選択します。

  5. [Configure Fargate profile (Fargate プロファイルの設定) ] ページで、以下の情報を入力し、[Next (次へ) ] を選択します。

    1. [名前] に Fargate プロファイルの一意の名前を入力します。

    2. [ポッド実行ロール] で、Fargate プロファイルで使用するポッド実行ロールを選択します。eks-fargate-pods.amazonaws.com サービスプリンシパルを持つ IAM ロールのみが表示されます。ここにロールが表示されない場合は、ロールを作成する必要があります。詳細については、「ポッド実行ロール」を参照してください。

    3. [Subnets (サブネット)] で、ポッドに使用するサブネットを選択します。デフォルトでは、クラスターの VPC 内のすべてのサブネットが選択されます。Fargate で実行されているポッドでは、プライベートサブネットのみがサポートされているため、パブリックサブネットの選択を解除する必要があります。

    4. [タグ] では、オプションで Fargate プロファイルにタグを付けることができます。これらのタグは、ポッドなど、プロファイルに関連付けられた他のリソースには伝達されません。

  6. [Configure pods selection (ポッドの設定)] ページで、以下の情報を入力し、[Next (次へ)] を選択します。

    1. [Namespace (名前空間)] に、kube-systemdefault など、ポッドと照合する名前空間を入力します。

    2. (オプション) 指定された名前空間のポッドがセレクタと一致する必要があるセレクタに Kubernetes ラベルを追加します。例えば、infrastructure: fargate ラベルをセレクタに追加して、指定した名前空間に存在し、なおかつinfrastructure: fargate Kubernetes ラベルを持つポッドのみがセレクタに一致するようにできます。

  7. [Review and create (確認と作成)] ページで、Fargate プロファイルの情報を確認し、[Create (作成)] を選択します。

Fargate プロファイルの削除

このトピックでは、Fargate プロファイルを削除する方法について説明します。

Fargate プロファイルを削除すると、そのプロファイルで Fargate にスケジューリングされていたポッドはすべて削除されます。これらのポッドが別の Fargate プロファイルと一致する場合、それらのポッドはそのプロファイルで Fargate にスケジューリングされます。Fargate プロファイルがどのプロファイルとも一致しなくなった場合は、Fargate へのスケジューリングは行われず、保留中のままになる可能性があります。

一度にクラスター内の 1 つの Fargate プロファイルのみが、DELETING ステータスになることができます。そのクラスター内の他のプロファイルを削除する前に、Fargate プロファイルの削除が完了するまで待つ必要があります。

プロファイルを削除するには eksctl 、AWS Management Console、またはAWS CLI を使用します。ロールの削除に使用するツールの名前が付いているタブを選択します。

eksctl

クラスターからプロファイルを削除するには、次のコマンドを使用します。<example values> を (<> を含めて) 自分の値に置き換えます。

eksctl delete fargateprofile --name <my-profile> --cluster <my-cluster>
AWS Management Console

AWS Management Console マネジメントコンソールを使用してクラスターから Fargate プロファイルを削除するには

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

  2. Fargate プロファイルを削除するクラスターを選択します。

  3. [設定] タブをクリックし、[コンピューティング] タブをクリックします。

  4. 削除する Fargate プロファイルを選択し、[削除] をクリックします。

  5. [<cluster_name> の削除] ページで、クラスターの名前を入力し、[確認] をクリックすると削除されます。

AWS CLI

クラスターからプロファイルを削除するには、次のコマンドを使用します。<example values> を (<> を含めて) 自分の値に置き換えます。

aws eks delete-fargate-profile --fargate-profile-name <my-profile> --cluster-name <my-cluster>