Middle
Na czym polega różnica między Deployment a DaemonSet w Kubernetes?
sobes.tech AI
Odpowiedź od AI
Deployment zarządza zestawem replik Podów, zapewniając wymaganą liczbę i automatyczne skalowanie. Jest odpowiedni dla większości aplikacji bezstanowych.
DaemonSet gwarantuje, że kopia Pod'a będzie uruchomiona na każdym węźle (lub na podzbiorze węzłów, zgodnie z selektorem) klastra. Używany jest do zadań w tle, takich jak zbieranie logów lub monitorowanie.
Oto kluczowe różnice:
| Cecha | Deployment | DaemonSet |
|---|---|---|
| Cel | Utrzymanie zadanej liczby replik Podów | Uruchomienie jednego Pod'a na każdym węźle (lub podzbiorze) |
| Liczba Podów | Kontrolowana przez parametr replicas |
Określana przez liczbę węzłów |
| Skalowanie | Poziome, na żądanie | Związane z dodawaniem/usuwaniem węzłów |
| Przykłady użycia | Serwery internetowe, mikroserwisy | Kolektory logów, agenci monitorowania, demony sieciowe |
| Aktualizacja | Stopniowa (rolling update) lub zamieniająca się | Automatyczna aktualizacja na węzłach w razie potrzeby |
Przykład manifestu dla Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3 # Uruchom 3 kopie Pod'a
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
Przykład manifestu dla DaemonSet:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentbit-daemonset
spec:
selector:
matchLabels:
name: fluentbit # Etykieta dla selektora Podów
template:
metadata:
labels:
name: fluentbit
spec:
containers:
- name: fluentbit
image: fluent/fluent-bit:1.8 # Obraz dla kolektora logów
# Dodatkowe ustawienia dostępu do plików logów itp.
tolerations:
# Często konieczne do uruchomienia na węzłach master
- key: node-role.kubernetes.io/master
effect: NoSchedule