Files
obsidian-sympozium/08-Słownik-K8s/Controller i Reconciler.md
2026-03-25 00:05:57 +01:00

2.5 KiB

Controller i Reconciler

#kubernetes #architecture #operator #słownik

Co to jest?

Controller to pętla kontrolna w Kubernetes obserwująca stan zasobów i doprowadzająca rzeczywisty stan do pożądanego (desired state → actual state). Reconciler to funkcja wywoływana gdy stan zasobu zmienia się.

Wzorzec reconciliation

Desired state (CRD spec) → Controller → Actual state (K8s resources)

Pętla:
  1. Observe: Watch API server for changes
  2. Diff: Compare desired vs actual
  3. Act: Create/update/delete resources
  4. Repeat

Kluczowe koncepty

Koncept Opis
Watch Subskrypcja na eventy (create/update/delete)
Work queue Kolejka zasobów do reconciliation
Reconcile() Funkcja wywoływana per zasób
Requeue "Sprawdź mnie ponownie za N sekund"
Idempotent Reconcile() musi być bezpieczne do wielokrotnego wywołania
Level-triggered Reaguje na stan, nie na event

Level-triggered vs edge-triggered

Edge-triggered: "Coś się zmieniło!" → reaguj na zmianę
Level-triggered: "Jaki jest aktualny stan?" → doprowadź do desired

Kubernetes Controllers = LEVEL-TRIGGERED
  → Nie ważne CO się zmieniło
  → Ważne JAKI jest stan i JAKI powinien być
  → Resilient na missed events

controller-runtime

Sympozium używa sigs.k8s.io/controller-runtime - framework Go dla Kubernetes controllers:

type AgentRunReconciler struct {
    client.Client
    Scheme *runtime.Scheme
    Log    logr.Logger
}

func (r *AgentRunReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
    // 1. Fetch resource
    // 2. Compare desired vs actual
    // 3. Create/update/delete
    // 4. Update status
    return ctrl.Result{RequeueAfter: 10 * time.Second}, nil
}

Controllers w Sympozium

Controller Zasób Co reconciliuje
AgentRunReconciler AgentRun Job/Sandbox CR, RBAC, ConfigMaps
SympoziumInstanceReconciler SympoziumInstance Channel [[Deployment
PersonaPackReconciler PersonaPack Instances, Schedules, memory
SkillPackReconciler SkillPack ConfigMaps ze skills
SympoziumScheduleReconciler SympoziumSchedule AgentRun na schedule
MCPServerReconciler MCPServer Deployments, Services

Więcej: Control Plane | Cykl życia AgentRun


Powiązane: CRD - Custom Resource Definition | Control Plane | Finalizer