GH GambleHub

Resurslarni rejalashtirish va avto-skeyling

Qisqacha xulosa

Barqaror skeyling to’rtta tayanchga asoslangan:

1. To’g "ri so’rovlar/QoS limitlari va sinflari.

2. To’g "ri joylashtirish (topologiya, affiniti, ustuvorlik, oldindan empsiya).

3. Ko’p darajali avtoskeyling: HPA/VPA/KEDA + Cluster/Node autoscaler + warm pools.

4. Anti-flapping va byudjetlar bilan SLO-yoʻnaltirilgan mantiq (latency/queue depth).

Resurslarning bazaviy modeli

Requests/Limits va QoS sinflari

Requests = rejalashtiruvchi uchun kafolatlar; Limits = runtime uchun shiftlar.
QoS: Guaranteed (CPU/Memory uchun req = lim), Burstable (qisman), BestEffort (hech narsa).
Qattiq SLO bilan ishlab chiqarish xizmatlari - Guaranteed/Burstable; fon - Burstable/BestEffort.

CPU/Xotira/IO/Tarmoq

CPU - elastik (time-sharing), xotira - qattiq (oshib ketganda OOM-kill).
IO/tarmoqqa alohida limitlar/ustuvorliklar qo’ying (cgroups/TC), aks holda «shovqinli qo’shnilar».

GPU/akseleratorlar

Vektorni (GPU = 1, profillar orqali VRAM) talab qiling, tanqid uchun nodeSelector/taints va PodPriority’dan foydalaning.
Inferens uchun - batch size va isitish modellari.

Yotqizish siyosati (Scheduling)

Ustuvorliklar, oldindan empsiya va PDB

PriorityClass tanqidiy yo’llar uchun (to’lovlar, login), oldindan empsiyalashga ruxsat berilgan.
PodDisruptionBudget evakuatsiya/yangilanishda minimal nusxalarni himoya qiladi.

Affiniti/Topologiya

kolokatsiya/dekolokatsiya uchun node/pod affinity (masalan, bitta xostga nusxa qoʻymaslik).
topologySpreadConstraints podlarni/AZ zonalari bo’yicha tekislaydi.
NUMA/topologiya: pin-CPU/hugepages past latentlik muhim bo’lgan joylarda.

Teintlar va tolerantlar

Pullarni ajrating:’prod’,’batch’,’gpu’,’system’. Tanqid kamroq qo’shnilarga toqat qiladi.

Avto-skeyling: darajalar va signallar

1) HPA (Horizontal Pod Autoscaler)

Metriklar bo’yicha podalar replikasining skeyliti: CPU/Memory/kastom (Prometheus Adapter).
Yaxshi signallar: latency p95/p99, queue length/lag, RPS per pod, consumer lag.
Anti-flapping: barqarorlashtirish (stabilizationWindow), minimal qadam, cooldown.

HPA (latency-driven) misoli:
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 (Vertical Pod Autoscaler)

Real isteʼmol uchun requests/limits tyuninglaydi (tavsiyalarni yangilaydi).
Rejimlar:’Off’(yigʻish),’Auto’(qayta ishga tushirish),’Initial’(faqat boshlanganda).
Amaliyot:’Off’ni yoqish → statistikani yig’ish → relizlarda qo’llash.

3) KEDA/navbatga asoslangan skeyling

Tashqi signallarga javob beradi: Kafka lag, SQS depth, Redis length, Prometheus.
Hodisalar/navbatlar (EDA) konsumerlari uchun ideal.

KEDA ScaledObject (Kafka lag):
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) Cluster/Node Autoscaler (CA) + Warm Pools

CA kamomad/ortiqcha bo’lganda nodlarni qo’shadi/olib tashlaydi.
Warm pools: oldindan isitilgan nodlar/tayyorlangan tasvirlar (cold start tezlashtiradi).
Choʻqqilar uchun - step-scaling va kattalashtirilgan minNodes oldindan.

Reaksiya va isitish tezligi

Reaksiyaning SLO-kechikishi: front qatlami ≤ 1-2 daqiqa, orqa tomonlar/BD - alohida va oldindan.
Isitish: TLS/DNS/konnektlar, modellarni yuklash, kesh va JITni isitish.
Shadow - hodisadan oldin cold-yoʻlni «nasos qilish» uchun yuk.

Anti-flapping va barqarorlik

Metriklarda gisterezis, tekislash (eksp. o’rtacha).
Stabilization windows HPA, katta’scaleDown’.
Step-skeyling «arra» o’rniga; replikalarni o’zgartirish uchun rate-limit.
Budget skeyling: bir daqiqada qoʻshiladigan% trafik/replikalarni cheklash.

Kuzatish darajasi va SLO

Asosiy SLI:
  • p95/99 latency, error rate, throughput, queue depth/lag, CPU/Memory saturation, pod pending time, node pressure.
Alertlar:
  • pending pods, unschedulable hodisalar, IP/kichik tarmoqlar tanqisligi, rasm pull uzoq, evictions.
  • Treyslar: tail-based sampling p99 → skeylning tor joylarini ko’ring.

FinOps: elastiklik qiymati

Metrika: $/1000 RPS, $/ms p95, $/soat zaxira.
Miks: on-demand + reserved + spot (tanqidsiz).
Avto-skeylning ostonasi xato qiymati bilan bog’liq: ba’zida warm-zaxirani saqlash foydalidir.

iGaming/fintech uchun o’ziga xos

