$30 off During Our Annual Pro Sale. View Details »

わたしたちはEKS運用の夢をみるか(vs ECS) / EKS vs ECS Fargate

muryoimpl
September 27, 2019

わたしたちはEKS運用の夢をみるか(vs ECS) / EKS vs ECS Fargate

muryoimpl

September 27, 2019
Tweet

More Decks by muryoimpl

Other Decks in Programming

Transcript

  1. わたしたちは EKS 運用の夢
    をみるか (vs ECS)
    ESM Real Lounge 2019/09
    無量井 健

    View Slide

  2. モチベーション
    AWS EKS を使おうとした場合、コストが高い、というイメージがありますが、実際どのくら
    いコストが高いの?というのをECS(Fargate) と価格面、構築面のコストから比較したい
    な、と思った。
    これくらいのコスト(or 増) なら、まぁ今回EKS 使ってみる?となるかどうかをみてみようと
    いう試み

    View Slide

  3. 比較の前提条件
    ● AWS の ECS (Fargate) と EKS でおおよそ同じようなインフラ、アプリケーションを
    構築して比較してみます
    ● 一部構成が異なる部分がありますのでその差分について目をつむってください
    ● ECR で管理した同一の Docker image を使用するものとします
    ● AWS インフラの構築は CloudFormation(YAML) を使用します
    ○ JSON は行数が増えるので避けました
    ● ソースはこちら: https://github.com/muryoimpl/ecs-eks-sample

    View Slide

  4. 今回作成した Fargate の構成

    View Slide

  5. 今回作成した EKS の構成
    ※EKSのコントロールプレーンは
     隠蔽されており、コンソールから
     見えない
    ※ControlPlane の部分は無料で、 
     ワーカーノード分のみインスタンス
     代がかかる

    View Slide

  6. 構築ソース(YAML)での比較
    Fargate (CloudFormation yaml): 1051行
    EKS(CloudFormation + kube object の yaml): 918行(fluentd含む)
    EKS のほうはログにCloudWatch Logs への集約のために別途 fluentd の container
    を登録する必要があり一手間かかる。kubernetes用fluentd 用 object はGitHubの
    fluentd/fluentd-kubernetes-daemonset に用意されているので一から作成する必要は
    ない。
    CloudFormationよりkubernetes object のほうが複雑さがない分わかれば書きやすい

    View Slide

  7. 作ってハマったところ
    ● EKS構築時、下記URLの手順でCloudFormationの実行のみAnsibleで実行したた
    め、API呼び出しとコンソール上のユーザが異なっており、「ワーカーノードをクラスターと結合す
    るには」の手順でレスポンスが返ってこない事象が発生した。
    https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/getting-started-console.html
    RBACというKubernetesの認証テーブルに登録されるのは クラスターを作成した IAMユーザなので、別の
    IAMユーザでは認証が通らずアクセスできない。
    => 普通はエラーメッセージが返るがこのときは何も返らなかった
    ● 比較対象のECS FargateのALBとのつなぎこみがうまく行かず …

    View Slide

  8. Fargate と EKS の料金比較
    ※ECR, RDS, 通信料について同条件として算出に含めていません。

    View Slide

  9. 料金(Fargate)
    Fargateの料金表: https://aws.amazon.com/jp/fargate/pricing/
    1vCPU 0.05056USD/時

    1GiB 0.00553USD/時

    Webサーバ1台 t2.medium 相当(2vCPU,4GiB) を30日間(24時間 * 30日 = 720時間) 使用と考えると… 

    (2 * 0.05056 * 720) + (4 * 0.00553 * 720) = 72.8064 + 15.9264 = 88.7328USD 

    9月26日 15:17 UTC の 1ドル 107.68円 で計算すると、107.68 * 88.7328 = 9554.7479円 

    t2.medium 1台で 9555円くらい。Rails 実行を考えると、mirationタスクの実行で更に費用が発生する 


    View Slide

  10. 料金(EKS)
    EKSの料金: https://aws.amazon.com/jp/eks/pricing/
    EC2の料金: https://aws.amazon.com/jp/ec2/pricing/on-demand/
    EKS 利用料が $0.20/時(隠蔽されているクラスタ管理部分のインスタンス代については無料)
    t2.medium 利用料が $0.0608/時
    t2.medium 相当を30日間(24時間 * 30日 = 720時間) 利用すると考えると… 

    (0.0608 * 720) + (0.20 * 720) = 43.776 + 144 = 187.776 USD 

    9月26日 15:17 UTC の 1ドル 107.68円 で計算すると、187.776 * 107.68 = 20219.7197円 


    View Slide

  11. EKSとFargate の料金比較結果
    Fargate: 9554.7479円/30日

    EKS: 20219.7197円/30日 


    料金だけの比較でいくと、EKSをちょっと使ってみようか、とはなりにくそう。
    コンテナオーケストレーションツールとして Kubernetes エコシステムを最大限活用した
    いという欲求がない限りは Fargate を使うことを優先させることとなりそう。

    View Slide

  12. 最後に
    設定ファイルについてはあまり大きな行数差はなかった。CloudFormation よりは
    Kubernetes object のほうがパターンが少ない分書きやすそう。ただし、ECS と比較す
    るとログ集約分の手間がかかる。
    お金の面でいうと ECS のほうがかなり安いので、新規で作成しはじめるとなるととりあ
    えず ECS で作成して必要に駆られたときに EKS or 他の Kubernetes 環境に移行す
    る、というのがよさそう

    View Slide

  13. その他参考リンク集
    ● CloudFormation の template
    ○ https://github.com/awslabs/aws-cloudformation-templates
    ● EKS: AWS マネジメントコンソール の開始方法 (eks用YAMLテンプレあり)
    ○ https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/getting-started-console.html
    ● fulentd/fluentd-kubernetes-daemonset
    ○ https://github.com/fluent/fluentd-kubernetes-daemonset

    View Slide