سياسات تنفيذ العمليات وإدارة → والقيود المفروضة على وقت التشغيل
سياسات التنفيذ والقيود المفروضة على وقت التشغيل
1) الغرض
تجعل سياسات وقت التشغيل سلوك الخدمات متوقعًا وآمنًا واقتصاديًا: الحد من «الجيران الصاخبين»، ومنع التسريبات والحرارة الزائدة، وضمان الامتثال والاحتفاظ بمنظمات SLO عند زيادة الحمل.
الأهداف الرئيسية: العزلة، والتوزيع العادل للموارد، والتحكم في التدهور، وقابلية الاستنساخ، ومراجعة الحسابات.
2) النطاق
الحوسبة والذاكرة: وحدة المعالجة المركزية، ذاكرة الوصول العشوائي، توقف GC، حدود الخيط.
القرص/التخزين: IOPS/الإنتاجية، الحصص، السياسات (القراءة فقط).
Сеть: الدخول/الدخول، تشكيل النطاق الترددي، سياسات الشبكة.
العمليات/مكالمات النظام: seccop، القدرات، اليوليميت.
التنسيق: Kubernetes QoS، الطلبات/الحدود، الأولويات، التقارب/التقارب.
واجهة برمجة التطبيقات/البوابات: حدود الأسعار، الحصص، المهلات/إعادة التدوير، قواطع الدوائر.
البيانات/ETL/التدفقات: دفعة/تيار متزامن، ميزانيات تأخر المستهلك.
الأمان: AppArmor/SELinux، بلا جذور، أسرار/كوفيجي.
Policy-as-Code: OPA/Gatekeeper, Kyverno, Conftest.
3) المبادئ الأساسية
آمن من الفشل افتراضيًا: من الأفضل إسقاط الطلبات غير الضرورية بدلاً من الإسقاط.
يعتمد على الميزانية: تتناسب المهلات/إعادة التدوير مع ميزانية وقت الطلب وميزانية خطأ SLO.
نصف قطر الانفجار الصغير: مساحة الاسم/حمام السباحة/المضيف/عزل القطع.
إعلانية ومدققة: جميع القيود - في الرمز/المستودع + سجل التغيير.
عدالة المستأجرين المتعددين: لا يمكن لأي مستأجر/فريق «امتصاص» المجموعة بأكملها.
4) الحوسبة والذاكرة
4. 1 Kubernetes и cgroup v2
الطلبات/الحدود: تضمن الطلبات حصة وحدة المعالجة المركزية/الذاكرة ؛ تشمل الحدود الاختناق/قاتل OOM.
فئات QoS: مضمون/Burstable/BestFirst - احتفظ بسير العمل المهم في مضمون/Burstable.
وحدة المعالجة المركزية: 'المعالج المركزي. «،» المعالج المركزي. ماكس (دواسة الوقود)، CPuset للتثبيت.
الذاكرة: "الذاكرة. «،» الذاكرة. مبادلة. الحد الأقصى (عادةً ما يتم استبداله) oom_score_adj للأولوية.
4. 2 أنماط
غرفة الرأس 20-30٪ على العقدة، ومكافحة التقارب للازدواجية.
حدود GC: JVM '-Xmx' <k8s memory limite; اذهب: 'GOMEMLIMIT' ؛ العقدة: «- حجم الفضاء القديم».
ulimit: «nofile»، «nproc»، «fsize» - حسب ملف الخدمة.
5) القرص والتخزين
حصص IOPS/Extreput على PVC/التخزين العنقودي ؛ فصل السجل/البيانات.
جذر القراءة فقط FS، tmpfs للملفات المؤقتة، حد الحجم '/tmp '.
FS-watchdog: تنبيهات لملء الحجم ونمو inode.
6) الشبكة وحركة المرور
NetworkPolicy (الدخول/الخروج) - صفر ثقة من الشرق إلى الغرب.
حدود عرض النطاق الترددي: tc/ext-policies، QoS/DSCP للتدفقات الحرجة.
مراقب الخروج: قائمة بالمجالات/الشبكات الفرعية المسموح بها، التدقيق DNS.
سياسات mTLS + TLS - التشفير ونسخة البروتوكول القسري.
7) سلامة العملية
Seccomp (allowist syscalls)، ملفات تعريف AppArmor/SELinux.
إسقاط قدرات Linux (اترك الحد الأدنى)، "تشغيل AsNonRoot"، "اقرأ OnlyRootFilesystem'.
حاويات عديمة الجذور وصور موقعة وشهادات.
الأسرار فقط عبر Vault/KMS، tmp-tokens مع TTL قصير.
8) سياسات الوقت: المهلة، التراجعات، الميزانيات
ميزانية المهلة: مجموع جميع القفزات ≤ جيش تحرير السودان من طرف إلى طرف.
Retrai مع التراجع + النبض، أقصى محاولات في فئة الخطأ.
قاطع الدائرة: مفتوح مع خطأ %/مهلة p95 أعلى من العتبة → فشل سريع.
الحواجز: برك اتصال/قوائم انتظار منفصلة للمسارات الحرجة.
الضغط الخلفي: حصر المنتجين في تأخر المستهلكين.
9) حدود الأسعار والحصص والأولوية
الخوارزميات: دلو رمزي/متسرب، GCRA ؛ المحلية + الموزعة (Redis/Envoy/global).
الدقة: مفتاح واجهة برمجة التطبيقات/المستخدم/المنظمة/المنطقة/نقطة النهاية.
التدرجات ذات الأولوية: تدفقات «الدفع/الإذن» - الذهب والتحليلات - البرونز.
الحصص في اليوم/الشهر، وحدود «الانفجار» و «الاستدامة» ؛ 429 + إعادة المحاولة بعد.
10) التنسيق والمخطط
فئة الأولوية: حماية القرون P1 من التشرد.
PodDistructionBudget: حدود التوقف عن التحديثات.
Tains/Tolerations, (anti) affinity - isolation workboods.
RuntimeClass: gVisor/Firecracker/Wasm للصناديق الرملية.
الترتيب الذاتي الأفقي/الرأسي مع عتبات الحراسة والنسخ المتماثلة القصوى.
11) سياسات البيانات/ETL/Stream
التزامن لكل وظيفة/موضوع، وحجم الدفعة الأقصى، وفترة نقطة التفتيش.
ميزانيات تأخر المستهلك: الإنذار/الحرج ؛ حد DLQ وإعادة الدرج.
نضارة SLA لواجهات المتاجر، توقف مؤقت للوظائف الثقيلة في ذروة حركة المرور العاجلة.
12) السياسة كمدونة ومراقبة القبول
OPA Gatekeeper/Kyverno: لا توجد قرون بدون طلبات/حدود، لا "قراءة OnlyRootFilesystem'، مع" شبكة المضيف "،": الأحدث ".
أعترف لفحص Helm/K8s/Terraform مسبقاً
سياسات الطفرات: إضافة تلقائية للسيارة الجانبية (mTLS)، شروح، seccopProfile.
مثال كيفيرنو - حظر الحاويات بدون حدود:yaml apiVersion: kyverno. io/v1 kind: ClusterPolicy metadata:
name: require-resources spec:
validationFailureAction: Enforce rules:
- name: check-limits match:
resources:
kinds: ["Pod"]
validate:
message: "We need resources. requests/limits for CPU and memory"
pattern:
spec:
containers:
- resources:
requests:
cpu: "?"
memory: "?"
limits:
cpu: "?"
memory: "?"
مثال على OPA (Rego) - المهلة ≤ 800 مللي ثانية:
rego package policy. timeout
deny[msg] {
input. kind == "ServiceConfig"
input. timeout_ms> 800 msg: = sprintf ("timeout% dms exceeds budget 800ms," [input. timeout_ms])
}
13) مقاييس إمكانية الرصد والامتثال
النسبة المئوية للامتثال: النسبة المئوية للبودات ذات الطلبات/الحدود/البطاقات الصحيحة.
وضع الأمان: مشاركة القرون مع seccomp/AppArmor/عديم الجذور.
وصل حد السعر إلى٪، سقط٪، خانق٪، 429 سهمًا.
p95 مهلة/استرجاع، مدة فتح الدائرة.
OOM يقتل/عمليات الإخلاء، وحدة المعالجة المركزية تخنق الثواني.
نفي خروج الشبكة الأحداث، ويفتقد الخروج.
14) القوائم المرجعية
قبل وضع الخدمة
- الطلبات/الحدود مكتوبة ؛ QoS ≥ Burstable
- تتناسب المهلات والعمليات المعاد إصدارها مع اتفاقيات SLAs الشاملة
- تمكين قاطع الدائرة/الحاجز للتبعيات الخارجية
- NetworkPolicy (الدخول/الخروج) и mTLS
- Seccomp/AppArmor، وإسقاط القدرات، والخدمة المالية غير الجذرية، والقراءة فقط
- حدود الأسعار والحصص على بوابة/خدمة API
- PDB/الأولوية/التقارب المحدد ؛ تم تكوين التصنيف الذاتي
شهري
- استثناءات سياسة مراجعة الحسابات (TTL)
- مراجعة الميزانيات الزمنية/الخطأ
- اختبار الحريق: سقيفة/ضغط خلفي/قاطع دائرة
- الأسرار/الشهادات الدورية
15) الأنماط المضادة
بدون طلبات/حدود: «انفجار» يأكل الجيران → حوادث متتالية.
تراجعات عالمية بدون نفح: عاصفة في الإدمان.
المهلات اللانهائية: اتصالات «معلقة» واستنفاد البرك.
": أحدث العلامات والقابلة للتغيير: بناء وقت التشغيل غير المتوقع.
الخروج المفتوح: التسريبات والتبعيات غير المدارة.
لا PDB: التحديثات تطرد المسبح بأكمله.
16) كتب اللعب الصغيرة
ألف - اختناق وحدة المعالجة المركزية بنسبة مئوية في خدمة المدفوعات
1. تحقق من الحدود/الطلبات ومسارات الملف الشخصي الساخنة.
2. رفع الطلبات مؤقتًا، وتشغيل المقياس التلقائي بزمن انتقال p95.
3. تمكين الحدود/معدلات استرداد النقود، وتقليل تعقيد الاستفسارات.
4. ما بعد الإصلاح: إلغاء التطبيع/المؤشرات، تنقيح الحدود.
باء - 429 شكوى من النمو وواجهة برمجة التطبيقات
1. تقرير عن المفاتيح/المنظمات → دخلت في الحصة.
2. أدخل الحصص الهرمية (per- org→per-key)، ارفع انفجار الذهب.
3. الاتصال والتوجيه بشأن التراجع ؛ يمكن الحد من التكيف.
B. Mass OOM يقتل
1. قلل من التزامن، وقم بتمكين حد الكومة والتنميط.
2. إعادة حساب XMX/GOMEMLIMIT لذروة الاستخدام الحقيقي.
3. إعادة تدريب GC/حمامات السباحة، إضافة تنبيهات المقايضة والحدود اللينة.
17) أمثلة التكوين
حاوية K8s ذات إعدادات آمنة (شظية):yaml securityContext:
runAsNonRoot: true allowPrivilegeEscalation: false readOnlyRootFilesystem: true capabilities:
drop: ["ALL"]
الحد الأقصى لمعدل المبعوث (الجزء من الناحية المفاهيمية):
yaml rate_limit_policy:
actions:
- request_headers:
header_name: "x-api-key"
descriptor_key: "api_key"
دخول Nginx - المهلة والقيود:
yaml nginx. ingress. kubernetes. io/proxy-connect-timeout: "2s"
nginx. ingress. kubernetes. io/proxy-read-timeout: "1s"
nginx. ingress. kubernetes. io/limit-rps: "50"
18) التكامل مع التغيير وإدارة الحوادث
يتم أي تخفيف للسياسة عبر RFC/CAB واستثناء مؤقت مع TTL.
حوادث انتهاك السياسة → تشريح الجثة وتحديث القواعد.
يتم ربط لوحات القيادة الخاصة بالامتثال بتقويم الإصدار.
19) خلاصة القول
سياسات التنفيذ هي «حاجز» للمنصة: فهي لا تتدخل في القيادة بسرعة، ولا تسمح بالسقوط. إن القيود الإعلانية، والإنفاذ التلقائي، والمقاييس الجيدة، والانضباط الاستثنائي، تحول الاستغلال الفوضوي إلى نظام يمكن التحكم فيه والتنبؤ به - بتكلفة محكومة ومنظمات محدودة مستدامة.