Middle
Quelle est la différence entre Deployment et DaemonSet dans Kubernetes?
sobes.tech IA
Réponse de l'IA
Deployment gère un ensemble de réplicas de Pods, assurant leur nombre requis et la mise à l’échelle automatique. Il convient à la plupart des applications sans état.
DaemonSet garantit qu’une copie du Pod sera lancée sur chaque nœud (ou sur un sous-ensemble de nœuds, selon le sélecteur) du cluster. Utilisé pour des tâches en arrière-plan, telles que la collecte de logs ou la surveillance.
Voici les différences clés :
| Caractéristique | Deployment | DaemonSet |
|---|---|---|
| Objectif | Maintenir un nombre défini de réplicas de Pods | Lancer un Pod sur chaque nœud (ou sous-ensemble) |
| Nombre de Pods | Contrôlé par le paramètre replicas |
Déterminé par le nombre de nœuds |
| Mise à l’échelle | Horizontale, sur demande | Liée à l’ajout/suppression de nœuds |
| Exemples d’utilisation | Serveurs web, microservices | Collecteurs de logs, agents de surveillance, démons réseau |
| Mise à jour | Progressive (mise à jour continue) ou remplacement | Se met à jour automatiquement sur les nœuds selon les besoins |
Exemple de manifeste pour Deployment :
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3 # Lancer 3 copies du Pod
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
Exemple de manifeste pour DaemonSet :
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentbit-daemonset
spec:
selector:
matchLabels:
name: fluentbit # Étiquette pour le sélecteur de Pods
template:
metadata:
labels:
name: fluentbit
spec:
containers:
- name: fluentbit
image: fluent/fluent-bit:1.8 # Image pour le collecteur de logs
# Configurations supplémentaires pour accéder aux fichiers de logs, etc.
tolerations:
# Souvent nécessaire pour exécuter sur les nœuds master
- key: node-role.kubernetes.io/master
effect: NoSchedule