0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【簡単Kubernetes】【HPA】KubernetesでPodの自動スケーリングを設定する方法

Posted at

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の導入と基本設定について解説しました。
少しでも皆さんの参考になれば幸いです!

🙌 Qiitaでの「いいね」やコメントも大歓迎です!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?