「クラウドに移行したらコストが爆増した」——AWSやGCPを使い始めて半年後に多くの企業が直面する現実です。オンプレミスでは「ラックに入れたサーバーはもう払い済み」でしたが、クラウドは使った分だけ課金されます。特にKubernetesでリソースを過剰に確保(over-provisioning)していると、気づかないうちに莫大なコストがかかっています。これを解決するのが「FinOps」という考え方です。
FinOpsをたとえで説明すると「電力の見える化と節電」のようなものです。家中の電気をつけっぱなしにしているのと同じで、使われていないリソースに課金され続けている——スマートメーターで電力消費を可視化して初めて「エアコンのつけっぱなし」に気づけるように、クラウドコストも「見える化」が第一歩です。
コスト最適化担当K:「先月のAWS請求が先月比40%増になってるんだけど、何が増えたかわかる?」
開発者L:「えっ、全然気づいてませんでした。どこで確認すればいいんですか?」
K:「まずKubernetes側はkube-resource-reportかKubecostで見てみよう。どのPodがどれだけ無駄にCPU/メモリを確保してるか一発でわかる」
まず現状のKubernetesリソース使用状況を確認しましょう。
# 全Podのリソース実使用量を確認(metrics-serverが必要)
kubectl top pods --all-namespaces --sort-by=memory
# Nodeのリソース使用状況
kubectl top nodes
# Podのリソースリクエストと制限を一覧表示
kubectl get pods --all-namespaces -o json | \
jq -r '.items[] | [.metadata.namespace, .metadata.name,
(.spec.containers[].resources.requests.cpu // "未設定"),
(.spec.containers[].resources.requests.memory // "未設定")] |
@tsv'
次に、コスト削減に有効な設定を見ていきましょう。使われていない時間帯にノードを自動スケールダウンするには、Cluster Autoscalerが有効です。
# HPA(Horizontal Pod Autoscaler)の設定例
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: my-app-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: my-app
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 60
さらに、スポットインスタンス(AWS)やプリエンプティブルVM(GCP)を活用することで、同等のスペックを最大70〜80%割引で利用できます。FinOpsは「ケチること」ではなく「必要な分だけ賢く使うこと」です。リソースを可視化し、無駄を削り、節約分を次の投資に回す——このサイクルこそがクラウドネイティブ時代のコスト管理の本質です。
コメントを残す