initial commit
This commit is contained in:
64
08-Słownik-K8s/Finalizer.md
Normal file
64
08-Słownik-K8s/Finalizer.md
Normal file
@@ -0,0 +1,64 @@
|
||||
# Finalizer
|
||||
|
||||
#kubernetes #lifecycle #słownik
|
||||
|
||||
## Co to jest?
|
||||
|
||||
**Finalizer** to mechanizm Kubernetes **blokujący usunięcie zasobu** do czasu wykonania cleanup. Dopóki finalizer istnieje na zasobie, K8s nie usunie go z etcd.
|
||||
|
||||
## Jak działa?
|
||||
|
||||
```
|
||||
1. Zasób ma finalizer: ["sympozium.ai/finalizer"]
|
||||
2. kubectl delete → DeletionTimestamp ustawiony, ale zasób ISTNIEJE
|
||||
3. Controller widzi DeletionTimestamp → wykonuje cleanup
|
||||
4. Controller usuwa finalizer z listy
|
||||
5. K8s widzi brak finalizerów → zasób usunięty z etcd
|
||||
```
|
||||
|
||||
## Bez vs z finalizer
|
||||
|
||||
```
|
||||
Bez finalizer:
|
||||
kubectl delete agentrun → NATYCHMIAST usunięty
|
||||
→ Orphaned Jobs, RBAC, ConfigMaps!
|
||||
|
||||
Z finalizer:
|
||||
kubectl delete agentrun → DeletionTimestamp set
|
||||
→ Controller: cleanup Jobs, RBAC, ConfigMaps
|
||||
→ Controller: remove finalizer
|
||||
→ Zasób usunięty
|
||||
```
|
||||
|
||||
## Użycie w Sympozium
|
||||
|
||||
### AgentRun finalizer
|
||||
```go
|
||||
const agentRunFinalizer = "sympozium.ai/agentrun-finalizer"
|
||||
```
|
||||
|
||||
Cleanup przy usunięciu:
|
||||
- Delete Job/Sandbox CR
|
||||
- Delete ephemeral RBAC (ClusterRole, ClusterRoleBinding)
|
||||
- Delete input ConfigMap
|
||||
- Delete MCP ConfigMap
|
||||
|
||||
### SympoziumInstance finalizer
|
||||
```go
|
||||
const sympoziumInstanceFinalizer = "sympozium.ai/finalizer"
|
||||
```
|
||||
|
||||
Cleanup:
|
||||
- Delete channel Deployments
|
||||
- Delete memory ConfigMap
|
||||
- Delete memory Deployment/Service
|
||||
|
||||
## Pułapki
|
||||
|
||||
- Jeśli controller jest niedostępny → finalizer blokuje usunięcie na zawsze
|
||||
- "Stuck" zasoby: trzeba ręcznie usunąć finalizer (`kubectl edit`)
|
||||
- Finalizer dodawany tylko dla non-terminal runs (nie dla Succeeded/Failed)
|
||||
|
||||
---
|
||||
|
||||
Powiązane: [[Controller i Reconciler]] | [[ownerReference]] | [[Cykl życia AgentRun]]
|
||||
Reference in New Issue
Block a user