Middle
Was ist der Unterschied zwischen Deployment und DaemonSet in Kubernetes?
sobes.tech KI
Antwort von AI
Deployment verwaltet eine Gruppe von Pod-Replikaten, stellt die erforderliche Anzahl sicher und skaliert automatisch. Es eignet sich gut für die Arbeit mit den meisten stateless-Anwendungen.
DaemonSet stellt sicher, dass eine Kopie des Pods auf jedem Knoten (oder auf einer Teilmenge von Knoten, je nach Selektor) des Clusters ausgeführt wird. Wird für Hintergrundaufgaben wie Log-Sammlung oder Überwachung verwendet.
Hier sind die wichtigsten Unterschiede:
| Merkmal | Deployment | DaemonSet |
|---|---|---|
| Ziel | Aufrechterhaltung einer festgelegten Anzahl von Pod-Replikaten | Ausführung eines Pods auf jedem Knoten (oder Teilmenge) |
| Anzahl der Pods | Wird durch den Parameter replicas gesteuert |
Wird durch die Anzahl der Knoten bestimmt |
| Skalierung | Horizontal, nach Bedarf | Verbunden mit dem Hinzufügen/Entfernen von Knoten |
| Anwendungsbeispiele | Webserver, Microservices | Log-Sammler, Überwachungsagenten, Netzwerk-Daemons |
| Aktualisierung | Schrittweise (Rolling Update) oder ersetzend | Wird auf den Knoten automatisch aktualisiert, wenn nötig |
Beispiel für ein Manifest für Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3 # Starte 3 Kopien des Pods
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
Beispiel für ein Manifest für DaemonSet:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentbit-daemonset
spec:
selector:
matchLabels:
name: fluentbit # Label für den Pod-Selektor
template:
metadata:
labels:
name: fluentbit
spec:
containers:
- name: fluentbit
image: fluent/fluent-bit:1.8 # Image für den Log-Sammler
# Zusätzliche Einstellungen für den Zugriff auf Log-Dateien usw.
tolerations:
# Oft notwendig, um auf Master-Knoten zu laufen
- key: node-role.kubernetes.io/master
effect: NoSchedule