مخطط الموارد والتحجيم التلقائي
موجز
يتم دعم التحجيم المستقر على أربعة دعامات:1. الطلبات/الحدود الصحيحة وفئات QoS.
2. التكديس الصحيح (الطوبولوجيا، التقارب، الأولويات، الاستباق).
3. القياس التلقائي متعدد المستويات: HPA/VPA/KEDA + Cluster/Node autoscaler + برك دافئة.
4. المنطق الموجه نحو SLO (عمق الكمون/قائمة الانتظار) مع ميزانيات وميزانيات مضادة للرفرفة.
نموذج الموارد الأساسية
الطلبات/الحدود وفئات QoS
الطلبات = ضمانات للجدول ؛ الحدود = سقوف وقت التشغيل.
QoS: مضمون (req = lim بواسطة وحدة المعالجة المركزية/الذاكرة)، Burstable (جزئيًا)، BestFirst (لا شيء).
خدمات الإنتاج مع المنظمات غير الحكومية الصلبة - المضمونة/Burstable ؛ الخلفية - Burstable/BestFirst.
وحدة المعالجة المركزية/الذاكرة/IO/الشبكة
وحدة المعالجة المركزية - مرنة (مشاركة الوقت)، ذاكرة - صلبة (OOM-kill إذا تم تجاوزها).
على IO/network، ضع حدودًا/أولويات بشكل منفصل (cgroups/TC)، وإلا «جيران صاخبون».
وحدة معالجة الرسومات/المسرعات
اسأل المتجه (GPU = 1، VRAM عبر الملفات الشخصية)، استخدم nodeSelector/tains و PodPriority للنقد.
للاستنتاج - حجم الدفعة وتسخين النموذج.
سياسات الجدولة
الأولويات والإعفاء ومصرف التنمية الشعبي
فئة الأولوية للمسارات الحرجة (المدفوعات، تسجيل الدخول)، يُسمح بالإعفاء.
تحمي PodDistructionBudget الحد الأدنى من الإشارات أثناء الإخلاء/التحديثات.
التقارب/الطوبولوجيا
تقارب العقدة/البود لتحديد الموقع/إنهاء الموقع (على سبيل المثال، لا تضع نسخًا طبق الأصل على مضيف واحد).
topologySpreadRestrictions مواءمة الموقد مع مناطق/AZ.
NUMA/topology: pin-CPU/hugepages حيث يكون زمن الوصول المنخفض مهمًا.
التاينز والتسامح
برك منفصلة: «حث»، «دفعة»، «جبو»، «نظام». يتحمل النقد عددًا أقل من الجيران.
القياس التلقائي: المستويات والإشارات
1) HPA (Horizontal Pod Autoscaler)
نسخ طبق الأصل من القرون حسب المقاييس: وحدة المعالجة المركزية/الذاكرة/المخصصة (محول بروميثيوس).
الإشارات الجيدة: زمن الوصول p95/p99، طول قائمة الانتظار/التأخير، RPS لكل جراب، تأخر المستهلك.
مكافحة الخفقان: التثبيت (نافذة التثبيت)، الحد الأدنى من الخطوة، التهدئة.
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)
ضبط الطلبات/الحدود للاستهلاك الحقيقي (تحديث التوصيات).
الأوضاع: «Off»، «Auto» (إعادة التشغيل)، «Initial» (في البداية فقط).
الممارسة: تشغيل «إيقاف» → جمع الإحصاءات → تنطبق على الإصدارات.
3) KEDA/التحجيم القائم على قائمة الانتظار
يتفاعل مع الإشارات الخارجية: تأخر كافكا، عمق SQS، طول Redis، Prometheus.
مثالي لمستهلكي الحدث/قائمة الانتظار (EDA).
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.
حمل الظل لـ «ضخ» المسار البارد للحدث.
مكافحة الخفقان والاستقرار
Hysteresis on metrics, symothing (exp. medium).
نوافذ التثبيت في HPA، كبيرة في 'Scale Down'.
القياس التدريجي بدلا من «المنشار» ؛ لتعديل النسخ المتماثلة.
قياس الميزانية: الحد من النسبة المئوية لحركة المرور/النسخ المتماثلة المضافة في الدقيقة.
قابلية الملاحظة و SLO
المؤشرات القصوى الرئيسية:- p95/99 زمن الوصول، معدل الخطأ، الإنتاجية، عمق/تأخر قائمة الانتظار، وحدة المعالجة المركزية/تشبع الذاكرة، جراب انتظار الوقت، ضغط العقدة.
- النمو في الكبسولات المعلقة، الأحداث غير القابلة للجدولة، نقص الملكية الفكرية/الشبكة الفرعية، سحب الصورة لفترة طويلة، عمليات الإخلاء.
- المسارات: أخذ العينات القائمة على الذيل على ذيل p99 → نرى اختناقات عند التحجيم.
FinOps: تكلفة المرونة
المقاييس: $/1000 RPS، $/ms p95، $/ساعة الاحتياطي.
المزيج: عند الطلب + محجوز + بقعة (لعدم النقد).
ترتبط عتبة المقياس التلقائي بتكلفة الخطأ: في بعض الأحيان يكون من المربح الاحتفاظ بالمخزون الدافئ.
خصوصية iGaming/fintech
قمم المباريات/البطولة: ارفع "minReplicas' و minNodes مقدمًا، وقم بتشغيل حمامات السباحة الدافئة وإحماء المخابئ/الموديلات.
مستهلكي الدفع: KEDA حسب التأخر + الخصوصية، حدود المزود (PSP) كمحفزات خارجية للتدهور.
Antibot: مسبح منفصل، مقياس سريع للقواعد، طرق «رمادية».
التنظيم: PDB لخدمات الامتثال، الأولويات أعلى من الدفعة.
أوراق التحقق
تصميم
- الطلبات/الحدود المحددة ببيانات التصنيف ؛ تم اختيار QoS.
- PriorityClass, PDB, tains/tolerations and topologySpread - consignated.
- HPA بواسطة مقاييس SLO، وليس فقط وحدة المعالجة المركزية.
- VPA إلى «Off» لجمع التوصيات (تم التخطيط للانتقال إلى «Auto»).
- طوابير KEDA/Event Load.
- برك CA + الدافئة، يتم تخزين الصور (الصورة قبل السحب).
عملية
- يتم ضبط نوافذ التثبيت وعمليات التبريد (باستثناء الرفرفة).
- تنبيهات إلى معدل خطأ معلق/غير مقرر، تأخر، ص 95.
- كتب التشغيل: "لا عقد"، "الصورة لا تمتد"، "OOM/evict'،" إعادة العاصفة ".
- استعراض القدرات شهريًا: حقيقة الحجم مقابل الخطة/التكلفة.
أخطاء شائعة
HPA فقط عن طريق وحدة المعالجة المركزية → lat-regression مع حدود IO/قاعدة البيانات.
سيكون الافتقار إلى مصرف التنمية الشعبي والأولويات → النقد هو الأول.
مزج النقد والدفعة على نفس المسبح بدون قشور → «الجيران الصاخبين».
انعدام التدفئة → البرد يبدأ في الذروة.
«مقياس» عدواني → شاهد وسحق الحاويات.
KEDA بدون حماقة → رسائل مكررة في العاصفة.
كتب اللعب المصغرة
1) قبل ذروة الحدث (T-30 دقيقة)
1. قم بزيادة "minReplicas'/minNodes، وقم بتنشيط حمامات السباحة الدافئة.
2. قم بإحماء CDN/DNS/TLS/الاتصالات، طرازات التحميل.
3. قم بتضمين الطرق/الحدود الرمادية للروبوتات.
4. لوحات القياس: معلقة/lag/p95.
2) نقص العقدة (غير قابل للجدولة)
1. تحقق من CA، حصص السحابة، الشبكات الفرعية/IP.
2. خفض حدود الدفعة مؤقتًا، وتمكين الشفاء من الأولويات المنخفضة.
3. ارفع نوعًا أكبر مؤقتًا أو حمام سباحة ثانٍ.
3) نمو التأخر في قائمة الانتظار
1. KEDA: التوسع عن طريق الزناد ؛ 2) رفع حدود المستهلك ؛
2. تمكين مفاتيح الخصوصية ومنتجي الضغط الخلفي.
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" } # собираем рекомендации
Cluster Autoscaler (أفكار العلم، المفهوم):
--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 و milliscond. إصلاح السياسات في IaC، مع الملاحظة من خلال المقاييس «الصحيحة» (زمن الكمون/التأخر)، والحفاظ على المخزون الدافئ تحت القمم - وستكون المنصة مرنة ويمكن التنبؤ بها واقتصادية.