GH GambleHub

リソースプランナーと自動スケーリング

簡単な要約

安定したスケーリングは4つのサポートでサポートされています:

1.リクエスト/制限とQoSクラスを修正します。

2.正しいスタッキング(トポロジー、親和性、優先順位、優先順位)。

3.マルチレベル自動スケーリング:HPA/VPA/KEDA+クラスタ/ノード自動スケーラー+ウォームプール。

4.アンチフラッピングと予算を備えたSLO指向のロジック(レイテンシ/キュー深さ)。


基本リソースモデル

リクエスト/制限とQoSクラス

リクエスト=スケジューラの保証;制限=ランタイムの天井。
QoS:保証(CPU/メモリによるreq=lim)、 Burstable(部分的に)、BestEffort(何も)。
堅いSLOを用いる生産サービス-保証される/破烈;background-Burstable/BestEffort。

CPU/メモリ/IO/ネットワーク

CPU-弾性(時間共有)、メモリ-ハード(超過するとOOMキル)。
IO/ネットワークでは、limits/priorities (cgroups/TC)を個別に設定し、それ以外の場合は"noisy neighbors'を設定します。

GPU/アクセラレータ

ベクトル(GPU=1、プロファイル経由のVRAM)を尋ね、批判にはnodeSelector/tainsとPodPriorityを使用します。
推論のため-バッチサイズとモデル加熱。


スケジューリングポリシー

優先順位、優先順位、PDB

クリティカルパス(支払い、ログイン)のPriorityClassは、プリエンプションが許可されます。
PodDisruptionBudgetは、避難/更新時に最小限の手掛かりを保護します。

アフィニティ/トポロジー

コロケーション/デコロケーションのためのnode/podアフィニティ(たとえば、レプリカを1つのホストに置かない)。
topologySpreadConstraints は/AZゾーンにハースを整列します。
NUMA/topology:低遅延が重要なピンCPU/hugepages。

Teyinthsおよび許容

別のプール:'prod'、 'batch'、 'gpu'、 'system'。批判は隣人の数を減らします。


自動スケーリング: レベルと信号

1) HPA(水平ポッドオートスケーラー)

メトリクス別にポッドのレプリカをスケール:CPU/メモリ/カスタム (Prometheus Adapter)。
良好な信号:レイテンシp95/p99、キュー長/遅延、ポッドあたりのRPS、コンシューマラグ。
アンチフラッピング:安定化(stabilizationWindow)、最小ステップ、クールダウン。

HPA(レイテンシ駆動)の例:
yaml apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: { name: api-hpa }
spec:
scaleTargetRef: { apiVersion: apps/v1, kind: Deployment, name: api }
minReplicas: 6 maxReplicas: 120 behavior:
scaleUp:
stabilizationWindowSeconds: 60 policies: [{ type: Percent, value: 100, periodSeconds: 60 }]
scaleDown:
stabilizationWindowSeconds: 300 policies: [{ type: Percent, value: 20, periodSeconds: 60 }]
metrics:
- type: Pods pods:
metric:
name: http_server_request_duration_seconds_p95 target:
type: AverageValue averageValue: "0.25" # 250ms

2) VPA(垂直ポッドオートスケーラー)

実際の消費のための要求/制限を調整します(推奨事項を更新します)。
モード:'Off'、 'Auto'(再起動)、'Initial'(開始時のみ)。
練習:on 'Off'→collect statistics→apply to releases。

3) KEDA/キューベーススケーリング

外部信号に反応する:Kafka lag、 SQS depth、 Redis length、 Prometheus。
イベント/キュー消費者(EDA)に最適です。

KEDA ScaledObject(カフカラグ):
yaml apiVersion: keda.sh/v1alpha1 kind: ScaledObject metadata: { name: consumer-scale }
spec:
scaleTargetRef: { name: txn-consumer }
minReplicaCount: 2 maxReplicaCount: 200 cooldownPeriod: 120 pollingInterval: 5 triggers:
- type: kafka metadata:
bootstrapServers: broker:9092 consumerGroup: tx-cg topic: payments lagThreshold: "10000"

4)クラスタ/ノードオートスケーラー(CA)+ウォームプール

CAは欠陥/過剰のノードを追加/削除します。
暖かいプール:予熱されたノード/準備されたイメージ(コールドスタートのスピードアップ)。
ピークの場合-事前にステップスケーリングと拡大minNodes。


反応速度と温暖化

SLO反応遅延:フロントレイヤー≤ 1〜2分、バックエンド/DB-個別に事前に。
ウォームアップ:TLS/DNS/接続、ロードモデル、キャッシュのウォームアップおよびJIT。
イベントへのコールドパスを「ポンピング」するためのシャドウロード。


アンチフラッピングと安定性

メトリックのヒステリシス、平滑化(exp。 medium)。
HPAの安定化ウィンドウ、'scaleDown'の大きい。
「saw」の代わりにステップスケーリング。レプリカを変更するためのrate-limit。
予算スケーリング:毎分追加されるトラフィック/レプリカの%を制限します。


観測可能性とSLO

主なSLI:
  • p95/99レイテンシ、エラーレート、スループット、キュー深度/遅延、CPU/メモリ飽和、ポッド保留時間、ノード圧力。
