Операциялар және басқару → Орындау саясаты және runtime-шектеулер
Орындау саясаты және runtime-шектеулер
1) Мақсаты
Runtime-саясаткерлері сервистердің мінез-құлқын болжамды, қауіпсіз және үнемді етеді: «шулы көршілерді» шектейді, ағып кетуді және қызып кетуді болдырмайды, жүктеме артқан кезде комплаенс пен SLO ұстауды қамтамасыз етеді.
Түйінді мақсаттар: оқшаулау, ресурстарды әділ бөлу, бақыланатын тозу, жаңғыртылу, аудит.
2) Қамту саласы
Есептеу және жады: CPU, RAM, GC-үзілістер, ағындардың лимиттері.
Диск/сақтау орны: IOPS/throughput, квоталар, fs-саясат (read-only).
Сеть: egress/ingress, bandwidth shaping, network policies.
Процестер/жүйелік шақырулар: seccomp, capabilities, ulimit.
Оркестрлеу: Kubernetes QoS, requests/limits, басымдықтар, taints/affinity.
API/шлюздер: rate-limits, квоталар, таймауттар/ретрациялар, circuit-breakers.
Деректер/ETL/ағындар: batch/stream concurrency, consumer lag budgets.
Қауіпсіздік: AppArmor/SELinux, rootless, құпиялар/кофигтер.
Policy-as-Code: OPA/Gatekeeper, Kyverno, Conftest.
3) Базалық қағидаттар
Әдепкі Fail-safe: құлап қалудан артық сұрауларды тастаған дұрыс.
Budget-driven: таймауттар/ретрайлер сұрау уақытының бюджетіне және SLO қателерінің бюджетіне жазылады.
Small blast radius: namespace/пул/торап/шард бойынша оқшаулау.
Declarative & auditable: барлық шектеулер - кодта/репозиторийде + өзгерістер журналында.
Multi-tenant fairness: ешқандай жалға алушы/команда бүкіл кластерді «сорып» алмайды.
4) Есептеу және жады
4. 1 Kubernetes и cgroup v2
requests/limits: requests CPU/жад үлесіне кепілдік береді; limits throttling/OOM-killer қамтиды.
QoS сыныптар: Guaranteed/Burstable/BestEffort - Guaranteed/Burstable сыни ворклоадтар ұстайды.
CPU: `cpu. shares`, `cpu. max '(throttle), CPuset пиннингке арналған.
Жады: 'memory. max`, `memory. swap. max '(әдетте swap off), басымдық үшін oom_score_adj.
4. 2 Үлгілер
Тораптағы Headroom 20-30%, қайталауға арналған anti-affinity.
GC-лимиттер: JVM '-Xmx' <k8s memory limit; Go: `GOMEMLIMIT`; Node: `--max-old-space-size`.
ulimit: 'nofile', 'nproc', 'fsize' - сервис профилі бойынша.
5) Диск және сақтау орны
IOPS/Throughput ПВХ/кластер-storage квотасы; журналдарды/деректерді бөлу.
Уақытша файлдар үшін Read-only root FS, tmpfs, өлшем шегі '/tmp '.
FS-watchdog: томдарды толтыруға және inode өсуіне арналған алерталар.
6) Желі және трафик
NetworkPolicy (ingress/egress) — zero-trust east-west.
Bandwidth limits: tc/egress-policies, QoS/DSCP сындарлы ағындар үшін.
Egress контроллері: рұқсат етілген домендер/кіші желілер тізімі, audit DNS.
mTLS + TLS policies: шифрлау және хаттаманың мәжбүрлі нұсқасы.
7) Процесс қауіпсіздігі
Seccomp (allowlist syscalls), AppArmor/SELinux профильдері.
Drop Linux capabilities (минимумды қалдыру), 'runAsNonRoot', 'readOnlyRootFilesystem'.
Rootless контейнерлер, қол қойылған суреттер мен attestations.
Secrets-only via Vault/KMS, tmp-tokens қысқа TTL.
8) Уақыт саясаты: таймауттар, ретрациялар, бюджеттер
Timeout budget: SLA энд-ту-энд ≤ барлық hop 'лардың сомасы.
backoff + джиттермен ретрайлер, қателер класы бойынша максималды әрекеттер.
Circuit-breaker: ашық кезде error %/timeout p95 шегінен жоғары → жылдам істен шығулар.
Bulkheads: сыни жолдар үшін жеке connection-pool 's/кезектер.
Backpressure: тұтынушылардың lag бойынша продюсерлерді шектеу.
9) Rate-limits, квоталар және басымдық
Алгоритмдер: token/leaky bucket, GCRA; жергілікті + таратылған (Redis/Envoy/global).
Түйіршіктілігі: API/пайдаланушы/ұйым/өңір/эндпойнт кілті.
Басымдық градиенттері: «төлем/авторизация» ағындары - gold, талдау - bronze.
Тәулігіне/айына квоталар, «burst» және «sustained» лимиттері; 429 + Retry-After.
10) Оркестрлеу және жоспарлаушы
PriorityClass: P1-подтарды ығыстырудан қорғау.
PodDisruptionBudget: жаңарту кезінде шегініс шегі.
Taints/Tolerations, (anti) Affinity - workloads оқшаулау.
RuntimeClass: құмсалғыштар үшін gVisor/Firecracker/Wasm.
Horizontal/Vertical autoscaling гвард-табалдырықтармен және max-replicas.
11) Деректер/ETL/ағындардың саясаты
Concurrency per job/topic, max batch size, checkpoint интервал.
Consumer lag budgets: warning/critical; DLQ және ретрациялардың лимиті.
Витриналар үшін Freshness SLA, прод-трафиктің шыңы кезінде ауыр кендірлердің үзілісі.
12) Policy-as-Code және admission-бақылау
OPA Gatekeeper/Kyverno: requests/limits жоқ, 'readOnlyRootFilesystem', 'hostNetwork', ': latest'.
Conftest pre-commit тексеру үшін Helm/K8s/Terraform.
Mutation policies: 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 мс ≤ таймауттар:
rego package policy. timeout
deny[msg] {
input. kind == "ServiceConfig"
input. timeout_ms> 800 msg: = sprintf ("timeout% dms exceeds budget 800ms," [input. timeout_ms])
}
13) Бақылау және сақтау өлшемдері
Compliance%: түзетілген requests/limits/labels тобының үлесі.
Security Posture: seccomp/AppArmor/rootless.
Rate-limit hit%, shed%, throttle%, 429 share.
p95 таймауттар/ретрайлер, circuit-open duration.
OOM kills/evictions, CPU throttle seconds.
Network egress denied events, egress allowlist misses.
14) Чек парақтары
Сервисті орналастыру алдында
- Жазылған requests/limits; QoS ≥ Burstable
- Таймауттар мен ретрайлер end-to-end SLA-ға сәйкес келеді
- Circuit-breaker/bulkhead сыртқы тәуелділіктер үшін қосылған
- NetworkPolicy (ingress/egress) и mTLS
- Seccomp/AppArmor, drop capabilities, non-root, read-only FS
- Rate-limits және API-шлюз/сервистегі квоталар
- PDB/priority/affinity берілген; autoscaling бапталған
Ай сайын
- policy-ерекшеліктер аудиті (TTL)
- Уақыт/қателер бюджеттерін қайта қарау
- Деградация сынағы (fire-drill): shed/backpressure/circuit-breaker
- Құпияларды/сертификаттарды ауыстыру
15) Қарсы үлгілер
requests/limits: «бурст» көршілерді жейді → каскадтық ақаулар.
Джиттерсіз жаһандық ретрациялар: тәуелділіктегі дауыл.
Шексіз таймауттар: «ілініп тұрған» коннектілер және пулдардың таусылуы.
': latest' және mutable тегтері: болжанбайтын runtime-құрастырулар.
Ашық egress: ағып кету және басқарылмайтын тәуелділік.
PDB жоқ: жаңартулар бүкіл пулды «қағып тастайды».
16) Шағын ойнатқыштар
А. payments-service-те CPU throttle%
1. limits/requests бағдарламасын тексеру және ыстық жолдарды профильдеу.
2. Уақытша requests көтеріңіз, автоскейлді p95 latency бойынша қосыңыз.
3. Кэш-фоллбэк лимиттерін/курстарын қосу, сұраулардың күрделілігін төмендету.
4. Пост-фикс: денормализация/индекстер, қайта қарау limits.
B. Өсу 429 және API-ге шағымдар
1. Кілттер/ұйымдар бойынша есеп → квотаға кім кірді.
2. hierarchical quotas (per-org → per-key) енгізу, gold үшін burst көтеру.
3. backoff бойынша коммуникация және guidance; adaptive limiting қосылсын.
В. Жаппай OOM kills
1. concurrency төмендету, heap-лимитін және бейіндеуді қосу.
2. Xmx/GOMEMLIMIT-ті нақты peak-usage деп қайта санау.
3. GC/пулды қайта оқыту, swap-off және soft-limit алаңдарын қосу.
17) Конфигурация мысалдары
Қауіпсіз параметрлері бар K8s контейнер (фрагмент):yaml securityContext:
runAsNonRoot: true allowPrivilegeEscalation: false readOnlyRootFilesystem: true capabilities:
drop: ["ALL"]
Envoy rate-limit (фрагмент тұжырымдамалық):
yaml rate_limit_policy:
actions:
- request_headers:
header_name: "x-api-key"
descriptor_key: "api_key"
Nginx ingress - таймауттар мен шектеулер:
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-мен уақытша алып тастау.
Саясаттың бұзылуы бойынша инциденттер → пост-мортем және ережелерді жаңарту.
Сәйкестік дашбордтары (compliance) релиздік күнтізбеге қосылған.
19) Қорытынды
Орындау саясаты - платформаға арналған «сүйеніш»: олар тез жүруге кедергі келтірмейді, құлап кетуге жол бермейді. Декларативтік шектеулер, автоматты мәжбүрлеу, жақсы өлшемдер және ерекшеліктер тәртібі ретсіз пайдалануды басқарылатын және болжамды жүйеге айналдырады - бақыланатын құнымен және тұрақты SLO-мен.