Lab 01 / 09Otomatik onarım simülatörü

Frenli Kendini Onarma

Küçük bir cluster’ı boz, onarım kontrolcüsünün düzeltişini izle — ta ki korumaları bu işi bir insanın yapması gerektiğine karar verene kadar.

  • Auto-remediation
  • Policy gate
  • Kubernetes model

Otomatik oynatma: senaryolu bir incident. Kontrolü almak için herhangi bir şeye tıkla.

Cluster · 3 node × 4 pod

  • sağlıklı
  • yüklü
  • crash
  • restart
  • erişilemez
node-aReady
  • api-----v--çalışıyor
  • api-----v--çalışıyor
  • checkout-----v--çalışıyor
  • search-----v--çalışıyor
node-bReady
  • api-----v--çalışıyor
  • checkout-----v--çalışıyor
  • checkout-----v--çalışıyor
  • search-----v--çalışıyor
node-cReady
  • api-----v--çalışıyor
  • checkout-----v--çalışıyor
  • search-----v--çalışıyor
  • search-----v--çalışıyor
İstek başarısı100.0%
Hata oranı0.0%
son 60 sn · kesikli çizgi = %99 SLO

Onarım kontrolcüsü

sınırlı · policy.yaml
  1. Detect
  2. Diagnose
  3. Propose
  4. Policy gate
  5. Act
  6. Verify
  7. Close
gate.deny →İnsana devret
verify.fail →Dur ve page at

İzliyor. Yapılacak bir şey yok.

Bütçe / incident
0/3
Rollback / 6 sa
0/1
Restart
0
Flapping
0
Gate reddi
0
Page
0
restart cooldown (120 sn)
apihazır
checkouthazır
searchhazır

Olay günlüğü

sim zamanı · gerçeğin 4 katı

    Melih Kızmaz yaptı · tamamen tarayıcında çalışır

    Ne görüyorsun

    Üç servis çalıştıran üç node’luk oyuncak bir cluster ve tek bir sağlık sinyalini izleyen bir onarım kontrolcüsü. Her buton cluster’ı farklı bir şekilde bozuyor. Guardrail’ler açıkken kontrolcü, yazıda anlatılan state machine’i adım adım yürütüyor: Detect (sorunu fark et), Diagnose (sebebi ilişkilendir), Propose (tek bir aksiyon öner), Policy gate (bütçe, cooldown ve otonomi sınırına takılıyor mu bak), Act (bir kez uygula), Verify (20 saniye bekleyip gerçekten düzeldiğini doğrula) ve Close (kapat). Reddedilen bir öneri ya da başarısız bir verify asla sessizce tekrar denenmiyor; iş bir insana, yani on-call’a page olarak düşüyor.

    Frenler neden önemli

    Öldürülen bir pod dürüst bir arıza: tek restart düzeltir, iki döngü de bunu halleder (naif olan daha hızlı, çünkü verify beklemesinin gerçek bir maliyeti var). Latency eklemek ise yanıltıcı bir sinyal: pod’lar sağlam, bozuk olan bir dependency. Guard’lı döngü bir kez restart atıyor, düzelme görmüyor ve duruyor. Hatalı bir deploy, pencere başına bir tane gate’ten geçen rollback hakkı alıyor. Node çökmesinin blast radius’u koca bir node; policy bunun için yalnızca öneri yapılmasına izin veriyor. Guardrail’leri kapatıp aynı arızaları tekrar dene: flapping’i, restart fırtınalarını ve hatalı release’in bütün replica’lara yayılmasını göreceksin. Hepsi log’a “success” olarak düşüyor ve hiçbiri kimseye page atmıyor.

    Policy değerleri (incident başına 3 aksiyon, 120 saniyelik restart cooldown, pencere başına bir rollback, 20 saniyelik verify beklemesi) Melih Kızmaz’ın yazısının arkasındaki lab reposundan geliyor. O lab’de naif döngü sağlıklı bir servisi 106 saniyede 13 kez restart etti; guard’lı döngü ise 20,4 saniyede işi bir insana devretti. Bu sayfa gerçek bir cluster değil, tarayıcında çalışan bir simülasyon.

    Uzun versiyonunu okuAuto-remediation incident’ı ne zaman büyütür: blast radius ve guardrail’lerNaylaLabs