本記事
KEDAを利用してKubernetes Pod数をゼロにする(ゼロスケール)方法を紹介します。
KEDAとは
イベント駆動型のオートスケーラーで、Podの水平スケールを実現するKubernetesコンポーネントです。様々な外部メトリクスをサポートしています。
ゼロスケール
Kubernetesの標準APIリソースであるHorizontal Pod Autoscaling(HPA)ではゼロスケールはできません。
厳密にはfeature gateのHPAScaleToZero
を有効化すれば可能ですが、Kubernetes v1.29
時点ではAlphaとなっています。
KEDAではゼロスケールを実現することが可能です。
ScaledObject
スケール対象と、その対象をスケールさせるトリガーを設定するカスタムリソースです。
今回は Cronを使用します。
Cronの設定
ゼロスケールの設定例です。毎日10時から19時の間はPodが2台稼働し、それ以外の時間帯でPodのゼロスケールを実現しています。
ポイントとしては、desiredReplicas
に0
を設定することはできません。cron設定ではゼロスケールの時間帯を指定するのではなく、Podが稼働する時間帯を指定します。
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: sample-scaledobject
spec:
scaleTargetRef:
name: sample-deployment
maxReplicaCount: 3
minReplicaCount: 0
triggers:
- type: cron
metadata:
timezone: Asia/Tokyo
start: 0 10 * * *
end: 0 19 * * *
desiredReplicas: "2"
終わりに
KEDAでKubernetes Podのゼロスケールを実現する方法を紹介しました。開発環境など平日の深夜帯や休日にPodを稼働させる必要がない場合、ゼロスケールでコストの削減が見込めます。ぜひ活用してみてください。