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.


Solish 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 toleranslar

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 tezligi va isish

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.


Kuzatuv 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 xususiyatlar

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).

Ekspluatatsiya qilish

  • 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" } # собираем рекомендации
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.

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.