Middle
Aký je rozdiel medzi Deployment a DaemonSet v Kubernetes?
sobes.tech AI
Odpoveď od AI
Deployment riadi sadou replík Podov, zabezpečujúc ich požadovaný počet a automatické škálovanie. Je vhodný pre väčšinu stateless aplikácií.
DaemonSet zabezpečuje, že kópia Podu bude spustená na každom uzle (alebo na podmnožine uzlov, určených selektorom) klastru. Používa sa na pozadie úloh, ako je zber logov alebo monitorovanie.
Tu sú kľúčové rozdiely:
| Charakteristika | Deployment | DaemonSet |
|---|---|---|
| Cieľ | Udržiavanie požadovaného počtu replík Podov | Spustenie jedného Podu na každom uzle (alebo podmnožine) |
| Počet Podov | Riadi sa parametrom replicas |
Určuje sa počtom uzlov |
| Škálovanie | Horizontálne, na požiadanie | Spája sa s pridávaním/odstraňovaním uzlov |
| Príklady použitia | Webové servery, mikroslužby | Zberače logov, agenti monitorovania, sieťové démony |
| Aktualizácia | Postupná (rolling update) alebo nahradzujúca | Automaticky sa aktualizuje na uzloch podľa potreby |
Príklad manifestu pre Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3 # Spustiť 3 kópie Podu
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
Príklad manifestu pre DaemonSet:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentbit-daemonset
spec:
selector:
matchLabels:
name: fluentbit # Štítok pre selektor Podov
template:
metadata:
labels:
name: fluentbit
spec:
containers:
- name: fluentbit
image: fluent/fluent-bit:1.8 # Obraz pre zberač logov
# Dodatočné nastavenia pre prístup k súborom logov a pod.
tolerations:
# Často potrebné pre spustenie na master uzloch
- key: node-role.kubernetes.io/master
effect: NoSchedule