Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GKE Autopilotのコストを9000円/日から2000円/日へ!

GKE Autopilotのコストを9000円/日から2000円/日へ!

izumiiii

October 12, 2023
Tweet

More Decks by izumiiii

Other Decks in Programming

Transcript

  1. GKE Autopilotのコストを9000円/日から2000円/日へ!
    3-shake SRE Tech Talk #7

    View Slide

  2. 自己紹介
    名前
    Koizumi Fumiya
    Twitter
    izumiiii @izumiiii9
    Blog
    https://izumiiii.com
    Zenn
    https://zenn.dev/izumiiii
    会社
    株式会社Resilire
    普段していること
    インフラ業務メインで、最近はよくKubernetesを触っています。

    View Slide

  3. 提供プロダクト
    Resilreの提供価値と機能
    3
    サプライチェーンリスク管理SaaS
    Resilire
    サプライチェーン全体(社内拠点や委託先、原料
    調達先)をツリー上で構造的に管理。災害時、被
    災影響の可能性がある拠点をマップ上で可視化・
    リスト化。リストの拠点に自動でアンケート配信か
    ら回答結果のレポート生成を可能にするプロダク
    トを提供しています。
    3

    View Slide

  4. 突然ですが、Resilireではマルチクラスタで運用しています。
    Tokyo Osaka

    View Slide

  5. マルチクラスタによる費用がかかりすぎてる!
    9000円/日

    View Slide

  6. なんとかしないと!

    View Slide

  7. Spot Pod for Autopilot
    vCPU, Memory当たり1/3程度の料金で使える。
    注意点: 標準の Pod の実行でコンピューティングリソースが必要になると、GKE に
    よって強制削除される場合がある。

    View Slide

  8. 出典: https://cloud.google.com/kubernetes-engine/pricing?hl=ja#autopilot_mode

    View Slide

  9. apiVersion: apps/v1
    kind: Deployment
    metadata:
    name: argocd-repo-server
    spec:
    template:
    spec:
    containers:
    - name: argocd-repo-server
    nodeSelector:
    cloud.google.com/gke-spot: 'true'
    terminationGracePeriodSeconds: 25
    設定例

    View Slide

  10. リソースリクエスト
    Autopilotでのノードのインスタンスタイプ/ノード数は実際にクラスタにデプロイ
    されているPodに設定されたRequest量をもとに決定されている。
    明示的にリソース量をマニフェストで指定していない場合、1コンテナあたり
    0.5 vCPU, 2GiB Memoryが割り当てられる。

    View Slide

  11. 出典:
    https://cloud.google.com/kubernetes-engine/docs/concepts/autopilot-resource-r
    equests?hl=ja#compute-class-defaults

    View Slide

  12. 修正作業
    ● node数を確認する(kubectl get nodes)
    ● 実態のメモリ使用状況を確認する(kubectl top pod)
    ● コードを修正する

    View Slide

  13. 修正作業②
    実態に合わせてマニフェストを修正していく
    apiVersion: apps/v1
    kind: Deployment
    metadata:
    name: argocd-repo-server
    spec:
    template:
    spec:
    containers:
    - name: argocd-repo-server
    resources:
    requests:
    cpu: 250m
    memory: 512Mi

    View Slide

  14. 注意点
    Autopilotでは1Podあたり最低 CPU: 250m メモリ: 0.5 GiB を割り当てないといけない。
    それより小さい値を指定していても、値が変わらないようになっている。

    View Slide

  15. 対応した結果...

    View Slide

  16. 2000/日まで減らすことに成功!

    View Slide

  17. まとめ
    ● 開発初期段階から節約対策できるようにしましょう。
    ● Spot Pod for Autopilot、リソースリクエストも思ったより簡単に導入することができた。
    ● リソースリクエストは最低設定値が決まってるので気おつけよう。

    View Slide

  18. ご清聴ありがとうございました。

    View Slide