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?

More than 1 year has passed since last update.

Kubernetes のスケーリング徹底解説:種類・設定方法・実用例

0
Posted at

Kubernetes(K8s)は、コンテナ化されたアプリケーションの自動スケーリング機能を提供し、トラフィックやリソース負荷に応じて柔軟にPodを増減できます。本記事では、Kubernetesのスケーリング方法について詳細に解説します。


1. Kubernetes のスケーリングとは?

Kubernetes のスケーリング(Scaling)とは、負荷やリソースの使用状況に応じて、Pod やノードの数を自動または手動で調整する機能です。

Kubernetes のスケーリングの種類

スケーリングの種類 適用対象 概要
手動スケーリング Deployment / ReplicaSet 手動でPod数を変更する(kubectl scale)
Horizontal Pod Autoscaler(HPA) Pod CPU/メモリ使用率に応じてPod数を増減
Vertical Pod Autoscaler(VPA) Pod Podのリソース(CPU/メモリ)を動的に調整
Cluster Autoscaler(CA) ノード クラスタ全体のノード数を自動調整

2. 手動スケーリング(kubectl scale)

✅ 適用シーン

  • テストやデバッグ時に手動でPodの数を増減したい場合。
  • トラフィックの急増が予測される場合に、事前にPodを増やす。

🚀 設定手順

kubectl scale deployment my-app --replicas=5

上記のコマンドで、my-app Deployment の Pod 数を 5つに増やす ことができます。

確認コマンド

kubectl get pods

3. Horizontal Pod Autoscaler(HPA)

✅ 適用シーン

  • 負荷が一定の閾値を超えたら Pod を増やす
  • 負荷が下がったら Pod を削減 し、リソースコストを抑える

🚀 設定手順

  1. メトリクスサーバーをセットアップ
    kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
    
  2. HPA を適用する YAML を作成(例: hpa.yaml
    apiVersion: autoscaling/v2beta2
    kind: HorizontalPodAutoscaler
    metadata:
      name: my-app-hpa
    spec:
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: my-app
      minReplicas: 2
      maxReplicas: 10
      metrics:
        - type: Resource
          resource:
            name: cpu
            target:
              type: Utilization
              averageUtilization: 50
    
  3. 適用コマンド
    kubectl apply -f hpa.yaml
    

HPA の動作確認

kubectl get hpa

HPAがCPU使用率に応じてPodをスケールするようになります。


4. Vertical Pod Autoscaler(VPA)

✅ 適用シーン

  • Pod の CPU やメモリを自動で最適化 したい場合
  • リソース不足による OOM(Out of Memory)を防ぐ

🚀 設定手順

  1. VPAを有効化
    kubectl apply -f https://github.com/kubernetes/autoscaler/releases/latest/download/vertical-pod-autoscaler.yaml
    
  2. VPA の適用 YAML を作成(例: vpa.yaml
    apiVersion: autoscaling.k8s.io/v1
    kind: VerticalPodAutoscaler
    metadata:
      name: my-app-vpa
    spec:
      targetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: my-app
      updatePolicy:
        updateMode: "Auto"
    
  3. 適用コマンド
    kubectl apply -f vpa.yaml
    

VPA の動作確認

kubectl get vpa

VPAがPodのリソース要求を自動的に調整します。


5. Cluster Autoscaler(CA)

✅ 適用シーン

  • クラウド環境(AWS, GCP, Azure)で ノードの数を動的に変更 したい
  • Pod がスケールしても、ノードのリソースが足りなくなる問題を解決

🚀 設定手順(GKEの場合)

  1. Cluster Autoscaler を有効化
    gcloud container clusters update my-cluster --enable-autoscaling \
        --min-nodes=1 --max-nodes=10 --node-pool my-node-pool
    
  2. 設定確認
    kubectl get nodes
    

Cluster Autoscaler がノードの負荷を監視し、Podが増えた際にノードを自動追加します。


6. Kubernetes スケーリングの実践例(リアルワールド)

ユースケース 1: 機械学習推論API のスケール

  • 機械学習の推論APIは、リクエスト数が急増すると負荷が高くなる
  • HPA + CA を組み合わせて、Pod とノードのスケールを最適化

ユースケース 2: ECサイトのブラックフライデー対応

  • ECサイトは通常時の 10 倍のトラフィックを処理する必要あり。
  • 事前に手動スケールで Pod を増加 → HPA で動的対応

ユースケース 3: SaaSアプリのマルチテナント環境

  • クラスタのリソースを効率的に利用するために VPA でメモリ最適化
  • 低負荷時にはリソース消費を抑え、コスト削減

7. まとめ

スケーリング方法 用途
手動スケール テストや特定の負荷対策
HPA CPU/メモリに応じた Pod の自動増減
VPA Pod のリソース最適化(CPU/メモリ)
Cluster Autoscaler クラウド上でノード数を動的調整

Kubernetes のスケーリング機能を活用することで、システムの パフォーマンス向上、コスト最適化、運用負荷軽減 を実現できます。用途に応じた適切なスケーリング手法を選択しましょう!

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?