سیاست های اجرایی مدیریت و محدودیت های زمان اجرا
سیاست های اجرایی و محدودیت های زمان اجرا
1) هدف
سیاست های زمان اجرا رفتار خدمات را قابل پیش بینی، ایمن و اقتصادی می کند: محدود کردن «همسایگان پر سر و صدا»، جلوگیری از نشت و گرمای بیش از حد، اطمینان از انطباق و نگهداری SLO ها هنگام افزایش بار.
اهداف کلیدی: جداسازی، تخصیص عادلانه منابع، تخریب کنترل شده، تکرارپذیری، حسابرسی.
2) محدوده
محاسبه و حافظه: CPU، RAM، GC مکث، محدودیت موضوع.
دیسک/ذخیره سازی: IOPS/توان، سهمیه، FS-سیاست (فقط خواندنی).
Сеть: خروج/ورود، شکل دادن به پهنای باند، سیاست های شبکه.
فرآیندها/سیستم خواستار: seccomp، قابلیت ها، ulimit.
ارکستراسیون: Kubernetes QoS، درخواست/محدودیت، اولویت ها، tains/affinity.
API/gateways: rate-limits، quotates، timeouts/retrays، circuit-breakers.
داده/ETL/جریان: همزمانی دسته ای/جریان، بودجه تاخیر مصرف کننده.
امنیت: AppArmor/SELinux، بی ریشه، اسرار/کوفیگی.
سیاست به عنوان کد: OPA/دروازه بان، Kyverno، Conftest.
3) اصول اساسی
Fail-safe به طور پیش فرض: بهتر است درخواست های غیر ضروری را رها کنید تا رها کنید.
بودجه محور: زمان بندی/بازپرداخت متناسب با بودجه زمان درخواست و بودجه خطای SLO.
شعاع انفجار کوچک: جداسازی فضای نام/استخر/میزبان/شارد.
اعلان و حسابرسی: تمام محدودیت ها - در کد/مخزن + تغییر ورود به سیستم.
عدالت چند مستاجر: هیچ مستاجر/تیم نمی تواند کل خوشه را بیرون بکشد.
4) محاسبات و حافظه
4. 1 کوبرنتیز и گروه v2
درخواست ها/محدودیت ها: درخواست ها سهم CPU/حافظه را تضمین می کنند. محدودیت ها شامل خفه کردن/OOM قاتل است.
کلاسهای QoS: Guaranteed/Burstable/BestEffort - گردش کارهای بحرانی را در Guaranteable/Burstable نگه دارید.
CPU: "پردازنده مرکزی. سهام، پردازنده. حداکثر (دریچه گاز)، CPuset برای پینینگ.
حافظه: حافظه. حداکثر، حافظه. مبادله کنید. حداکثر '(معمولا مبادله کردن) oom_score_adj برای اولویت.
4. 2 الگو
Headroom 20-30٪ در گره، ضد وابستگی برای تکثیر.
محدودیت های GC: JVM '-Xmx' <k8s محدودیت حافظه ؛ برو: «GOMEMLIMIT» ؛ گره: «--max-old-space-size».
ulimit: 'nofile'، 'nproc'، 'fsize' - بر اساس مشخصات سرویس.
5) دیسک و ذخیره سازی
IOPS/سهمیه توان در پی وی سی/خوشه ذخیره سازی ؛ ورود/جداسازی داده ها.
فقط خواندنی ریشه FS, tmpfs برای فایل های موقت, محدودیت اندازه '/tmp '.
FS-watchdog: هشدار برای پر کردن حجم و رشد inode.
6) شبکه و ترافیک
NetworkPolicy (ورود/خروج) - اعتماد صفر شرق به غرب.
محدودیتهای پهنای باند: tc/سیاست خروج، QoS/DSCP برای جریانهای بحرانی.
کنترل کننده خروج: لیست دامنه ها/زیر شبکه های مجاز، DNS حسابرسی.
سیاست های mTLS + TLS - رمزگذاری و نسخه پروتکل اجباری.
7) ایمنی فرآیند
Seccomp (syscalls allowlist)، پروفایل AppArmor/SELinux.
قابلیت های لینوکس را رها کنید (حداقل بگذارید)، 'runAsNonRoot'، 'readOnlyRootFilesystem'.
ظروف بدون ریشه، تصاویر و گواهینامه های امضا شده.
اسرار فقط از طریق Vault/KMS، نشانه های TMP با TTL کوتاه.
8) سیاست های زمان: زمان بندی، عقب نشینی، بودجه
بودجه اتمام وقت: مجموع تمام هاپ ≤ SLA پایان به پایان.
Retrai با عقب نشینی + jitter، حداکثر تلاش در کلاس خطا.
قطع کننده مدار: با خطای ٪/timeout p95 بالای آستانه → خرابی های سریع باز می شود.
Bulkheads: جداگانه اتصال استخر/صف برای مسیرهای بحرانی.
پس فشار: محدود کردن تولید کنندگان به تاخیر انداختن مصرف کنندگان.
9) محدودیت نرخ، سهمیه و اولویت
الگوریتم: نشانه/سطل نشت، GCRA ؛ محلی + توزیع شده (Redis/Envoy/Global).
دانه بندی: کلید API/کاربر/سازمان/منطقه/نقطه پایانی.
شیب اولویت: «پرداخت/مجوز» جریان - طلا، تجزیه و تحلیل - برنز.
سهمیه در روز/ماه, «پشت سر هم» و «پایدار» محدودیت; 429 + تکرار پس از.
10) ارکستراسیون و برنامه ریز
PriorityClass: حفاظت از غلاف P1 از جابجایی.
PodDisruptionBudget: محدودیت های خرابی در به روز رسانی.
Tains/Tolerations، (ضد) وابستگی - بارهای کاری جداسازی.
RuntimeClass: gVisor/Firecracker/Wasm برای جعبه های ماسه ای.
خودکار افقی/عمودی با آستانه گارد و حداکثر کپی.
11) سیاست های داده/ETL/جریان
همزمانی در هر کار/موضوع، حداکثر اندازه دسته ای، فاصله بازرسی.
بودجه تاخیر مصرف کننده: هشدار/بحرانی ؛ DLQ و محدودیت بازپرداخت.
SLA تازه برای فروشگاه ها، مکث کارهای سنگین در قله ترافیک رانندگی.
12) سیاست به عنوان کد و کنترل پذیرش
OPA Gatekeeper/Kyverno: هیچ غلاف بدون درخواست/محدودیت، هیچ 'readOnlyRootFilesystem'، با 'hostNetwork'، ': آخرین'.
تست برای چک های Helm/K8s/Terraform قبل از تعهد.
سیاست های جهش: خودکار اضافه کردن sidecar (mTLS)، حاشیه نویسی، seccompProfile.
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 ms:
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/rootless.
نرخ محدود ضربه٪، ریخته٪، دریچه گاز٪، 429 سهم.
p95 timeouts/retraces، مدت زمان مدار باز.
OOM کشتن/اخراج، ثانیه دریچه گاز CPU.
خروج از شبکه حوادث را انکار کرد، خروج از allowlist misses.
14) چک لیست
قبل از ارائه خدمات
- درخواست ها/محدودیت ها نوشته شده است ؛ QoS ≥ قابل انفجار
- زمان بندی و بازپرداخت مناسب SLA های پایان به پایان است
- مدار شکن/دیوار برای وابستگی های خارجی فعال است
- NetworkPolicy (ورود/خروج) и mTLS
- Seccomp/AppArmor، قابلیت های قطره، غیر ریشه، فقط خواندنی FS
- نرخ محدودیت و سهمیه در API دروازه/سرویس
- PDB/اولویت/وابستگی مشخص شده است ؛ خودکار مقیاس پیکربندی شده است
ماهانه
- استثنائات سیاست حسابرسی (TTL)
- زمان بررسی/بودجه خطا
- آزمون آتش سوزی: ریخته/فشار پشتی/مدار شکن
- چرخش اسرار/گواهینامه ها
15) ضد الگوهای
بدون درخواست/محدودیت: «پشت سر هم» می خورد تا همسایگان → سقوط آبشار.
عقب نشینی جهانی بدون Jitter: طوفان در اعتیاد
وقفه های نامحدود: اتصالات «حلق آویز» و خستگی استخرها.
': آخرین' و برچسب های mutable: ساخت زمان اجرا غیر قابل پیش بینی.
خروج باز: نشت و وابستگی های مدیریت نشده.
بدون PDB: به روز رسانی دست کشیدن از کل استخر.
16) کتاب های مینی
A. دریچه گاز CPU٪ در پرداخت خدمات
1. محدودیت ها/درخواست ها و مسیرهای داغ پروفایل را بررسی کنید.
2. به طور موقت درخواست ها را افزایش دهید، autoscale را با تاخیر p95 روشن کنید.
3. فعال کردن محدودیت/نرخ نقدی تماس، کاهش پیچیدگی نمایش داده شد.
4. پس از اصلاح: غیر طبیعی/شاخص ها، تجدید نظر در محدودیت ها.
B. رشد 429 و شکایات API
1. گزارش در کلید/سازمان → به سهمیه زد.
2. مقادیر سلسله مراتبی (per- org → per -key) را وارد کنید، پشت سر هم برای طلا را افزایش دهید.
3. ارتباطات و راهنمایی در عقب نشینی ؛ محدود کردن تطبیقی را فعال کنید.
ب. جرم OOM می کشد
1. کاهش همزمانی، فعال کردن حد هیپ و profiling.
2. محاسبه مجدد Xmx/GOMEMLIMIT برای واقعی اوج استفاده.
3. Retrain 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) خط پایین
سیاست های اجرایی یک «نرده» برای پلت فرم هستند: آنها با رانندگی سریع دخالت نمی کنند، آنها اجازه نمی دهند سقوط کنند. محدودیت های اعلامی، اجرای خودکار، معیارهای خوب و نظم و انضباط استثنا، بهره برداری هرج و مرج را به یک سیستم قابل کنترل و قابل پیش بینی تبدیل می کند - با هزینه های کنترل شده و SLO های پایدار.