Save 37% off PRO during our Black Friday Sale! »

EKS on Fargateは最高のJob基盤 / jawsug_bgnr

Ba0b2e7a2783ae54f12665086315ed83?s=47 h3poteto
February 13, 2020

EKS on Fargateは最高のJob基盤 / jawsug_bgnr

JAWS-UG 初心者支部#23 次回のハンズオン勉強会向けのチューター向け予習会 でのLT

Ba0b2e7a2783ae54f12665086315ed83?s=128

h3poteto

February 13, 2020
Tweet

Transcript

  1. EKS on Fargate は最⾼のJob 基盤 @h3poteto

  2. ⾃⼰紹介 Akira Fukushima ( 福島 明) GitHub: h3poteto twitter: @h3_poteto

    仕事: SRE / LAPRAS Inc.
  3. Fargate 使ってますか?

  4. Fargate ってなに インスタンスの管理をすることなくDocker コンテナを動かせるエン ジン もともとECS Fargate として,ECS のノードをフルマネージドして くれていた

    最近EKS on Fargate が出たことで,Kubernetes からも利⽤できるよ うになった
  5. ノードがフルマネージドってどういう こと? AWS 側で管理されているFargate ⽤のインスタンスが存在する (我々からは⾒えない Fargate の要求があると,このインスタンスをユーザに割り当て て,そのPod 専⽤のインスタンスとして供給する

    Pod が終了したらインスタンスもクラスタから除外される 我々のVPC 内に存在するEC2 とは別管理なので,EC2 ⼀覧にも出て こない もちろんインスタンスにSSH するこもとできない
  6. None
  7. ただしあくまでECS/EKS のノードの⼀ 部であることは変わらない

  8. (追加設定はいるけど)普通に ECS/EKS のコンテナと同じように動く

  9. みんなサーバーレスだって盛り上がる けど AutoScale が楽だってWeb サーバを乗 せたがるけど

  10. むしろJob を実⾏するのに最適

  11. Job Kubernetes のJob とかCronJob 単発実⾏で集計処理とかをやりたい 多重実⾏はやめてほしい

  12. Web サーバとの違い ⼤抵のWeb サーバは複数台起動している リクエストはLoadBalancer で振り分けている つまり,1 台くらい落ちてもどうということはない 落ちても,⾃動復旧してくれれば問題ない Job

    は,落ちたら再実⾏すれば良い?
  13. 再実⾏/ 多重実⾏可能なJob は,かなり 気を使って作る必要がある

  14. 単発実⾏したJob が 落ちない基盤であ ってほしい

  15. 通常ノードの場合 AutoScalingGroup は,ScaleOut するが当然ScaleIn も発⽣する ClusterAutoscaler はScaleIn 前にDrain を実⾏してくれるが,それは つまりJob

    の再実⾏ということになる SpotInstance を使っていれば,ノードはある⽇突然死ぬ
  16. Fargate は全ての要求を満たすのでは?

  17. Fargate Pod が死ぬまでインスタンスは死なない そもそもAutoScalingGroup ではないのでScaleIn の対象外 他のPod が配置されることがないので,Job が終わったらすぐにノー ドを殺しても問題ない

  18. 最⾼では?

  19. None
  20. これを待っていた!ありがとうAWS

  21. EKS on Fargate のつらみ

  22. Job がComplete してもPod が残る限り ノードも残る

  23. Fargate ノードのライフサイクル Pod がリクエストされた時点で確保 他のPod はスケジュールされない Pod がDelete されるまで残り続ける

  24. Pod 内のコマンドが正常終了してもPod ⾃⾝が削除されるわけではない Pod はCompleted として残る

  25. つまりCompleted したものも課⾦対象

  26. TTL Controller k8s 上で完了したJob をクリーンアップしてくれるController ttlSecondsAfterFinished で指定された秒数後にPod を削除する まだAlpha の機能のためEKS

    では使えない EKS でもFeatureGates をカスタマイズできるようにし てほしい……
  27. Pod のENI に付与されるSG の指定がで きない

  28. Farget のSecurityGroup EKS on Fargate のPod にはENI が付与される そこにSG が付与されることで,アクセス制限ができる

    しかし付与されるSG は,EKS クラスタ本体のSG 任意のSG を指定することができないので,細かいアクセス制限がや りにくい EKS クラスタ本体のSG ⾃体もこちらで指定することができないの で,terraform で管理しにくい
  29. DaemonSet が使えない これはどうにもならないかも……

  30. DaemonSet が使えない EKS on Fargate ではFargate で起動したPod しかFargate ノードに配 置されない

    Kubernetes のDaemonSet が配置できない Fluentd でコンテナのログを全部かき集めたり Datadog でインスタンスやコンテナのメトリクスを収集したりでき ない
  31. VolumeMount が使えない せめてEFS は使いたいな……

  32. VolumeMount が使えない EC2 インスタンスではないので当然EBS はAttach できない hostPath も使えない ので当然EFS も使えない

    emptyDir だけは使えるが…… EFS だけはRoadmap にリクエストが上がっている: https://github.com/aws/containers-roadmap/issues/53
  33. 対応してもらえるのを楽しみにしてる