EKS on Fargate
ノードレス Kubernetes が実現できる。
ちょっと触ってみるには eksctl がすごく楽
Fargate Profile というものをクラスタに作成する
Fargate Profile の selector という項目に、Namespace や Label を指定する。指定した selector にマッチする Pod がFargate 上で実行される。
マニフェスト側に変更は必要ない、というのがよい
Fargate が k8s Node になる
Fargate Node と Pod は 1対1
kubectl get node 、 kubectl describe node <node> などで Fargate Node の情報が見える
マネジメントコンソールから見るところ今のところない
ENI が一つ付く
このセキュリティグループを Profile ごとにカスタマイズできると嬉しいが、今のところはサポートしていない
価格は、ECS/Fargate と同じで、つかった vCPU と Mem で決まる。
Pod の Resource Requests に基づいて適切な組み合わせが割り当てられる
もしくは、このセッション
小さめの Resource Requests を指定してみたが、 Fargate Node を describe してみると 4GB のメモリが割り当てられており、ちょっとよくわからなかった
アーキテクチャ
https://gyazo.com/90b65c4714e074606f703c097c8b0900
https://gyazo.com/dc0544ab588bf7ecdeaf74d7682da8ad
Fargate Profile を作ると aws-auth ConfigMap にも変更が加わる
code:aws-auth
- rolearn: arn:aws:iam::999999999999:role/YourFargatePodExecutionRole
username: system:node:{{SessionName}}
groups:
- system:bootstrappers
- system:nodes
- system:node-proxier
EKS クラスタには、デフォルトで、CoreDNS がインストールされているが、この Pod ももちろん Fargate で動かせる。
はじめ、Pod を動かしたら、RDS の名前が引けなくて、CoreDNS が動いていないことに気づいた
Fargate Profile を追加して、対象の Namespace を kube-system とかにすればよい
同じく、ALB Ingress Controller や External DNS も Fargate でうごかすことはできる
ServiceAccount が IAM Role を引き受けられるようにして、ALB や Route53 の権限を渡す
ECS では、Fargate Spot がきたが、EKS ではまだ
ロギングやモニタリングは、サイドカーが基本
Datadog Agent
https://gyazo.com/0724bf62d12e062f47d6fef300de41b0