このページの改善にご協力ください
このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。
クラスターの AWS Fargate の使用を開始する
このトピックでは、Amazon EKS クラスターを使用して AWS Fargate で Pod の実行を開始する方法について説明します。
CIDR ブロックを使用してクラスターのパブリックエンドポイントへのアクセスを制限する場合は、プライベートエンドポイントアクセスも有効にすることをお勧めします。こうすることで、Fargate Pod がクラスターと通信できるようになります。プライベートエンドポイントが有効になっていない場合、パブリックアクセスに指定する CIDR ブロックに、VPC からのアウトバウンドソースを含める必要があります。詳細については、「クラスター API サーバーエンドポイント」を参照してください。
前提条件
既存のクラスター。既存の Amazon EKS クラスターがなければ、Amazon EKS の使用を開始する を参照してください。
ステップ 1: 既存のノードが Fargate Pod と通信できることを確認する
ノードのない新しいクラスター、またはマネージド型ノードグループ (マネージドノードグループを使用してノードライフサイクルを簡素化する を参照) のみを持つクラスターを使用している場合は、「ステップ 2: Fargate Pod 実行ロールを作成する」に進みます。
既にそれに関連付けられているノードがある既存のクラスターで作業していると仮定します。これらのノードの Pod が Fargate で実行されている Pod と自由に通信できることを確認する必要があります。Fargate で実行されている Pod は、関連付けられているクラスターのクラスターセキュリティグループを使用するように自動的に設定されます。クラスター内の既存のノードが、クラスターセキュリティグループとの間でトラフィックを送受信できることを確認します。マネージドノードグループもクラスターセキュリティグループを使用するように自動的に設定されるため、この互換性を変更または確認する必要はありません (「マネージドノードグループを使用してノードライフサイクルを簡素化する」を参照)。
eksctl または Amazon EKS マネージド型 AWS CloudFormation テンプレートで作成された既存のノードグループの場合、クラスターセキュリティグループをノードに手動で追加できます。または、ノードグループの Auto Scaling グループ起動テンプレートを変更して、クラスターセキュリティグループをインスタンスにアタッチすることもできます。詳細については、Amazon VPC ユーザーガイドのインスタンスのセキュリティグループを変更するを参照してください。
AWS Management Console で、クラスターの [Networking] (ネットワーク) セクションでクラスターのクラスターセキュリティグループを確認できます。これを行うには、次の AWS CLI コマンドを実行します。このコマンドを使用する場合は、<my-cluster> を自分のクラスター名に置き換えます。
aws eks describe-cluster --name <my-cluster> --query cluster.resourcesVpcConfig.clusterSecurityGroupId
ステップ 2: Fargate Pod 実行ロールを作成する
クラスターが AWS Fargate で Pod を作成する場合、Fargate インフラストラクチャで実行されるコンポーネントは、ユーザーに代わって AWS API を呼び出す必要があります。Amazon EKS の Pod 実行ロールにより、これらを行うための IAM アクセス許可が付与されます。AWS Fargate Pod 実行ロールを作成するには、「Amazon EKS Pod 実行 IAM ロール」を参照してください。
注記
--fargate オプションを使用して eksctl でクラスターを作成した場合は、クラスターに Pod 実行ロールが既にあり、これは eksctl-my-cluster-FargatePodExecutionRole-ABCDEFGHIJKL というパターンで IAM コンソールに表示されます。同様に、eksctl を使用して Fargate プロファイルを作成する場合、eksctl では Pod 実行ロールを作成します (まだ存在しない場合)。
ステップ 3: クラスターの Fargate プロファイルを作成する
クラスターの Fargate で実行されている Pod をスケジューリングする前に、起動時に Fargate を使用する Pod を指定する Fargate プロファイルを定義する必要があります。詳細については、「起動時にどの Pod が AWS Fargate を使用するのかを定義する」を参照してください。
注記
--fargate オプションを使用して eksctl でクラスターを作成した場合、クラスターの Fargate プロファイルは、kube-system と default の名前空間のすべての Pod のセレクターを使用して既に作成されています。Fargate で使用するその他の名前空間の Fargate プロファイルを作成するには、以下の手順に従います。
Fargate プロファイルを作成するには、次のツールのいずれかを使用します。
eksctl
この手順には、eksctl バージョン 0.212.0 以降が必要です。お使いのバージョンは、以下のコマンドを使用して確認できます。
eksctl version
eksctl のインストールまたはアップグレードの手順については、eksctl ドキュメントの「インストール
eksctl で、Fargate プロファイルを作成するには
以下の eksctl コマンドで Fargate プロファイルを作成し、すべての <example value> を自分の値に置き換えます。名前空間を指定する必要があります。ただし、--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 プロファイルの名前を入力します。名前は一意である必要があります。
-
[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: fargateKubernetes ラベルも持つ指定された名前空間の Pod のみがセレクターと一致するようにすることができます。 -
特定のワイルドカード (例:
key?: value?) を使用して、複数の名前空間 (例:keya: valueaおよびkeyb: valueb) と照合することができます。詳細については、「Fargate プロファイルのワイルドカード」を参照してください。
-
-
[Next] (次へ) を選択します。
-
-
[確認と作成] ページで、Fargate プロファイルの情報を確認し、[作成] を選択します。
ステップ 4: CoreDNS を更新する
デフォルトでは、CoreDNS は Amazon EKS クラスターの Amazon EC2 インフラストラクチャで実行するように設定されています。クラスター内で Fargate でのみ Pod を実行する場合は、次の手順を実行します。
注記
--fargate オプションを使用して eksctl でクラスターを作成した場合は、次のステップ にスキップできます。
-
次のコマンドを使用して、CoreDNS の Fargate プロファイルを作成します。
<my-cluster>をクラスター名、<111122223333>をアカウント ID、<AmazonEKSFargatePodExecutionRole>をポッド実行ロール名に置き換え、また、<000000000000000a>、<000000000000000b>、<000000000000000c>をプライベートサブネットの ID に置き換えます。Pod 実行ロールがない場合は、最初に作成する必要があります (「ステップ 2: Fargate Pod 実行ロールを作成する」を参照)。重要
ロール ARN に
/以外のパスを含めることはできません。例えば、ロールの名前がdevelopment/apps/AmazonEKSFargatePodExecutionRoleの場合、ロールの ARN を指定するときにAmazonEKSFargatePodExecutionRoleに変更する必要があります。ロール ARN の形式はarn:aws:iam::<111122223333>:role/<AmazonEKSFargatePodExecutionRole>であることが必要です。aws eks create-fargate-profile \ --fargate-profile-name coredns \ --cluster-name <my-cluster> \ --pod-execution-role-arn arn:aws:iam::<111122223333>:role/<AmazonEKSFargatePodExecutionRole> \ --selectors namespace=kube-system,labels={k8s-app=kube-dns} \ --subnets subnet-<000000000000000a> subnet-<000000000000000b> subnet-<000000000000000c> -
corednsデプロイのロールアウトをトリガーします。kubectl rollout restart -n kube-system deployment coredns
次のステップ
-
以下のワークフローを使用すると、Fargate で実行するために既存のアプリケーションの移行を開始できます。
-
アプリケーションの Kubernetes 名前空間と Kubernetes ラベルに一致する Fargate プロファイルの作成。
-
既存のいずれかの Pod を削除および再作成し、Fargate でスケジューリングされるようにします。
<namespace>と<deployment-type>を変更して、特定のポッドを更新します。kubectl rollout restart -n <namespace> deployment <deployment-type>
-
-
Application Load Balancer を使用してアプリケーションと HTTP トラフィックをルーティングする をデプロイして、Fargate で実行されている Pod が Ingress オブジェクトを使用できるようにします。
-
Vertical Pod Autoscaler を使用してポッドリソースを調整する を使用して Fargate Pod の CPU とメモリの適切な初期サイズを設定し、Horizontal Pod Autoscaler を使用してポッドデプロイをスケールする を使用してそれらの Pod をスケールできます。Vertical Pod Autoscaler で、より上位の CPU とメモリの組み合わせを持つ Fargate に Pod を自動的に再デプロイする場合は、Vertical Pod Autoscaler のモードを
AutoまたはRecreateに設定します。これは、正しい機能を保証するためです。詳細については、GitHub で Vertical Pod Autoscalerのドキュメントを参照してください。 -
これらの手順に従って、アプリケーションをモニタリングするための AWS Distro for OpenTelemetry
(ADOT) コレクターをセットアップします。