4.5 KiB
4.5 KiB
Cykl życia Agent Pod
#sympozium #architektura #agent-pod
Anatomia Agent Pod
Każdy agent run tworzy pod z następującymi kontenerami:
┌─────────────────────────────────────────────────────┐
│ Agent Pod (Job) │
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌──────────────┐ │
│ │ Agent │ │ IPC Bridge │ │ Skill Sidecar│ │
│ │ Container │ │ Sidecar │ │ (kubectl, │ │
│ │ │ │ │ │ helm, etc.) │ │
│ │ - LLM loop │ │ - fsnotify │ │ │ │
│ │ - Tool exec │ │ - NATS pub │ │ - /workspace │ │
│ │ - /skills │ │ - /ipc │ │ - RBAC scope │ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬───────┘ │
│ │ │ │ │
│ /workspace /ipc (tmpfs) /workspace │
│ /skills (ro) (RAM-backed) │
│ /ipc │
│ /tmp │
│ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ MCP Bridge │ │ Sandbox │ │
│ │ (opcjonalny) │ │ (opcjonalny) │ │
│ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────┘
Woluminy
| Wolumin | Typ | Rozmiar | Cel |
|---|---|---|---|
workspace |
emptyDir | 1Gi | Współdzielone pliki robocze agent ↔ sidecary |
ipc |
emptyDir (RAM) | 64Mi | JSON IPC: agent → bridge → NATS |
skills |
Projected ConfigMap | - | Markdown instrukcje ze SkillPacks (read-only) |
tmp |
emptyDir | 256Mi | Tymczasowe pliki (read-only root FS) |
SecurityContext agenta
Hardened security context - patrz SecurityContext dla wyjaśnienia poszczególnych pól:
SecurityContext: &corev1.SecurityContext{
ReadOnlyRootFilesystem: &readOnly, // true - root FS read-only
AllowPrivilegeEscalation: &noPrivEsc, // false - blokuje setuid
Capabilities: &corev1.Capabilities{
Drop: []corev1.Capability{"ALL"}, // Drop ALL Linux capabilities
},
}
Zasoby
| Kontener | CPU Request | CPU Limit | Memory Request | Memory Limit |
|---|---|---|---|---|
| Agent | 250m | 1 | 512Mi | 1Gi |
| IPC Bridge | 50m | 100m | 64Mi | 128Mi |
| Sandbox | 100m | 500m | 256Mi | 512Mi |
Fazy lifecycle
Pending → Running → Succeeded
→ Failed
→ Serving (tryb server)
Pending
- Walidacja polityki
- Tworzenie ServiceAccount
sympozium-agent - Tworzenie input ConfigMap (task, system prompt, memory)
- Rozwiązywanie sidecars i RBAC
- Tworzenie Job/Sandbox CR
Running
- Polling statusu poda co 10 sekund
- Monitorowanie completion/failure
Succeeded/Failed
- Zbieranie logów poda (wynik agenta)
- Ekstrakcja memory markers z outputu
- Aktualizacja memory ConfigMap
- Usuwanie efemerycznego RBAC
- Pruning historii (domyślnie 50 runów per instancja)
- Usuwanie finalizera
Serving (tryb server)
- Deployment zamiast Job
- Service dla routowania
- Używany dla web-endpoint
- Długo żyjący, nie jest garbage-collectowany po zakończeniu
Zmienne środowiskowe agenta
| Zmienna | Wartość |
|---|---|
AGENT_RUN_ID |
Nazwa AgentRun CR |
AGENT_ID |
ID konfiguracji agenta |
SESSION_KEY |
Klucz sesji |
INSTANCE_NAME |
Nazwa SympoziumInstance |
MODEL_PROVIDER |
openai/anthropic/azure/ollama |
MODEL_NAME |
Identyfikator modelu |
THINKING_MODE |
off/low/medium/high |
SPAWN_DEPTH |
Głębokość zagnieżdżenia sub-agenta |
TRACEPARENT |
W3C traceparent (OTel) |
Powiązane: Control Plane | Orchestrator - PodBuilder i Spawner | Skill Sidecars i auto-RBAC