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: fargate_profile_name。ただし、ポッドを Fargate にスケジューリングするには、そのプロファイル内のセレクターと一致させる必要があります。Kubernetes のアフィニティ/アンチアフィニティルールは考慮されず、Amazon EKS Fargate ポッドでは不要です。

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

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

注記

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

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

Amazon EKS と Fargate は、Fargate プロファイルで定義されている各サブネットにポッドを分散させようとしますが、分散が偏ってしまう場合があります。均等に分散させる必要がある場合 (ダウンタイムなしで 2 つのレプリカをデプロイする場合など)、2 つの Fargate プロファイルを使用する必要があります。各プロファイルは、サブネットを 1 つだけ備える必要があります。

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

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

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

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

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

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

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

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

Fargate プロファイルの作成

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

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

eksctl version

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

eksctl

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

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

eksctl create fargateprofile \ --cluster my-cluster \ --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. [Compute] (コンピューティング) タブを開きます。

  5. [Fargate Profiles] (Fargate プロファイル)で、[Add Fargate Profile] (Fargate プロファイルを追加)を選択します。

  6. [Configure Fargate Profile] (Fargate プロファイルを設定) ページで、次の操作を行います。

    1. [名前] に、Fargate プロファイルの一意の名前 (my-profile など) を入力します。

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

    3. [Subnets] (サブネット) ドロップダウンを展開し、名前に Public を含むすべてのサブネットの選択を解除します。Fargate で実行されるポッドでは、プライベートサブネットのみがサポートされます。

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

    5. [Next (次へ)] を選択します。

  7. [Configure pod selection] (ポッドの選択を設定) ページで、次の操作を行います。

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

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

    3. [Next (次へ)] を選択します。

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

Fargate プロファイルの削除

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

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

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

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

eksctl

eksctl で、Fargate プロファイルを削除するには

クラスターからプロファイルを削除するには、次のコマンドを使用します。example-value をすべて自分の値に置き換えてください。

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

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

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

  2. 左のナビゲーションペインで Amazon EKS [Clusters] (クラスター) を選択します。クラスターの一覧で Fargate プロファイルを削除するクラスターを選択します。

  3. [Configuration] (設定) タブを開き、次に [Compute] (コンピューティング) タブを開きます。

  4. 削除する Fargate プロファイルを選択し、[Delete] (削除) を選択します。

  5. リポジトリの [Delete Fargate Profile] (Fargate プロファイルの削除) ページで、プロファイルの名前を入力し、[Delete] (削除) を選択する。

AWS CLI

AWS CLI で、Fargate プロファイルを削除するには

クラスターからプロファイルを削除するには、次のコマンドを使用します。example-value をすべて自分の値に置き換えてください。

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