Horizontal Pod Autoscaler付きDeployment
CPU使用率に基づくHorizontal Pod Autoscaler(HPA)に最適化されたリソースリクエストとリミットを持つKubernetes Deploymentを設定します。
Patterns
詳細な説明
HPAによるオートスケーリング
Horizontal Pod Autoscaler(HPA)は、CPU使用率などの観測メトリクスに基づいてポッドレプリカの数を自動調整します。HPAが正しく動作するには、ポッドにリソースリクエストが定義されている必要があります。
Deployment設定
apiVersion: apps/v1
kind: Deployment
metadata:
name: scalable-app
labels:
app: "scalable-app"
spec:
replicas: 2
template:
spec:
containers:
- name: app
image: my-app:latest
ports:
- name: http
containerPort: 8080
resources:
requests:
cpu: "200m"
memory: "256Mi"
limits:
cpu: "1000m"
memory: "512Mi"
なぜリソースリクエストが重要か
HPAはリクエストされたCPUの割合としてCPU使用率を計算します。ポッドが200m CPUをリクエストし140m使用している場合、使用率は70%です。リクエストがないとHPAは使用率を計算できず、スケーリングしません。
HPAのベストプラクティス
- リクエストを現実的に設定:過大なリクエストはHPAのスケーリングが遅れ、低すぎると過度にスケーリング
- CPUリミット > リクエスト:スケールイベントをトリガーせずに短いスパイクでリクエスト以上にバースト可能
- Readinessプローブ:新しいポッドは準備ができてからのみトラフィックを受信。そうしないとHPAが必要以上にスケールアップ
- クールダウン期間:デフォルトのスケールダウン安定化は5分で、フラッピングを防止
- 最小レプリカ >= 2:高可用性のため常に2つ以上のレプリカを維持
ユースケース
需要に応じてスケーリングしながらコスト効率を維持する必要がある、可変トラフィック負荷を処理するオートスケーリングアプリケーションの構築。Web APIからマイクロサービスまで。