# Job (Kubernetes) #kubernetes #workload #słownik ## Co to jest? **Job** to zasób Kubernetes tworzący **pod który wykonuje zadanie i kończy się**. W odróżnieniu od [[Deployment]] (pody działają ciągle), Job tworzy pod który ma zakończyć się sukcesem. ## Zachowanie ``` Job created → Pod created → Pod runs → Pod completes (exit code 0) → Job Succeeded → Pod fails (exit code != 0) → Job retries or Failed ``` ## Kluczowe cechy | Cecha | Opis | |-------|------| | **Run-to-completion** | Pod kończy się po wykonaniu zadania | | **Retry policy** | Konfigurowalny `backoffLimit` (ile razy retry) | | **Parallelism** | Wiele podów jednocześnie (`parallelism`) | | **TTL cleanup** | Automatyczne usuwanie po N sekundach | | **Completions** | Ile podów musi zakończyć się sukcesem | ## Przykład ```yaml apiVersion: batch/v1 kind: Job metadata: name: agent-run-001 spec: backoffLimit: 0 # Bez retries ttlSecondsAfterFinished: 300 # Usuń po 5 minutach template: spec: restartPolicy: Never containers: - name: agent image: agent-runner:v1 ``` ## Job vs inne workloady | Workload | Lifecycle | Restart | Use case | |----------|-----------|---------|----------| | **Job** | Run-to-completion | Never/OnFailure | Batch, one-shot | | [[Deployment]] | Long-running | Always | Web services | | CronJob | Periodic Job | Never/OnFailure | Scheduled batch | | [[DaemonSet]] | One per node | Always | Node agents | | [[StatefulSet]] | Ordered, stable | Always | Databases | ## Użycie w Sympozium **AgentRun w trybie task = Kubernetes Job:** Każde wywołanie agenta tworzy Job z: - Agent container (LLM loop) - IPC Bridge sidecar - Skill sidecars - `backoffLimit: 0` (brak retry - lepsze logowanie błędów) - `restartPolicy: Never` Po zakończeniu controller zbiera logi, wynik i token usage ze statusu poda. Więcej: [[Model efemerycznych agentów]] | [[Cykl życia AgentRun]] --- Powiązane: [[Deployment]] | [[Model efemerycznych agentów]] | [[Pod]]