GKE Autopilotのコストを9000円/日から2000円/日へ!3-shake SRE Tech Talk #7
View Slide
自己紹介名前Koizumi FumiyaTwitterizumiiii @izumiiii9Bloghttps://izumiiii.comZennhttps://zenn.dev/izumiiii会社株式会社Resilire普段していることインフラ業務メインで、最近はよくKubernetesを触っています。
提供プロダクトResilreの提供価値と機能3サプライチェーンリスク管理SaaSResilireサプライチェーン全体(社内拠点や委託先、原料調達先)をツリー上で構造的に管理。災害時、被災影響の可能性がある拠点をマップ上で可視化・リスト化。リストの拠点に自動でアンケート配信から回答結果のレポート生成を可能にするプロダクトを提供しています。3
突然ですが、Resilireではマルチクラスタで運用しています。Tokyo Osaka
マルチクラスタによる費用がかかりすぎてる!9000円/日
なんとかしないと!
Spot Pod for AutopilotvCPU, Memory当たり1/3程度の料金で使える。注意点: 標準の Pod の実行でコンピューティングリソースが必要になると、GKE によって強制削除される場合がある。
出典: https://cloud.google.com/kubernetes-engine/pricing?hl=ja#autopilot_mode
apiVersion: apps/v1kind: Deploymentmetadata:name: argocd-repo-serverspec:template:spec:containers:- name: argocd-repo-servernodeSelector:cloud.google.com/gke-spot: 'true'terminationGracePeriodSeconds: 25設定例
リソースリクエストAutopilotでのノードのインスタンスタイプ/ノード数は実際にクラスタにデプロイされているPodに設定されたRequest量をもとに決定されている。明示的にリソース量をマニフェストで指定していない場合、1コンテナあたり0.5 vCPU, 2GiB Memoryが割り当てられる。
出典:https://cloud.google.com/kubernetes-engine/docs/concepts/autopilot-resource-requests?hl=ja#compute-class-defaults
修正作業● node数を確認する(kubectl get nodes)● 実態のメモリ使用状況を確認する(kubectl top pod)● コードを修正する
修正作業②実態に合わせてマニフェストを修正していくapiVersion: apps/v1kind: Deploymentmetadata:name: argocd-repo-serverspec:template:spec:containers:- name: argocd-repo-serverresources:requests:cpu: 250mmemory: 512Mi
注意点Autopilotでは1Podあたり最低 CPU: 250m メモリ: 0.5 GiB を割り当てないといけない。それより小さい値を指定していても、値が変わらないようになっている。
対応した結果...
2000/日まで減らすことに成功!
まとめ● 開発初期段階から節約対策できるようにしましょう。● Spot Pod for Autopilot、リソースリクエストも思ったより簡単に導入することができた。● リソースリクエストは最低設定値が決まってるので気おつけよう。
ご清聴ありがとうございました。