はじめに
少し前に開催されたre:Inventで
「EKS(Elastic Kubernetes Service) 上のPodをFargateで実行できるようになった」
と発表されました。
https://aws.amazon.com/jp/blogs/news/amazon-eks-on-aws-fargate-now-generally-available/
ということで試してみました。
先にまとめ
- ワーカーノード無し (コントロールプレーン + Fargateのみ) でPodが実行可能
EKS + Fargate 構築
ちなみに、以下の内容は基本的に公式を簡略化したものですので、実際にやる場合は公式をご覧ください。
1. eksctlでクラスタを作成
今回は東京リージョンでクラスタを作成していきます。
EKS + Fargate に対応していないリージョンだとエラーになります。
(2019年12月現在 東京リージョンを含む4つのリージョンしか対応していません)
eksctl create cluster --name my-cluster --version 1.14 --fargate --region ap-northeast-1
--fargate
を指定することでFargateプロファイルなるものが作成され、PodをFargateで実行できるようになります。
なおこのとき、実行するIAMユーザーに eks:CreateFargateProfile
等の権限が無いとエラーになります。
その後の削除等も含めると eks:*FargateProfile*
の権限を付けた方が良いかと思います。
2. 作成したクラスタにPodをデプロイ
普通にkubectlで作成するだけで、自動的にFargateで実行されます。
特にEKS/Fargate用の設定等は必要ありません。(Dockerイメージの取得元をECRにする等はあるかもですが)
kubectl apply -f deployment.yaml
3. デプロイしたPodがRunningになるのを待つ
今回 replicas: 2
の Deployment で試しましたが、
1つのPodは30秒くらいで ContainerCreating
になったのに対して
もう1つは80秒くらいまで Pending
のままでした。
このあたりはFargateの機嫌次第だと思われます。
というわけで、ワーカーノードを追加することなくFargateでPodが実行できました。
その他
Fargateで稼働しているPodに対してALBを設定しようとしたのですが
alb-ingress-controller 内でエラーとなりうまくいきませんでした。
また別途調査しようと思います…