アラート:
  • 成長保留中のポッド、予定外のイベント、IP/サブネット不足、画像プルロング、立ち退き。
  • トレイル:p99テールのテールベースのサンプリング→スケーリング時にボトルネックが表示されます。

FinOps: 弾性コスト

メトリクス:$/1000 RPS、 $/ms p95、 $/hour reserve。
ミックス:オンデマンド+予約+スポット(非評価用)。
自動スケールのしきい値は、エラーのコストに関連しています。時々、暖かい在庫を保つことは有益です。


iGaming/Fintechの特異性

マッチ/トーナメントピーク:事前に'minReplicas'とminNodesを上げ、ウォームプールをオンにしてキャッシュ/モデルをウォームアップします。
支払の消費者:lag+idempotencyによるKEDA、劣化の外部トリガーとしてのプロバイダ制限(PSP)。
Antibot:別のプール、ルールのクイックスケール、「グレー」ルート。
規制:コンプライアンスサービスのPDBは、バッチよりも優先度が高くなります。


チェックシート

デザイン・デザイン

  • データのプロファイリングによって指定された要求/制限;QoSを選択しました。
  • PriorityClass、 PDB、 tains/tolerationsおよびtopologySpread-設定。
  • CPUだけでなくSLOメトリックによるHPA。
  • 推奨事項を収集するためのVPAから'Off' ('Auto'への移行が計画されています)。
  • KEDA/イベントロードキュー。
  • CA+暖かいプール、イメージはキャッシュされます(イメージの前引き)。

Operation(オペレーション)

  • 安定化ウィンドウとクールダウンが設定されています(フラップは除く)。
  • 保留中/予定外、遅延、p95、エラー率へのアラート。
  • Runbooks: 「no nodes」、 「image does not stretch」、 「OOM/evict'、」 retray storm'。
  • 容量レビュー毎月:スケールvs計画/コストの事実。

よくある間違い

HPAはCPU→IO/データベース限界のlat-regressionのみで動作します。
PDBと優先順位の欠如→批判が最初になります。
緊張のない同じプールでの批判とバッチの混合→「騒々しい隣人」。
ゼロ加熱→ピーク時に寒さが始まります。
積極的な'scaleDown'→のこぎりとスラッシュコンテナ。
KEDAは、偶像性のない→嵐の中でメッセージを複製します。


ミニプレイブック

1)ピークイベント前(T-30分)

1.'minReplicas '/minNodesを増やし、ウォームプールをアクティブにします。
2.CDN/DNS/TLS/接続をウォームアップし、モデルをロードします。
3.ボットの灰色のルート/制限を含める。
4.チェックダッシュボード:保留中/遅延/p95。

2)ノード不足(予定外)

1.CA、クラウドクォータ、サブネット/IPを確認します。
2.一時的にバッチ制限を低減し、優先順位を低くするためのプリエンプションを有効にします。
3.一時的に大きなインスタンスタイプまたはセカンドプールを上げます。

3)キューの遅れの成長

1.KEDA:トリガーによるスケールアップ。2)消費者の限界を高める。
2.idempotency-keysとbackpressureプロデューサーを有効にします。

4)レプリカを見ました

1.安定/冷却を高めて下さい;2)ステップスケーリングへのスイッチ;

2.指数平均でメトリックを滑らかにします。


コンフィグベビーベッド

VPA(推奨事項のコレクション):
yaml apiVersion: autoscaling.k8s.io/v1 kind: VerticalPodAutoscaler metadata: { name: api-vpa }
spec:
targetRef: { apiVersion: "apps/v1", kind: Deployment, name: api }
updatePolicy: { updateMode: "Off" } # собираем рекомендации
クラスターオートスケーラー(フラグのアイデア、コンセプト):

--balance-similar-node-groups
--expander=least-waste
--max-empty-bulk-delete=10
--scale-down-utilization-threshold=0.5
--scale-down-delay-after-add=10m
トポロジースプレッド:
yaml topologySpreadConstraints:
- maxSkew: 1 topologyKey: topology.kubernetes.io/zone whenUnsatisfiable: DoNotSchedule labelSelector: { matchLabels: { app: api } }

[結果]

効率的なスケジューラと自動スケーリングは、正しい要求/制限+スマートスタッキング+マルチレベルスケーリング(HPA/VPA/KEDA/CA)+ウォームアップとアンチフラップ、SLOとミリ秒のコストに関連しています。IaCのポリシーを修正し、「正しい」メトリクス(レイテンシ/ラグ)で観察し、ピークの下で暖かいストックを保ちます。プラットフォームは弾力性があり、予測可能で経済的です。

Contact

お問い合わせ

ご質問やサポートが必要な場合はお気軽にご連絡ください。いつでもお手伝いします!

統合を開始

Email は 必須。Telegram または WhatsApp は 任意

お名前 任意
Email 任意
件名 任意
メッセージ 任意
Telegram 任意
@
Telegram を入力いただいた場合、Email に加えてそちらにもご連絡します。
WhatsApp 任意
形式:+国番号と電話番号(例:+81XXXXXXXXX)。

ボタンを押すことで、データ処理に同意したものとみなされます。