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からマイクロサービスまで。

試してみる — K8s Pod Spec Builder

フルツールを開く