O’yinlar/turnirlar cho’qqisi:’minReplicas’va minNodesni oldindan ko’taring, warm pools va kesh/modellarni isitishni yoqing.
To’lov konsumerlari: KEDA lag + idempotentlik bo’yicha, tashqi degradatsiya triggeri sifatida provayderlar limitlari (PSP).
Antibot: alohida hovuz, qoidalarning tezkor ko’lami, «kulrang» yo’nalishlar.
Regulyator: PDB komplayens-servislarda, ustuvorlik batchga qaraganda yuqori.

Chek varaqlari

Loyihalash

  • Requests/limits profil ma’lumotlari bo’yicha berilgan; QoS tanlangan.
  • PriorityClass, PDB, taints/tolerations va topologySpread - sozlangan.
  • HPA SLO-metrlar bo’yicha, nafaqat CPU.
  • Tavsiyalarni to’plash uchun’Off’ga VPA (Auto’planga migratsiya).
  • KEDA/hodisa yuklamalari uchun navbatlar.
  • CA + warm pools, rasmlar kesh qilinadi (rasm pre-pull).

Foydalanish

  • Stabilization windows va cooldownlar oʻrnatilgan (flapping chiqarib tashlangan).
  • Alertlar pending/unschedulable, lag, p95, error-rate.
  • Runbooks: «node», «rasm cho’zilmaydi», «OOM/evict», «retray bo’roni».
  • Capacity-review har oyda: skeyl faktiga qarshi reja/qiymat.

Tipik xatolar

HPA faqat IO/DB limitlarida CPU → lat-regress bo’yicha.
PDB va ustuvorliklar yo’qligi → tanqid birinchi bo’lib e’tirof etiladi.
Tanqid va batch bir pulda taintssiz aralashadi → «shovqinli qo’shnilar».
Nol isitish → cho’qqida sovuq startlar.
Agressiv’scaleDown’→ arra va thrash konteynerlari.
KEDA idempotentsiz → boʻron paytida xabarlarning dublikatlari.

Mini-pleybuklar

1) Eng yuqori voqeadan oldin (T-30 daqiqa)

1. ’minReplicas ’/minNodesni kattalashtirish, warm poolsni faollashtirish.
2. CDN/DNS/TLS/konnektlarni isitish, modellarni yuklash.
3. Botlar uchun «kulrang» marshrutlar/limitlarni kiritish.
4. dashboards: pending/lag/p95 ni tekshirish.

2) Nod taqchilligi (unschedulable)

1. CA, bulutlar, kichik tarmoqlar/IP kvotalarini tekshirish.
2. Batch limitlarini vaqtincha pasaytirish, past ustuvorliklar uchun pre-empsiyani kiritish.
3. Vaqtincha katta turdagi yoki ikkinchi hovuzni koʻtarish.

3) Navbatda lag o’sishi

1. KEDA: scale up trigger bo’yicha; 2) konsumer limitlarini ko’tarish;

2. idempotency-keys va backpressure ishlab chiqaruvchilarni yoqish.

4) Replik arra

1. Stabilization/cooldown kattalashtirish; 2) step-skeylingga o’tish;

2. metrikani eksponensial o’rtacha bilan tekislash.

Shpargalkalar

VPA (tavsiyalarni to’plash):
yaml apiVersion: autoscaling. k8s. io/v1 kind: VerticalPodAutoscaler metadata: { name: api-vpa }
spec:
targetRef: { apiVersion: "apps/v1", kind: Deployment, name: api }
updatePolicy: {updateMode: "Off"} # collecting recommendations
Cluster Autoscaler (bayroqlar g’oyalari, kontseptsiyasi):

--balance-similar-node-groups
--expander=least-waste
--max-empty-bulk-delete=10
--scale-down-utilization-threshold=0. 5
--scale-down-delay-after-add=10m
Topology spread (zonalar bo’yicha bir tekislik):
yaml topologySpreadConstraints:
- maxSkew: 1 topologyKey: topology. kubernetes. io/zone whenUnsatisfiable: DoNotSchedule labelSelector: { matchLabels: { app: api } }

Jami

Samarali rejalashtirish va avto-skeyling - bu to’g’ri so’rovlar/limitlar + aqlli yotqizish + ko’p darajali skeyling (HPA/VPA/KEDA/CA) + SLO va millisekund qiymatiga bog’langan isitish va anti-flapping. Siyosatni IaC bilan tuzating, «to’g’ri» metriklar (latency/lag) bo’yicha kuzating, warm-zaxirani cho’qqilar ostida saqlang va platforma elastik, oldindan aytib bo’ladigan va tejamkor bo’ladi.

Contact

Biz bilan bog‘laning

Har qanday savol yoki yordam bo‘yicha bizga murojaat qiling.Doimo yordam berishga tayyormiz.

Telegram
@Gamble_GC
Integratsiyani boshlash

Email — majburiy. Telegram yoki WhatsApp — ixtiyoriy.

Ismingiz ixtiyoriy
Email ixtiyoriy
Mavzu ixtiyoriy
Xabar ixtiyoriy
Telegram ixtiyoriy
@
Agar Telegram qoldirilgan bo‘lsa — javob Email bilan birga o‘sha yerga ham yuboriladi.
WhatsApp ixtiyoriy
Format: mamlakat kodi va raqam (masalan, +998XXXXXXXX).

Yuborish orqali ma'lumotlaringiz qayta ishlanishiga rozilik bildirasiz.