Kubernetes(K8s)では、アプリケーションの負荷に応じてPodの数を自動で増減させることができます。この機能を Horizontal Pod Autoscaler(HPA) と呼びます。
HPAを活用すれば、リソースの最適化や高可用性の確保が実現でき、運用効率が大幅に向上します。
本記事では、HPAの概要・導入方法・設定例・ベストプラクティス について解説します。
✨ 1. HPAとは?
Horizontal Pod Autoscaler(HPA)は、CPU使用率 や カスタムメトリクス に基づいて、Podのレプリカ数を自動的に調整する機能です。
- ✅ スケーリング対象:Deployment、ReplicaSet、StatefulSetなど
- ✅ スケーリング基準:CPU使用率、メモリ、カスタムメトリクスなど
- ✅ 条件:メトリクスが閾値を超えた場合にPod数が増減
⚙️ 2. 前提条件
HPAを利用するためには、以下の条件を満たしている必要があります。
- Kubernetesクラスタが稼働している
-
metrics-server
がクラスタにインストールされている - 対象Podに リソース制限(CPU requests/limits) が設定されている
✅ metrics-server
のインストール(例):
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
🛠️ 3. HPAの作成方法
ここでは、CPU使用率に基づいてHPAを作成する基本的な手順を紹介します。
✅ 3.1 Deploymentの作成(サンプル)
apiVersion: apps/v1
kind: Deployment
metadata:
name: sample-app
spec:
replicas: 1
selector:
matchLabels:
app: sample-app
template:
metadata:
labels:
app: sample-app
spec:
containers:
- name: app
image: k8s.gcr.io/hpa-example
resources:
requests:
cpu: 200m
limits:
cpu: 500m
ports:
- containerPort: 80
kubectl apply -f deployment.yaml
✅ 3.2 HPAの作成
kubectl autoscale deployment sample-app --cpu-percent=50 --min=1 --max=5
- CPU使用率が50%を超えた場合にPod数が増加
- 最小1、最大5までの範囲で自動スケーリング
🔍 4. ステータス確認とモニタリング
現在のスケーリング状態を確認するには以下のコマンドを使用します。
kubectl get hpa
出力例:
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
sample-app Deployment/sample-app 35%/50% 1 5 1 3m
✅ 5. ベストプラクティス
-
📌 リソースのrequests/limitsを必ず設定する
→ HPAのスケーリング判断基準になります。 -
📌
metrics-server
は最新を使用し、安定して動作することを確認する
→ メトリクス取得に失敗するとHPAが動きません。 -
📌 アプリケーションの起動時間を意識する
→ スケールアウト後のレスポンス遅延を避けるため。 -
📌 HPAの設定値(CPU閾値やPod数)を本番ワークロードに合わせてチューニングする
-
📌 必要に応じてカスタムメトリクス(Prometheusなど)を導入する
📝 6. まとめ
項目 | 内容 |
---|---|
機能名 | Horizontal Pod Autoscaler(HPA) |
スケーリング基準 | CPU使用率、カスタムメトリクスなど |
必須要件 | metrics-serverの導入、リソース設定 |
スケーリング対象 | Deployment、ReplicaSet、StatefulSetなど |
メリット | 負荷に応じた自動スケーリング、高可用性の確保 |
📘 参考リンク
-
Kubernetes公式ドキュメント(HPA)
https://kubernetes.io/ja/docs/tasks/run-application/horizontal-pod-autoscale/ -
metrics-server GitHub
https://github.com/kubernetes-sigs/metrics-server
以上、KubernetesにおけるHPAの導入と基本設定について解説しました。
少しでも皆さんの参考になれば幸いです!
🙌 Qiitaでの「いいね」やコメントも大歓迎です!