このページの改善にご協力ください
このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。
クラスターの Fargate で Pod をスケジューリングする前に、起動時に Fargate を使用するPod を指定する Fargate プロファイルを少なくとも 1 つ定義する必要があります。
管理者は、Fargate プロファイルを使用してどの Pod が Fargate で実行されるかを宣言できます。これはプロファイルのセレクターを介して行うことができます。1 つのプロファイルに最大 5 つのセレクターを追加できます。各セレクターには名前空間が含まれている必要があります。セレクターにはラベルを含めることもできます。ラベルフィールドは、複数のオプションのキーと値のペアで構成されます。セレクターに一致するポッドは Fargate でスケジュールされます。ポッドは、セレクターで指定された名前空間とラベルを使用して照合されます。名前空間セレクターがラベルなしで定義されている場合、Amazon EKS は、プロファイルを使用して、その名前空間で実行されるすべての Pod を Fargate にスケジュールしようとします。スケジューリングされる Pod が Fargate プロファイル内のいずれかのセレクターと一致する場合、その Pod は Fargate でスケジューリングされます。
Pod が複数の Fargate プロファイルと一致する場合、次の Kubernetes ラベルを Pod 仕様に追加することで、Pod がどのプロファイルを使用するかを指定することができます: eks.amazonaws.com/fargate-profile: my-fargate-profile
。Pod を Fargate にスケジューリングするには、そのプロファイル内のセレクターと一致する必要があります。Kubernetes アフィニティ/アンチアフィニティルールは適用されないため、Amazon EKS Fargate Pod では必要ありません。
Fargate プロファイルを作成する際は、Pod 実行ロールを指定する必要があります。この実行ロールは、プロファイルを使用して Fargate インフラストラクチャで実行される Amazon EKS コンポーネントのためのものです。承認のためにクラスターの Kubernetes ロールベースのアクセスコントロールkubelet
が Amazon EKS クラスターに登録され、クラスター内でノードとして表示されるようになります。Pod 実行ロールは、Amazon ECR イメージリポジトリへの読み取りアクセスを許可するために、Fargate インフラストラクチャへの IAM アクセス許可も提供します。詳細については「Amazon EKS Pod 実行 IAM ロール」を参照してください。
Fargate プロファイルは変更できません。ただし、新しい更新されたプロファイルを作成して既存のプロファイルを置き換え、その後元のプロファイルを削除することはできます。
注記
Fargate プロファイルを使用して実行中の Pod は、プロファイルが削除されると停止され、保留状態になります。
クラスターのいずれかの Fargate プロファイルが DELETING
ステータスである場合は、Fargate プロファイルの削除が完了するのを待ってから、そのクラスターに他のプロファイルを作成する必要があります。
注記
Fargate は現在 Kubernetes topologySpreadConstraints
Amazon EKS と Fargate は、Fargate プロファイルで定義されている各サブネットに Pod を分散させます。ただし、分散が偏ってしまう場合があります。均等な分散が必要な場合は、2 つの Fargate プロファイルを使用してください。2 つのレプリカをデプロイし、ダウンタイムを発生させたくないシナリオでは、均等な分散が重要になります。各プロファイルにはサブネットを 1 つだけ含めることをお勧めします。
Fargate プロファイルのコンポーネント
Fargate プロファイルには、次のコンポーネントが含まれています。
- ポッド実行ロール
-
クラスターが AWS Fargate で Pod を作成するとき、Fargate インフラストラクチャ上で実行されている
kubelet
は、ユーザーに代わって AWS API を呼び出す必要があります。例えば、Amazon ECR からコンテナイメージを取得するためのコールを行う必要があります。Amazon EKS の Pod 実行ロールにより、これらを行うための IAM アクセス許可が付与されます。Fargate プロファイルを作成する際は、Pod で使用する Pod 実行ロールを指定する必要があります。このロールは、承認のためにクラスターの Kubernetes ロールベースのアクセスコントロール
(RBAC) に追加されます。これにより、Fargate インフラストラクチャで実行されている kubelet
が Amazon EKS クラスターに登録され、クラスター内でノードとして表示されるようになります。詳細については「Amazon EKS Pod 実行 IAM ロール」を参照してください。 - サブネット
-
このプロファイルを使用する Pod を起動するサブネットの ID。現時点では、Fargate で実行されている Pod にはパブリック IP アドレスが割り当てられていません。したがって、このパラメータには、プライベートサブネット (インターネットゲートウェイへの直接ルートなし) のみが受け入れられます。
- セレクター
-
この Fargate プロファイルを使用するために Pod に一致するセレクター。1 つの Fargate プロファイルに最大 5 つのセレクターを指定できます。セレクターには次のコンポーネントがあります:
-
名前空間 – セレクターの名前空間を指定する必要があります。セレクターはこの名前空間で作成された Pod のみを照合します。ただし、複数のセレクターを作成して複数の名前空間をターゲットにすることはできます。
-
ラベル – オプションで、セレクターに一致する Kubernetes ラベルを指定できます。セレクターは、セレクターで指定されているすべてのラベルを持つ Pod のみに一致します。
-
Fargate プロファイルのワイルドカード
名前空間、ラベルキー、およびラベル値のセレクター基準では、Kubernetes で許可されている文字に加えて、*
および ?
の使用が許可されています。
-
*
は、文字なし、1 文字、または複数の文字を表します。例:prod*
はprod
およびprod-metrics
を表します。 -
?
は 1 文字を表します (例:value?
はvaluea
を表します)。しかし、value
およびvalue-a
を表すことはできません。?
は厳密に 1 文字だけを表すためです。
これらのワイルドカード文字は、任意の位置や組み合わせで使用できます (例: prod*
、*dev
、および frontend*?
)。正規表現など、他のワイルドカードやパターンマッチング形式はサポートされていません。
Pod 仕様内の名前空間とラベルに一致するプロファイルが複数ある場合、Fargate はプロファイル名による英数字ソートに基づいてプロファイルを選択します。例えば、(beta-workload
という名前の) プロファイル A と (prod-workload
という名前の) プロファイル B の両方に、起動する Pod に一致するセレクターがある場合、Fargate は Pod にプロファイル A (beta-workload
) を選択します。Pod には、プロファイル A のラベルが付いています (例: eks.amazonaws.com/fargate-profile=beta-workload
)。
ワイルドカードを使用する新しいプロファイルに既存の Fargate Pod を移行するには、次の 2 つの方法があります。
-
一致するセレクターを持つ新しいプロファイルを作成し、古いプロファイルを削除します。古いプロファイルでラベル付けされたポッドは、一致する新しいプロファイルに再スケジュールされます。
-
ワークロードを移行したいものの、各 Fargate Pod にどの Fargate ラベルが付いているかわからない場合は、次の方法を使用できます。新しいプロファイルを作成し、同じクラスター上のプロファイルの中でアルファベット順で最初に並べられる名前を付けます。次に、新しいプロファイルに移行する必要がある Fargate Pod をリサイクルします。
Fargate プロファイルの作成
このセクションでは、Fargate プロファイルを作成する方法について説明します。また、Fargate プロファイルに使用する Pod 実行ロールを作成しておく必要があります。詳細については「Amazon EKS Pod 実行 IAM ロール」を参照してください。Fargate で実行されている Pod は、プライベートサブネットでのみサポートされています (AWS サービスへの NAT ゲートウェイアクセスはできますが、インターネットゲートウェイへの直接ルーティングはできません)。これは、クラスターの VPC がプライベートサブネットを使用できるようにするためです。
プロファイルは以下を使用して作成できます。
eksctl
eksctl
で、Fargate プロファイルを作成するには
以下の eksctl
コマンドで Fargate プロファイルを作成し、すべてのサンプル値を自分の値に置き換えます。名前空間を指定する必要があります。ただし、--labels
オプションは必須ではありません。
eksctl create fargateprofile \ --cluster my-cluster \ --name my-fargate-profile \ --namespace my-kubernetes-namespace \ --labels key=value
my-kubernetes-namespace
および key=value
ラベルには、特定のワイルドカードを使用できます。詳細については「Fargate プロファイルのワイルドカード」を参照してください。
AWS Management Console
AWS Management Console で、Fargate プロファイルを作成するには
-
Amazon EKS コンソール
を開きます。 -
Fargate プロファイルを作成するクラスターを選択します。
-
[コンピューティング] タブを開きます。
-
[Fargate プロファイル] で、[Fargate プロファイルを追加] を選択します。
-
[Fargate プロファイルを設定] ページで、次の操作を行います。
-
[名前] に、Fargate プロファイルの一意の名前 (
my-profile
など) を入力します。 -
[Pod 実行ロール] で、Fargate プロファイルで使用する Pod 実行ロールを選択します。
eks-fargate-pods.amazonaws.com
サービスプリンシパルを持つ IAM ロールのみが表示されます。ここにロールが表示されない場合は、ロールを作成する必要があります。詳細については「Amazon EKS Pod 実行 IAM ロール」を参照してください。 -
選択した [サブネット] を必要に応じて変更します。
注記
Fargate で実行される Pod では、プライベートサブネットのみがサポートされます。
-
[Tags] (タグ) では、オプションで Fargate プロファイルにタグを付けることができます。これらのタグは、Pod など、プロファイルに関連付けられた他のリソースには伝達されません。
-
[ 次へ] を選択してください。
-
-
[Pod の選択を設定] ページで、次の操作を行います。
-
[名前空間] に、Pod と照合する名前空間を入力します。
-
kube-system
またはdefault
など、特定の名前空間を使用して照合できます。 -
特定のワイルドカード (例:
prod-*
) を使用して、複数の名前空間 (例:prod-deployment
およびprod-test
) と照合することができます。詳細については「Fargate プロファイルのワイルドカード」を参照してください。
-
-
(オプション) セレクタに Kubernetes ラベルを追加します。特に、指定された名前空間内の Pod が一致する必要があるものにそれらを追加します。
-
ラベル
infrastructure: fargate
をセレクターに追加して、infrastructure: fargate
Kubernetes ラベルも持つ指定された名前空間の Pod のみがセレクターと一致するようにすることができます。 -
特定のワイルドカード (例:
key?: value?
) を使用して、複数の名前空間 (例:keya: valuea
およびkeyb: valueb
) と照合することができます。詳細については「Fargate プロファイルのワイルドカード」を参照してください。
-
-
[ 次へ] を選択してください。
-
-
[確認と作成] ページで、Fargate プロファイルの情報を確認し、[作成] を選択します。