このページの改善にご協力ください
本ユーザーガイドの改善にご協力いただけませんか? このページの下部までスクロールし、[GitHub でこのページの編集] を選択します。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。
クラスターの AWS Fargate の使用を開始する
重要
Amazon EKS を使用した AWS Fargate は、AWS GovCloud (米国東部) および AWS GovCloud (米国西部) ではご利用いただけません。
このトピックでは、Amazon EKS クラスターを使用して AWS Fargate で Pods の実行を開始する方法について説明します。
CIDR ブロックを使用してクラスターのパブリックエンドポイントへのアクセスを制限する場合は、プライベートエンドポイントアクセスも有効にすることをお勧めします。こうすることで、Fargate Pods がクラスターと通信できるようになります。プライベートエンドポイントが有効になっていない場合、パブリックアクセスに指定する CIDR ブロックに、VPC からのアウトバウンドソースを含める必要があります。詳細については、「クラスター API サーバーエンドポイントへのネットワークアクセスを制御する」を参照してください。
前提条件
既存のクラスター。既存の Amazon EKS クラスターがなければ、Amazon EKS の使用を開始する を参照してください。
ステップ 1: 既存のノードが Fargate Pods と通信できることを確認する
ノードのない新しいクラスター、またはマネージド型ノードグループのみを持つクラスターを使用している場合は、「ステップ 2: Fargate Pod 実行ロールを作成する」に進みます。
既にそれに関連付けられているノードがある既存のクラスターで作業していると仮定します。これらのノードの Pods が Fargate で実行されている Pods と自由に通信できることを確認します。Fargate で実行されている Pods は、関連付けられているクラスターのクラスターセキュリティグループを使用するように自動的に設定されます。クラスター内の既存のノードが、クラスターセキュリティグループとの間でトラフィックを送受信できることを確認してください。マネージドノードグループを使用してノードライフサイクルを簡素化する は、クラスターセキュリティグループも使用するように自動的に設定されるため、この互換性のためにノードを変更したり確認したりする必要はありません。
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 で Pods を作成する場合、Fargate インフラストラクチャで実行されるコンポーネントは、ユーザーに代わって AWS API にコールを実行す必要があります。Amazon EKS の Pod 実行ロールにより、これらを行うための IAM アクセス許可が付与されます。AWS Fargate Pod 実行ロールを作成するには、「Amazon EKS Pod 実行 IAM ロール」を参照してください。
注記
--fargate
オプションを使用して eksctl
でクラスターを作成した場合は、クラスターに Pod 実行ロールが既にあり、これはパターン eksctl-
で IAM コンソールに表示されます。同様に、my-cluster
-FargatePodExecutionRole-ABCDEFGHIJKL
eksctl
を使用して Fargate プロファイルを作成する場合、eksctl
は Pod 実行ロールを作成します (まだ存在しない場合)。
ステップ 3: クラスターの Fargate プロファイルを作成する
クラスターの Fargate で実行されている Pods をスケジューリングする前に、起動時に Fargate を使用する Pods を指定する Fargate プロファイルを定義する必要があります。詳細については、「起動時にどの Pods が AWS Fargate を使用するのかを定義する」を参照してください。
注記
--fargate
オプションを使用して eksctl
でクラスターを作成した場合、クラスターの Fargate プロファイルは、kube-system
と default
の名前空間のすべての Pods のセレクターを使用して既に作成されています。Fargate で使用するその他の名前空間の Fargate プロファイルを作成するには、以下の手順に従います。
Fargate プロファイルを作成するには、eksctl
または AWS Management Consoleを使用します。
ステップ 4: CoreDNS を更新する
デフォルトでは、CoreDNS は Amazon EKS クラスターの Amazon EC2 インフラストラクチャで実行するように設定されています。クラスター内の Fargate でのみ Pods を実行する場合は、次のステップを実行します。
注記
--fargate
オプションを使用して eksctl
でクラスターを作成した場合は、次のステップ にスキップできます。
次のコマンドを使用して、CoreDNS の Fargate プロファイルを作成します。
をクラスター名に、my-cluster
を アカウント ID に、111122223333
を Pod 実行ロール名に、そしてAmazonEKSFargatePodExecutionRole
、0000000000000001
、0000000000000002
をプライベートサブネットの ID に置き換えます。Pod 実行ロールがない場合は、最初に 作成する 必要があります。0000000000000003
重要
ロール ARN に
/
以外のパスを含めることはできません。例えば、ロールの名前がdevelopment/apps/my-role
の場合、ロールの ARN を指定するときにmy-role
に変更する必要があります。ロール ARN の形式はarn:aws:iam::
であることが必要です。111122223333
:role/role-name
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-0000000000000001
subnet-0000000000000002
subnet-0000000000000003
次のコマンドを実行して、CoreDNS Pods から
eks.amazonaws.com/compute-type : ec2
アノテーションを削除します。kubectl patch deployment coredns \ -n kube-system \ --type json \ -p='[{"op": "remove", "path": "/spec/template/metadata/annotations/eks.amazonaws.com~1compute-type"}]'
次のステップ
-
以下のワークフローを使用すると、Fargate で実行するために既存のアプリケーションの移行を開始できます。
-
アプリケーションの Kubernetes 名前空間と Kubernetes ラベルに一致する Fargate プロファイルを作成します。
-
既存のいずれかの Pods を削除および再作成し、Fargate でスケジューリングされるようにします。例えば、以下のコマンドでは、
coredns
デプロイのロールアウトがトリガーされます。名前空間とデプロイタイプを変更して、特定の Pods を更新できます。kubectl rollout restart -n
kube-system
deployment coredns
-
-
Application Load Balancers でアプリケーションと HTTP トラフィックをルーティングする をデプロイして、Fargate で実行されている Pods が Ingress オブジェクトを使用できるようにします。
-
Vertical Pod Autoscaler でポッドリソースを調整する を使用して Fargate Pods の CPU とメモリの適切な初期サイズを設定し、Horizontal Pod Autoscaler を使用してポッドデプロイをスケールする を使用してそれらの Pods をスケールできます。Vertical Pod Autoscaler で、より上位の CPU とメモリの組み合わせを持つ Fargate に Pods を自動的に再デプロイする場合は、Vertical Pod Autoscaler のモードを
Auto
またはRecreate
に設定します。これは、正しい機能を保証するためです。詳細については、「GitHub」で「Vertical Pod Autoscalerのドキュメント」を参照してください。 -
これらの手順 に従って、アプリケーションをモニタリングするための AWS Distro for OpenTelemetry
(ADOT) コレクターをセットアップします。